diff --git a/server/openapi.json b/server/openapi.json index c6e235d0f..39dddd376 100644 --- a/server/openapi.json +++ b/server/openapi.json @@ -1747,6 +1747,69 @@ ], "type": "object" }, + "MessageAttemptRecoveredEvent": { + "description": "Sent on a successful dispatch after an earlier failure op webhook has already been sent.", + "properties": { + "data": { + "$ref": "#/components/schemas/MessageAttemptRecoveredEventData" + }, + "type": { + "default": "message.attempt.recovered", + "enum": [ + "message.attempt.recovered" + ], + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "type": "object" + }, + "MessageAttemptRecoveredEventData": { + "description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted) as a \"message.attempt.exhausted\" type or after it's failed four times as a \"message.attempt.failing\" event.", + "properties": { + "appId": { + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "appUid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "lastAttempt": { + "$ref": "#/components/schemas/MessageAttempetLast" + }, + "msgEventId": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "msgId": { + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + } + }, + "required": [ + "appId", + "endpointId", + "lastAttempt", + "msgId" + ], + "type": "object" + }, "MessageAttemptTriggerType": { "description": "The reason an attempt was made:\n- Scheduled = 0\n- Manual = 1", "enum": [ @@ -7742,6 +7805,30 @@ "Webhooks" ] } + }, + "MessageAttemptRecoveredEvent": { + "post": { + "description": "Sent on a successful dispatch after an earlier failure op webhook has already been sent.", + "operationId": "MessageAttemptRecoveredEvent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageAttemptRecoveredEvent" + } + } + } + }, + "responses": { + "2XX": { + "description": "Return any 2XX status to indicate that the data was received successfully" + } + }, + "summary": "MessageAttemptRecoveredEvent", + "tags": [ + "Webhooks" + ] + } } } } diff --git a/server/svix-server/src/core/operational_webhooks.rs b/server/svix-server/src/core/operational_webhooks.rs index f55e3eb04..58ef2c5c3 100644 --- a/server/svix-server/src/core/operational_webhooks.rs +++ b/server/svix-server/src/core/operational_webhooks.rs @@ -103,6 +103,8 @@ pub enum OperationalWebhook { MessageAttemptExhausted(MessageAttemptEvent), #[serde(rename = "message.attempt.failing")] MessageAttemptFailing(MessageAttemptEvent), + #[serde(rename = "message.attempt.recovered")] + MessageAttemptRecovered(MessageAttemptEvent), } pub type OperationalWebhookSender = Arc; diff --git a/server/svix-server/src/openapi.rs b/server/svix-server/src/openapi.rs index 13ec56ff0..86dc822b2 100644 --- a/server/svix-server/src/openapi.rs +++ b/server/svix-server/src/openapi.rs @@ -415,6 +415,13 @@ mod webhooks { common_: MessageAttemptEvent, } + #[derive(JsonSchema)] + #[allow(unused)] + struct MessageAttemptRecoveredEventData { + #[serde(flatten)] + common_: MessageAttemptEvent, + } + webhook_event!( EndpointCreatedEvent, EndpointCreatedEventData, @@ -451,6 +458,12 @@ mod webhooks { "message.attempt.failing", "Sent after a message has been failing for a few times.\nIt's sent on the fourth failure. It complements `message.attempt.exhausted` which is sent after the last failure." ); + webhook_event!( + MessageAttemptRecoveredEvent, + MessageAttemptRecoveredEventData, + "message.attempt.recovered", + "Sent on a successful dispatch after an earlier failure op webhook has already been sent." + ); /// Generates documentation for operational webhooks in the Redoc `x-webhooks` /// format. For more info see https://redocly.com/docs/api-reference-docs/specification-extensions/x-webhooks/ @@ -462,6 +475,7 @@ mod webhooks { document_webhook::(), document_webhook::(), document_webhook::(), + document_webhook::(), ]) } } diff --git a/server/svix-server/src/static/openapi.json b/server/svix-server/src/static/openapi.json index 1dcb6b240..39dddd376 100644 --- a/server/svix-server/src/static/openapi.json +++ b/server/svix-server/src/static/openapi.json @@ -1 +1,7834 @@ -{"openapi":"3.0.2","info":{"title":"Svix API","description":"Welcome to the Svix API documentation!\n\nUseful 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/)\n\n# Introduction\n\nThis 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).\n\n## Main concepts\n\nIn Svix you have four important entities you will be interacting with:\n\n- `messages`: these are the webhooks being sent. They can have contents and a few other properties.\n- `application`: this is where `messages` are sent to. Usually you want to create one application for each user on your platform.\n- `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).\n- `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.\n\n\n## Authentication\n\nGet 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}`.\n\n\n\n\n## Code samples\n\nThe 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/).\n\n\n## Idempotency\n\nSvix 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.\n\nTo 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.\n\nSvix'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.\n\nPlease note that idempotency is only supported for `POST` requests.\n\n\n## Cross-Origin Resource Sharing\n\nThis 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.\n","version":"1.4","x-logo":{"url":"https://www.svix.com/static/img/brand-padded.svg","altText":"Svix Logo"}},"paths":{"/api/v1/health/":{"get":{"tags":["Health"],"summary":"Health","description":"Verify the API server is up and running.","operationId":"health_api_v1_health__get","parameters":[{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-codeSamples":[{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/health/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/":{"get":{"tags":["Application"],"summary":"List Applications","description":"List of all the organization's applications.","operationId":"list_applications_api_v1_app__get","parameters":[{"required":false,"schema":{"title":"Iterator","type":"string","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_ApplicationOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const listResponseApplicationOut = await svix.application.list();"},{"lang":"JavaScript","label":"TypeScript","source":"const listResponseApplicationOut = await svix.application.list();"},{"lang":"Python","label":"Python","source":"list_response_application_out = svix.application.list()"},{"lang":"Python","label":"Python (Async)","source":"list_response_application_out = await svix.application.list()"},{"lang":"Go","label":"Go","source":"listResponseApplicationOut, err := svixClient.Application.List(nil)"},{"lang":"Kotlin","label":"Kotlin","source":"val listResponseApplicationOut = svix.application.list(FetchOptions())"},{"lang":"Java","label":"Java","source":"ListResponseApplicationOut listResponseApplicationOut = svix.getApplication().list(new FetchOptions())"},{"lang":"Ruby","label":"Ruby","source":"list_response_application_out = svix.application.list"},{"lang":"Rust","label":"Rust","source":"let list_response_application_out = svix.application().list(None).await?;"},{"lang":"C#","label":"C#","source":"var listResponseApplicationOut = await svix.Application.ListAsync()"},{"lang":"Shell","label":"CLI","source":"svix application list "},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"post":{"tags":["Application"],"summary":"Create Application","description":"Create a new application.","operationId":"create_application_api_v1_app__post","parameters":[{"description":"Get an existing application, or create a new one if doesn't exist. It's two separate functions in the libs.","required":false,"schema":{"title":"Get If Exists","type":"boolean","description":"Get an existing application, or create a new one if doesn't exist. It's two separate functions in the libs.","default":false},"name":"get_if_exists","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const applicationOut = await svix.application.create({\n uid: \"unique-app-identifier\",\n name: \"My first application\",\n rateLimit: 1000\n})\n// Or \nconst applicationOut = await svix.application.getOrCreate({\n uid: \"unique-app-identifier\",\n name: \"My first application\",\n rateLimit: 1000\n})"},{"lang":"JavaScript","label":"TypeScript","source":"const applicationOut = await svix.application.create({\n uid: \"unique-app-identifier\",\n name: \"My first application\",\n rateLimit: 1000\n})\n// Or \nconst applicationOut = await svix.application.getOrCreate({\n uid: \"unique-app-identifier\",\n name: \"My first application\",\n rateLimit: 1000\n})"},{"lang":"Python","label":"Python","source":"application_out = svix.application.create(ApplicationIn(\n uid=\"unique-app-identifier\",\n name=\"My first application\",\n rate_limit=1000\n))\n# Or \napplication_out = svix.application.get_or_create(ApplicationIn(\n uid=\"unique-app-identifier\",\n name=\"My first application\",\n rate_limit=1000\n))"},{"lang":"Python","label":"Python (Async)","source":"application_out = await svix.application.create(ApplicationIn(\n uid=\"unique-app-identifier\",\n name=\"My first application\",\n rate_limit=1000\n))\n# Or \napplication_out = await svix.application.get_or_create(ApplicationIn(\n uid=\"unique-app-identifier\",\n name=\"My first application\",\n rate_limit=1000\n))"},{"lang":"Go","label":"Go","source":"applicationOut, err := svixClient.Application.Create(&svix.ApplicationIn{\n Uid: \"unique-app-identifier\",\n Name: \"My first application\",\n RateLimit: 1000\n})\n// Or \napplicationOut, err := svixClient.Application.GetOrCreate(&svix.ApplicationIn{\n Uid: \"unique-app-identifier\",\n Name: \"My first application\",\n RateLimit: 1000\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val applicationOut = svix.application.create(ApplicationIn()\n .uid(\"unique-app-identifier\"),\n .name(\"My first application\"),\n .rateLimit(1000)\n)\n// Or \nval applicationOut = svix.application.getOrCreate(ApplicationIn()\n .uid(\"unique-app-identifier\"),\n .name(\"My first application\"),\n .rateLimit(1000)\n)"},{"lang":"Java","label":"Java","source":"ApplicationOut applicationOut = svix.getApplication().create(new ApplicationIn()\n .uid(\"unique-app-identifier\"),\n .name(\"My first application\"),\n .rateLimit(1000)\n)\n// Or \nApplicationOut applicationOut = svix.getApplication().getOrCreate(new ApplicationIn()\n .uid(\"unique-app-identifier\"),\n .name(\"My first application\"),\n .rateLimit(1000)\n)"},{"lang":"Ruby","label":"Ruby","source":"application_out = svix.application.create(Svix::ApplicationIn.new({\n \"uid\": \"unique-app-identifier\",\n \"name\": \"My first application\",\n \"rate_limit\": 1000\n}))\n# Or \napplication_out = svix.application.get_or_create(Svix::ApplicationIn.new({\n \"uid\": \"unique-app-identifier\",\n \"name\": \"My first application\",\n \"rate_limit\": 1000\n}))"},{"lang":"Rust","label":"Rust","source":"let application_out = svix.application().create(ApplicationIn {\n uid: \"unique-app-identifier\".to_string(),\n name: \"My first application\".to_string(),\n rate_limit: 1000\n}).await?;\n// Or \nlet application_out = svix.application().get_or_create(ApplicationIn {\n uid: \"unique-app-identifier\".to_string(),\n name: \"My first application\".to_string(),\n rate_limit: 1000\n}).await?;"},{"lang":"C#","label":"C#","source":"var applicationOut = await svix.Application.CreateAsync(new ApplicationIn{\n uid: \"unique-app-identifier\",\n name: \"My first application\",\n rateLimit: 1000\n})"},{"lang":"Shell","label":"CLI","source":"svix application create '{\n \"uid\": \"unique-app-identifier\",\n \"name\": \"My first application\",\n \"rateLimit\": 1000\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/app/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"uid\": \"unique-app-identifier\",\n \"name\": \"My first application\",\n \"rateLimit\": 1000\n}'"}]}},"/api/v1/app/{app_id}/":{"get":{"tags":["Application"],"summary":"Get Application","description":"Get an application.","operationId":"get_application_api_v1_app__app_id___get","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const applicationOut = await svix.application.get('app_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const applicationOut = await svix.application.get('app_id');"},{"lang":"Python","label":"Python","source":"application_out = svix.application.get('app_id')"},{"lang":"Python","label":"Python (Async)","source":"application_out = await svix.application.get('app_id')"},{"lang":"Go","label":"Go","source":"applicationOut, err := svixClient.Application.Get(\"app_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val applicationOut = svix.application.get('app_id')"},{"lang":"Java","label":"Java","source":"ApplicationOut applicationOut = svix.getApplication().get('app_id')"},{"lang":"Ruby","label":"Ruby","source":"application_out = svix.application.get('app_id')"},{"lang":"Rust","label":"Rust","source":"let application_out = svix.application().get(\"app_id\").await?;"},{"lang":"C#","label":"C#","source":"var applicationOut = await svix.Application.GetAsync(\"app_id\")"},{"lang":"Shell","label":"CLI","source":"svix application get 'app_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"put":{"tags":["Application"],"summary":"Update Application","description":"Update an application.","operationId":"update_application_api_v1_app__app_id___put","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const applicationOut = await svix.application.update('app_id', {\n uid: \"unique-app-identifier\",\n name: \"My first application\",\n rateLimit: 1000\n});"},{"lang":"JavaScript","label":"TypeScript","source":"const applicationOut = await svix.application.update('app_id', {\n uid: \"unique-app-identifier\",\n name: \"My first application\",\n rateLimit: 1000\n});"},{"lang":"Python","label":"Python","source":"application_out = svix.application.update('app_id', ApplicationIn(\n uid=\"unique-app-identifier\",\n name=\"My first application\",\n rate_limit=1000\n))"},{"lang":"Python","label":"Python (Async)","source":"application_out = await svix.application.update('app_id', ApplicationIn(\n uid=\"unique-app-identifier\",\n name=\"My first application\",\n rate_limit=1000\n))"},{"lang":"Go","label":"Go","source":"applicationOut, err := svixClient.Application.Update(\"app_id\", &svix.ApplicationIn{\n Uid: \"unique-app-identifier\",\n Name: \"My first application\",\n RateLimit: 1000\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val applicationOut = svix.application.update('app_id', ApplicationIn()\n .uid(\"unique-app-identifier\"),\n .name(\"My first application\"),\n .rateLimit(1000)\n)"},{"lang":"Java","label":"Java","source":"ApplicationOut applicationOut = svix.getApplication().update('app_id', new ApplicationIn()\n .uid(\"unique-app-identifier\"),\n .name(\"My first application\"),\n .rateLimit(1000)\n)"},{"lang":"Ruby","label":"Ruby","source":"application_out = svix.application.update('app_id', Svix::ApplicationIn.new({\n \"uid\": \"unique-app-identifier\",\n \"name\": \"My first application\",\n \"rate_limit\": 1000\n}))"},{"lang":"Rust","label":"Rust","source":"let application_out = svix.application().update(\"app_id\", ApplicationIn {\n uid: \"unique-app-identifier\".to_string(),\n name: \"My first application\".to_string(),\n rate_limit: 1000\n}).await?;"},{"lang":"C#","label":"C#","source":"var applicationOut = await svix.Application.UpdateAsync(\"app_id\", new ApplicationIn{\n uid: \"unique-app-identifier\",\n name: \"My first application\",\n rateLimit: 1000\n})"},{"lang":"Shell","label":"CLI","source":"svix application update 'app_id' '{\n \"uid\": \"unique-app-identifier\",\n \"name\": \"My first application\",\n \"rateLimit\": 1000\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'PUT' \\\n 'https://api.svix.com/api/v1/app/{app_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"uid\": \"unique-app-identifier\",\n \"name\": \"My first application\",\n \"rateLimit\": 1000\n}'"}]},"delete":{"tags":["Application"],"summary":"Delete Application","description":"Delete an application.","operationId":"delete_application_api_v1_app__app_id___delete","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"204":{"description":"Successful Response"},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"await svix.application.delete('app_id');"},{"lang":"JavaScript","label":"TypeScript","source":"await svix.application.delete('app_id');"},{"lang":"Python","label":"Python","source":"svix.application.delete('app_id')"},{"lang":"Python","label":"Python (Async)","source":"await svix.application.delete('app_id')"},{"lang":"Go","label":"Go","source":"err := svixClient.Application.Delete(\"app_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"svix.application.delete('app_id')"},{"lang":"Java","label":"Java","source":"svix.getApplication().delete('app_id')"},{"lang":"Ruby","label":"Ruby","source":"svix.application.delete('app_id')"},{"lang":"Rust","label":"Rust","source":"svix.application().delete(\"app_id\").await?;"},{"lang":"C#","label":"C#","source":"await svix.Application.DeleteAsync(\"app_id\")"},{"lang":"Shell","label":"CLI","source":"svix application delete 'app_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'DELETE' \\\n 'https://api.svix.com/api/v1/app/{app_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/auth/dashboard-access/{app_id}/":{"post":{"tags":["Authentication"],"summary":"Get App Portal Access","description":"Use this function to get magic links (and authentication codes) for connecting your users to the Application Portal.","operationId":"get_dashboard_access_api_v1_auth_dashboard_access__app_id___post","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardAccessOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const dashboardAccessOut = await svix.authentication.dashboardAccess('app_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const dashboardAccessOut = await svix.authentication.dashboardAccess('app_id');"},{"lang":"Python","label":"Python","source":"dashboard_access_out = svix.authentication.dashboard_access('app_id')"},{"lang":"Python","label":"Python (Async)","source":"dashboard_access_out = await svix.authentication.dashboard_access('app_id')"},{"lang":"Go","label":"Go","source":"dashboardAccessOut, err := svixClient.Authentication.DashboardAccess(\"app_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val dashboardAccessOut = svix.authentication.dashboardAccess('app_id')"},{"lang":"Java","label":"Java","source":"DashboardAccessOut dashboardAccessOut = svix.getAuthentication().dashboardAccess('app_id')"},{"lang":"Ruby","label":"Ruby","source":"dashboard_access_out = svix.authentication.dashboard_access('app_id')"},{"lang":"Rust","label":"Rust","source":"let dashboard_access_out = svix.authentication().dashboard_access(\"app_id\").await?;"},{"lang":"C#","label":"C#","source":"var dashboardAccessOut = await svix.Authentication.DashboardAccessAsync(\"app_id\")"},{"lang":"Shell","label":"CLI","source":"svix authentication dashboard-access 'app_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/auth/dashboard-access/{app_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/auth/logout/":{"post":{"tags":["Authentication"],"summary":"Logout","description":"Logout an app token.\n\nTrying to log out other tokens will fail.","operationId":"logout_api_v1_auth_logout__post","parameters":[{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"204":{"description":"Successful Response"},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"await svix.authentication.logout();"},{"lang":"JavaScript","label":"TypeScript","source":"await svix.authentication.logout();"},{"lang":"Python","label":"Python","source":"svix.authentication.logout()"},{"lang":"Python","label":"Python (Async)","source":"await svix.authentication.logout()"},{"lang":"Go","label":"Go","source":"err := svixClient.Authentication.Logout()"},{"lang":"Kotlin","label":"Kotlin","source":"svix.authentication.logout()"},{"lang":"Java","label":"Java","source":"svix.getAuthentication().logout()"},{"lang":"Ruby","label":"Ruby","source":"svix.authentication.logout"},{"lang":"Rust","label":"Rust","source":"svix.authentication().logout().await?;"},{"lang":"C#","label":"C#","source":"await svix.Authentication.LogoutAsync()"},{"lang":"Shell","label":"CLI","source":"svix authentication logout "},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/auth/logout/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/event-type/":{"get":{"tags":["Event Type"],"summary":"List Event Types","description":"Return the list of event types.","operationId":"list_event_types_api_v1_event_type__get","parameters":[{"required":false,"schema":{"title":"Iterator","maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"required":false,"schema":{"title":"With Content","type":"boolean","default":false},"name":"with_content","in":"query"},{"required":false,"schema":{"title":"Include Archived","type":"boolean","default":false},"name":"include_archived","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_EventTypeOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const listResponseEventTypeOut = await svix.eventType.list();"},{"lang":"JavaScript","label":"TypeScript","source":"const listResponseEventTypeOut = await svix.eventType.list();"},{"lang":"Python","label":"Python","source":"list_response_event_type_out = svix.event_type.list()"},{"lang":"Python","label":"Python (Async)","source":"list_response_event_type_out = await svix.event_type.list()"},{"lang":"Go","label":"Go","source":"listResponseEventTypeOut, err := svixClient.EventType.List(nil)"},{"lang":"Kotlin","label":"Kotlin","source":"val listResponseEventTypeOut = svix.eventType.list(FetchOptions())"},{"lang":"Java","label":"Java","source":"ListResponseEventTypeOut listResponseEventTypeOut = svix.getEventType().list(new FetchOptions())"},{"lang":"Ruby","label":"Ruby","source":"list_response_event_type_out = svix.event_type.list"},{"lang":"Rust","label":"Rust","source":"let list_response_event_type_out = svix.event_type().list(None).await?;"},{"lang":"C#","label":"C#","source":"var listResponseEventTypeOut = await svix.EventType.ListAsync()"},{"lang":"Shell","label":"CLI","source":"svix event-type list "},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/event-type/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"post":{"tags":["Event Type"],"summary":"Create Event Type","description":"Create new or unarchive existing event type.\n\nUnarchiving an event type will allow endpoints to filter on it and messages to be sent with it.\nEndpoints filtering on the event type before archival will continue to filter on it.\nThis operation does not preserve the description and schemas.","operationId":"create_event_type_api_v1_event_type__post","parameters":[{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventTypeIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventTypeOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const eventTypeOut = await svix.eventType.create({\n description: \"A user has signed up\",\n schemas: {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n archived: false,\n name: \"user.signup\"\n});"},{"lang":"JavaScript","label":"TypeScript","source":"const eventTypeOut = await svix.eventType.create({\n description: \"A user has signed up\",\n schemas: {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n archived: false,\n name: \"user.signup\"\n});"},{"lang":"Python","label":"Python","source":"event_type_out = svix.event_type.create(EventTypeIn(\n description=\"A user has signed up\",\n schemas={'1': {'title': 'Invoice Paid Event', 'description': 'An invoice was paid by a user', 'type': 'object', 'properties': {'invoiceId': {'description': 'The invoice id', 'type': 'string'}, 'userId': {'description': 'The user id', 'type': 'string'}}, 'required': ['invoiceId', 'userId']}},\n archived=False,\n name=\"user.signup\"\n))"},{"lang":"Python","label":"Python (Async)","source":"event_type_out = await svix.event_type.create(EventTypeIn(\n description=\"A user has signed up\",\n schemas={'1': {'title': 'Invoice Paid Event', 'description': 'An invoice was paid by a user', 'type': 'object', 'properties': {'invoiceId': {'description': 'The invoice id', 'type': 'string'}, 'userId': {'description': 'The user id', 'type': 'string'}}, 'required': ['invoiceId', 'userId']}},\n archived=False,\n name=\"user.signup\"\n))"},{"lang":"Go","label":"Go","source":"eventTypeOut, err := svixClient.EventType.Create(&svix.EventTypeIn{\n Description: \"A user has signed up\",\n Schemas: map[string]interface{}{\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n Archived: False,\n Name: \"user.signup\"\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val eventTypeOut = svix.eventType.create(EventTypeIn()\n .description(\"A user has signed up\"),\n .schemas(\"\"\"{\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n }\"\"\"),\n .archived(False),\n .name(\"user.signup\")\n)"},{"lang":"Java","label":"Java","source":"EventTypeOut eventTypeOut = svix.getEventType().create(new EventTypeIn()\n .description(\"A user has signed up\"),\n .schemas(\"{\" +\n \"\\\"1\\\": {\" +\n \"\\\"title\\\": \\\"Invoice Paid Event\\\",\" +\n \"\\\"description\\\": \\\"An invoice was paid by a user\\\",\" +\n \"\\\"type\\\": \\\"object\\\",\" +\n \"\\\"properties\\\": {\" +\n \"\\\"invoiceId\\\": {\" +\n \"\\\"description\\\": \\\"The invoice id\\\",\" +\n \"\\\"type\\\": \\\"string\\\"\" +\n \"},\" +\n \"\\\"userId\\\": {\" +\n \"\\\"description\\\": \\\"The user id\\\",\" +\n \"\\\"type\\\": \\\"string\\\"\" +\n \"}\" +\n \"},\" +\n \"\\\"required\\\": [\" +\n \"\\\"invoiceId\\\",\" +\n \"\\\"userId\\\"\" +\n \"]\" +\n \"}\" +\n \"}\"),\n .archived(False),\n .name(\"user.signup\")\n)"},{"lang":"Ruby","label":"Ruby","source":"event_type_out = svix.event_type.create(Svix::EventTypeIn.new({\n \"description\": \"A user has signed up\",\n \"schemas\": {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n \"archived\": false,\n \"name\": \"user.signup\"\n}))"},{"lang":"Rust","label":"Rust","source":"let event_type_out = svix.event_type().create(EventTypeIn {\n description: \"A user has signed up\".to_string(),\n schemas: json!({\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n }),\n archived: False,\n name: \"user.signup\".to_string()\n}).await?;"},{"lang":"C#","label":"C#","source":"var eventTypeOut = await svix.EventType.CreateAsync(new EventTypeIn{\n description: \"A user has signed up\",\n schemas: new {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n archived: false,\n name: \"user.signup\"\n})"},{"lang":"Shell","label":"CLI","source":"svix event-type create '{\n \"description\": \"A user has signed up\",\n \"schemas\": {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n \"archived\": false,\n \"name\": \"user.signup\"\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/event-type/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"description\": \"A user has signed up\",\n \"schemas\": {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n \"archived\": false,\n \"name\": \"user.signup\"\n}'"}]}},"/api/v1/event-type/{event_type_name}/":{"get":{"tags":["Event Type"],"summary":"Get Event Type","description":"Get an event type.","operationId":"get_event_type_api_v1_event_type__event_type_name___get","parameters":[{"required":true,"schema":{"title":"Event Type Name","maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"},"name":"event_type_name","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventTypeOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const eventTypeOut = await svix.eventType.get('event_type_name');"},{"lang":"JavaScript","label":"TypeScript","source":"const eventTypeOut = await svix.eventType.get('event_type_name');"},{"lang":"Python","label":"Python","source":"event_type_out = svix.event_type.get('event_type_name')"},{"lang":"Python","label":"Python (Async)","source":"event_type_out = await svix.event_type.get('event_type_name')"},{"lang":"Go","label":"Go","source":"eventTypeOut, err := svixClient.EventType.Get(\"event_type_name\")"},{"lang":"Kotlin","label":"Kotlin","source":"val eventTypeOut = svix.eventType.get('event_type_name')"},{"lang":"Java","label":"Java","source":"EventTypeOut eventTypeOut = svix.getEventType().get('event_type_name')"},{"lang":"Ruby","label":"Ruby","source":"event_type_out = svix.event_type.get('event_type_name')"},{"lang":"Rust","label":"Rust","source":"let event_type_out = svix.event_type().get(\"event_type_name\").await?;"},{"lang":"C#","label":"C#","source":"var eventTypeOut = await svix.EventType.GetAsync(\"event_type_name\")"},{"lang":"Shell","label":"CLI","source":"svix event-type get 'event_type_name'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/event-type/{event_type_name}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"put":{"tags":["Event Type"],"summary":"Update Event Type","description":"Update an event type.","operationId":"update_event_type_api_v1_event_type__event_type_name___put","parameters":[{"required":true,"schema":{"title":"Event Type Name","maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"},"name":"event_type_name","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventTypeUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventTypeOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const eventTypeOut = await svix.eventType.update('event_type_name', {\n description: \"A user has signed up\",\n schemas: {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n archived: false\n});"},{"lang":"JavaScript","label":"TypeScript","source":"const eventTypeOut = await svix.eventType.update('event_type_name', {\n description: \"A user has signed up\",\n schemas: {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n archived: false\n});"},{"lang":"Python","label":"Python","source":"event_type_out = svix.event_type.update('event_type_name', EventTypeUpdate(\n description=\"A user has signed up\",\n schemas={'1': {'title': 'Invoice Paid Event', 'description': 'An invoice was paid by a user', 'type': 'object', 'properties': {'invoiceId': {'description': 'The invoice id', 'type': 'string'}, 'userId': {'description': 'The user id', 'type': 'string'}}, 'required': ['invoiceId', 'userId']}},\n archived=False\n))"},{"lang":"Python","label":"Python (Async)","source":"event_type_out = await svix.event_type.update('event_type_name', EventTypeUpdate(\n description=\"A user has signed up\",\n schemas={'1': {'title': 'Invoice Paid Event', 'description': 'An invoice was paid by a user', 'type': 'object', 'properties': {'invoiceId': {'description': 'The invoice id', 'type': 'string'}, 'userId': {'description': 'The user id', 'type': 'string'}}, 'required': ['invoiceId', 'userId']}},\n archived=False\n))"},{"lang":"Go","label":"Go","source":"eventTypeOut, err := svixClient.EventType.Update(\"event_type_name\", &svix.EventTypeUpdate{\n Description: \"A user has signed up\",\n Schemas: map[string]interface{}{\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n Archived: False\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val eventTypeOut = svix.eventType.update('event_type_name', EventTypeUpdate()\n .description(\"A user has signed up\"),\n .schemas(\"\"\"{\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n }\"\"\"),\n .archived(False)\n)"},{"lang":"Java","label":"Java","source":"EventTypeOut eventTypeOut = svix.getEventType().update('event_type_name', new EventTypeUpdate()\n .description(\"A user has signed up\"),\n .schemas(\"{\" +\n \"\\\"1\\\": {\" +\n \"\\\"title\\\": \\\"Invoice Paid Event\\\",\" +\n \"\\\"description\\\": \\\"An invoice was paid by a user\\\",\" +\n \"\\\"type\\\": \\\"object\\\",\" +\n \"\\\"properties\\\": {\" +\n \"\\\"invoiceId\\\": {\" +\n \"\\\"description\\\": \\\"The invoice id\\\",\" +\n \"\\\"type\\\": \\\"string\\\"\" +\n \"},\" +\n \"\\\"userId\\\": {\" +\n \"\\\"description\\\": \\\"The user id\\\",\" +\n \"\\\"type\\\": \\\"string\\\"\" +\n \"}\" +\n \"},\" +\n \"\\\"required\\\": [\" +\n \"\\\"invoiceId\\\",\" +\n \"\\\"userId\\\"\" +\n \"]\" +\n \"}\" +\n \"}\"),\n .archived(False)\n)"},{"lang":"Ruby","label":"Ruby","source":"event_type_out = svix.event_type.update('event_type_name', Svix::EventTypeUpdate.new({\n \"description\": \"A user has signed up\",\n \"schemas\": {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n \"archived\": false\n}))"},{"lang":"Rust","label":"Rust","source":"let event_type_out = svix.event_type().update(\"event_type_name\", EventTypeUpdate {\n description: \"A user has signed up\".to_string(),\n schemas: json!({\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n }),\n archived: False\n}).await?;"},{"lang":"C#","label":"C#","source":"var eventTypeOut = await svix.EventType.UpdateAsync(\"event_type_name\", new EventTypeUpdate{\n description: \"A user has signed up\",\n schemas: new {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n archived: false\n})"},{"lang":"Shell","label":"CLI","source":"svix event-type update 'event_type_name' '{\n \"description\": \"A user has signed up\",\n \"schemas\": {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n \"archived\": false\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'PUT' \\\n 'https://api.svix.com/api/v1/event-type/{event_type_name}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"description\": \"A user has signed up\",\n \"schemas\": {\n \"1\": {\n \"title\": \"Invoice Paid Event\",\n \"description\": \"An invoice was paid by a user\",\n \"type\": \"object\",\n \"properties\": {\n \"invoiceId\": {\n \"description\": \"The invoice id\",\n \"type\": \"string\"\n },\n \"userId\": {\n \"description\": \"The user id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"invoiceId\",\n \"userId\"\n ]\n }\n },\n \"archived\": false\n}'"}]},"delete":{"tags":["Event Type"],"summary":"Archive Event Type","description":"Archive an event type.\n\nEndpoints already configured to filter on an event type will continue to do so after archival.\nHowever, new messages can not be sent with it and endpoints can not filter on it.\nAn event type can be unarchived with the\n[create operation](#operation/create_event_type_api_v1_event_type__post).","operationId":"delete_event_type_api_v1_event_type__event_type_name___delete","parameters":[{"required":true,"schema":{"title":"Event Type Name","maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"},"name":"event_type_name","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"204":{"description":"Successful Response"},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"await svix.eventType.delete('event_type_name');"},{"lang":"JavaScript","label":"TypeScript","source":"await svix.eventType.delete('event_type_name');"},{"lang":"Python","label":"Python","source":"svix.event_type.delete('event_type_name')"},{"lang":"Python","label":"Python (Async)","source":"await svix.event_type.delete('event_type_name')"},{"lang":"Go","label":"Go","source":"err := svixClient.EventType.Delete(\"event_type_name\")"},{"lang":"Kotlin","label":"Kotlin","source":"svix.eventType.delete('event_type_name')"},{"lang":"Java","label":"Java","source":"svix.getEventType().delete('event_type_name')"},{"lang":"Ruby","label":"Ruby","source":"svix.event_type.delete('event_type_name')"},{"lang":"Rust","label":"Rust","source":"svix.event_type().delete(\"event_type_name\").await?;"},{"lang":"C#","label":"C#","source":"await svix.EventType.DeleteAsync(\"event_type_name\")"},{"lang":"Shell","label":"CLI","source":"svix event-type delete 'event_type_name'"},{"lang":"Shell","label":"cURL","source":"curl -X 'DELETE' \\\n 'https://api.svix.com/api/v1/event-type/{event_type_name}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/endpoint/":{"get":{"tags":["Endpoint"],"summary":"List Endpoints","description":"List the application's endpoints.","operationId":"list_endpoints_api_v1_app__app_id__endpoint__get","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":false,"schema":{"title":"Iterator","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_EndpointOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const listResponseEndpointOut = await svix.endpoint.list('app_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const listResponseEndpointOut = await svix.endpoint.list('app_id');"},{"lang":"Python","label":"Python","source":"list_response_endpoint_out = svix.endpoint.list('app_id')"},{"lang":"Python","label":"Python (Async)","source":"list_response_endpoint_out = await svix.endpoint.list('app_id')"},{"lang":"Go","label":"Go","source":"listResponseEndpointOut, err := svixClient.Endpoint.List(\"app_id\", nil)"},{"lang":"Kotlin","label":"Kotlin","source":"val listResponseEndpointOut = svix.endpoint.list('app_id', FetchOptions())"},{"lang":"Java","label":"Java","source":"ListResponseEndpointOut listResponseEndpointOut = svix.getEndpoint().list('app_id', new FetchOptions())"},{"lang":"Ruby","label":"Ruby","source":"list_response_endpoint_out = svix.endpoint.list('app_id')"},{"lang":"Rust","label":"Rust","source":"let list_response_endpoint_out = svix.endpoint().list(\"app_id\", None).await?;"},{"lang":"C#","label":"C#","source":"var listResponseEndpointOut = await svix.Endpoint.ListAsync(\"app_id\")"},{"lang":"Shell","label":"CLI","source":"svix endpoint list 'app_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"post":{"tags":["Endpoint"],"summary":"Create Endpoint","description":"Create a new endpoint for the application.\n\nWhen `secret` is `null` the secret is automatically generated (recommended)","operationId":"create_endpoint_api_v1_app__app_id__endpoint__post","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const endpointOut = await svix.endpoint.create('app_id', {\n uid: \"unique-endpoint-identifier\",\n url: \"https://example.com/webhook/\",\n version: 1,\n description: \"An example endpoint name\",\n filterTypes: [\n \"user.signup\",\n \"user.deleted\"\n ],\n channels: [\n \"project_123\",\n \"group_2\"\n ],\n disabled: false,\n rateLimit: 1000,\n secret: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n});"},{"lang":"JavaScript","label":"TypeScript","source":"const endpointOut = await svix.endpoint.create('app_id', {\n uid: \"unique-endpoint-identifier\",\n url: \"https://example.com/webhook/\",\n version: 1,\n description: \"An example endpoint name\",\n filterTypes: [\n \"user.signup\",\n \"user.deleted\"\n ],\n channels: [\n \"project_123\",\n \"group_2\"\n ],\n disabled: false,\n rateLimit: 1000,\n secret: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n});"},{"lang":"Python","label":"Python","source":"endpoint_out = svix.endpoint.create('app_id', EndpointIn(\n uid=\"unique-endpoint-identifier\",\n url=\"https://example.com/webhook/\",\n version=1,\n description=\"An example endpoint name\",\n filter_types=['user.signup', 'user.deleted'],\n channels=['project_123', 'group_2'],\n disabled=False,\n rate_limit=1000,\n secret=\"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n))"},{"lang":"Python","label":"Python (Async)","source":"endpoint_out = await svix.endpoint.create('app_id', EndpointIn(\n uid=\"unique-endpoint-identifier\",\n url=\"https://example.com/webhook/\",\n version=1,\n description=\"An example endpoint name\",\n filter_types=['user.signup', 'user.deleted'],\n channels=['project_123', 'group_2'],\n disabled=False,\n rate_limit=1000,\n secret=\"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n))"},{"lang":"Go","label":"Go","source":"endpointOut, err := svixClient.Endpoint.Create(\"app_id\", &svix.EndpointIn{\n Uid: \"unique-endpoint-identifier\",\n Url: \"https://example.com/webhook/\",\n Version: 1,\n Description: \"An example endpoint name\",\n FilterTypes: [...]string{\"user.signup\", \"user.deleted\"},\n Channels: [...]string{\"project_123\", \"group_2\"},\n Disabled: False,\n RateLimit: 1000,\n Secret: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val endpointOut = svix.endpoint.create('app_id', EndpointIn()\n .uid(\"unique-endpoint-identifier\"),\n .url(\"https://example.com/webhook/\"),\n .version(1),\n .description(\"An example endpoint name\"),\n .filterTypes(arrayOf(\"user.signup\", \"user.deleted\")),\n .channels(arrayOf(\"project_123\", \"group_2\")),\n .disabled(False),\n .rateLimit(1000),\n .secret(\"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\")\n)"},{"lang":"Java","label":"Java","source":"EndpointOut endpointOut = svix.getEndpoint().create('app_id', new EndpointIn()\n .uid(\"unique-endpoint-identifier\"),\n .url(\"https://example.com/webhook/\"),\n .version(1),\n .description(\"An example endpoint name\"),\n .filterTypes(new String[]{\"user.signup\", \"user.deleted\"}),\n .channels(new String[]{\"project_123\", \"group_2\"}),\n .disabled(False),\n .rateLimit(1000),\n .secret(\"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\")\n)"},{"lang":"Ruby","label":"Ruby","source":"endpoint_out = svix.endpoint.create('app_id', Svix::EndpointIn.new({\n \"uid\": \"unique-endpoint-identifier\",\n \"url\": \"https://example.com/webhook/\",\n \"version\": 1,\n \"description\": \"An example endpoint name\",\n \"filter_types\": [\n \"user.signup\",\n \"user.deleted\"\n ],\n \"channels\": [\n \"project_123\",\n \"group_2\"\n ],\n \"disabled\": false,\n \"rate_limit\": 1000,\n \"secret\": \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n}))"},{"lang":"Rust","label":"Rust","source":"let endpoint_out = svix.endpoint().create(\"app_id\", EndpointIn {\n uid: \"unique-endpoint-identifier\".to_string(),\n url: \"https://example.com/webhook/\".to_string(),\n version: 1,\n description: \"An example endpoint name\".to_string(),\n filter_types: vec![\"user.signup\".to_string(), \"user.deleted\".to_string()],\n channels: vec![\"project_123\".to_string(), \"group_2\".to_string()],\n disabled: False,\n rate_limit: 1000,\n secret: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\".to_string()\n}).await?;"},{"lang":"C#","label":"C#","source":"var endpointOut = await svix.Endpoint.CreateAsync(\"app_id\", new EndpointIn{\n uid: \"unique-endpoint-identifier\",\n url: \"https://example.com/webhook/\",\n version: 1,\n description: \"An example endpoint name\",\n filterTypes: new string[] {\"user.signup\", \"user.deleted\"},\n channels: new string[] {\"project_123\", \"group_2\"},\n disabled: false,\n rateLimit: 1000,\n secret: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n})"},{"lang":"Shell","label":"CLI","source":"svix endpoint create 'app_id' '{\n \"uid\": \"unique-endpoint-identifier\",\n \"url\": \"https://example.com/webhook/\",\n \"version\": 1,\n \"description\": \"An example endpoint name\",\n \"filterTypes\": [\n \"user.signup\",\n \"user.deleted\"\n ],\n \"channels\": [\n \"project_123\",\n \"group_2\"\n ],\n \"disabled\": false,\n \"rateLimit\": 1000,\n \"secret\": \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"uid\": \"unique-endpoint-identifier\",\n \"url\": \"https://example.com/webhook/\",\n \"version\": 1,\n \"description\": \"An example endpoint name\",\n \"filterTypes\": [\n \"user.signup\",\n \"user.deleted\"\n ],\n \"channels\": [\n \"project_123\",\n \"group_2\"\n ],\n \"disabled\": false,\n \"rateLimit\": 1000,\n \"secret\": \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n}'"}]}},"/api/v1/app/{app_id}/endpoint/{endpoint_id}/":{"get":{"tags":["Endpoint"],"summary":"Get Endpoint","description":"Get an application.","operationId":"get_endpoint_api_v1_app__app_id__endpoint__endpoint_id___get","parameters":[{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const endpointOut = await svix.endpoint.get('app_id', 'endpoint_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const endpointOut = await svix.endpoint.get('app_id', 'endpoint_id');"},{"lang":"Python","label":"Python","source":"endpoint_out = svix.endpoint.get('app_id', 'endpoint_id')"},{"lang":"Python","label":"Python (Async)","source":"endpoint_out = await svix.endpoint.get('app_id', 'endpoint_id')"},{"lang":"Go","label":"Go","source":"endpointOut, err := svixClient.Endpoint.Get(\"app_id\", \"endpoint_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val endpointOut = svix.endpoint.get('app_id', 'endpoint_id')"},{"lang":"Java","label":"Java","source":"EndpointOut endpointOut = svix.getEndpoint().get('app_id', 'endpoint_id')"},{"lang":"Ruby","label":"Ruby","source":"endpoint_out = svix.endpoint.get('app_id', 'endpoint_id')"},{"lang":"Rust","label":"Rust","source":"let endpoint_out = svix.endpoint().get(\"app_id\", \"endpoint_id\").await?;"},{"lang":"C#","label":"C#","source":"var endpointOut = await svix.Endpoint.GetAsync(\"app_id\", \"endpoint_id\")"},{"lang":"Shell","label":"CLI","source":"svix endpoint get 'app_id' 'endpoint_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"put":{"tags":["Endpoint"],"summary":"Update Endpoint","description":"Update an endpoint.","operationId":"update_endpoint_api_v1_app__app_id__endpoint__endpoint_id___put","parameters":[{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const endpointOut = await svix.endpoint.update('app_id', 'endpoint_id', {\n uid: \"unique-endpoint-identifier\",\n url: \"https://example.com/webhook/\",\n version: 1,\n description: \"An example endpoint name\",\n filterTypes: [\n \"user.signup\",\n \"user.deleted\"\n ],\n channels: [\n \"project_123\",\n \"group_2\"\n ],\n disabled: false,\n rateLimit: 1000\n});"},{"lang":"JavaScript","label":"TypeScript","source":"const endpointOut = await svix.endpoint.update('app_id', 'endpoint_id', {\n uid: \"unique-endpoint-identifier\",\n url: \"https://example.com/webhook/\",\n version: 1,\n description: \"An example endpoint name\",\n filterTypes: [\n \"user.signup\",\n \"user.deleted\"\n ],\n channels: [\n \"project_123\",\n \"group_2\"\n ],\n disabled: false,\n rateLimit: 1000\n});"},{"lang":"Python","label":"Python","source":"endpoint_out = svix.endpoint.update('app_id', 'endpoint_id', EndpointUpdate(\n uid=\"unique-endpoint-identifier\",\n url=\"https://example.com/webhook/\",\n version=1,\n description=\"An example endpoint name\",\n filter_types=['user.signup', 'user.deleted'],\n channels=['project_123', 'group_2'],\n disabled=False,\n rate_limit=1000\n))"},{"lang":"Python","label":"Python (Async)","source":"endpoint_out = await svix.endpoint.update('app_id', 'endpoint_id', EndpointUpdate(\n uid=\"unique-endpoint-identifier\",\n url=\"https://example.com/webhook/\",\n version=1,\n description=\"An example endpoint name\",\n filter_types=['user.signup', 'user.deleted'],\n channels=['project_123', 'group_2'],\n disabled=False,\n rate_limit=1000\n))"},{"lang":"Go","label":"Go","source":"endpointOut, err := svixClient.Endpoint.Update(\"app_id\", \"endpoint_id\", &svix.EndpointUpdate{\n Uid: \"unique-endpoint-identifier\",\n Url: \"https://example.com/webhook/\",\n Version: 1,\n Description: \"An example endpoint name\",\n FilterTypes: [...]string{\"user.signup\", \"user.deleted\"},\n Channels: [...]string{\"project_123\", \"group_2\"},\n Disabled: False,\n RateLimit: 1000\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val endpointOut = svix.endpoint.update('app_id', 'endpoint_id', EndpointUpdate()\n .uid(\"unique-endpoint-identifier\"),\n .url(\"https://example.com/webhook/\"),\n .version(1),\n .description(\"An example endpoint name\"),\n .filterTypes(arrayOf(\"user.signup\", \"user.deleted\")),\n .channels(arrayOf(\"project_123\", \"group_2\")),\n .disabled(False),\n .rateLimit(1000)\n)"},{"lang":"Java","label":"Java","source":"EndpointOut endpointOut = svix.getEndpoint().update('app_id', 'endpoint_id', new EndpointUpdate()\n .uid(\"unique-endpoint-identifier\"),\n .url(\"https://example.com/webhook/\"),\n .version(1),\n .description(\"An example endpoint name\"),\n .filterTypes(new String[]{\"user.signup\", \"user.deleted\"}),\n .channels(new String[]{\"project_123\", \"group_2\"}),\n .disabled(False),\n .rateLimit(1000)\n)"},{"lang":"Ruby","label":"Ruby","source":"endpoint_out = svix.endpoint.update('app_id', 'endpoint_id', Svix::EndpointUpdate.new({\n \"uid\": \"unique-endpoint-identifier\",\n \"url\": \"https://example.com/webhook/\",\n \"version\": 1,\n \"description\": \"An example endpoint name\",\n \"filter_types\": [\n \"user.signup\",\n \"user.deleted\"\n ],\n \"channels\": [\n \"project_123\",\n \"group_2\"\n ],\n \"disabled\": false,\n \"rate_limit\": 1000\n}))"},{"lang":"Rust","label":"Rust","source":"let endpoint_out = svix.endpoint().update(\"app_id\", \"endpoint_id\", EndpointUpdate {\n uid: \"unique-endpoint-identifier\".to_string(),\n url: \"https://example.com/webhook/\".to_string(),\n version: 1,\n description: \"An example endpoint name\".to_string(),\n filter_types: vec![\"user.signup\".to_string(), \"user.deleted\".to_string()],\n channels: vec![\"project_123\".to_string(), \"group_2\".to_string()],\n disabled: False,\n rate_limit: 1000\n}).await?;"},{"lang":"C#","label":"C#","source":"var endpointOut = await svix.Endpoint.UpdateAsync(\"app_id\", \"endpoint_id\", new EndpointUpdate{\n uid: \"unique-endpoint-identifier\",\n url: \"https://example.com/webhook/\",\n version: 1,\n description: \"An example endpoint name\",\n filterTypes: new string[] {\"user.signup\", \"user.deleted\"},\n channels: new string[] {\"project_123\", \"group_2\"},\n disabled: false,\n rateLimit: 1000\n})"},{"lang":"Shell","label":"CLI","source":"svix endpoint update 'app_id' 'endpoint_id' '{\n \"uid\": \"unique-endpoint-identifier\",\n \"url\": \"https://example.com/webhook/\",\n \"version\": 1,\n \"description\": \"An example endpoint name\",\n \"filterTypes\": [\n \"user.signup\",\n \"user.deleted\"\n ],\n \"channels\": [\n \"project_123\",\n \"group_2\"\n ],\n \"disabled\": false,\n \"rateLimit\": 1000\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'PUT' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"uid\": \"unique-endpoint-identifier\",\n \"url\": \"https://example.com/webhook/\",\n \"version\": 1,\n \"description\": \"An example endpoint name\",\n \"filterTypes\": [\n \"user.signup\",\n \"user.deleted\"\n ],\n \"channels\": [\n \"project_123\",\n \"group_2\"\n ],\n \"disabled\": false,\n \"rateLimit\": 1000\n}'"}]},"delete":{"tags":["Endpoint"],"summary":"Delete Endpoint","description":"Delete an endpoint.","operationId":"delete_endpoint_api_v1_app__app_id__endpoint__endpoint_id___delete","parameters":[{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"204":{"description":"Successful Response"},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"await svix.endpoint.delete('app_id', 'endpoint_id');"},{"lang":"JavaScript","label":"TypeScript","source":"await svix.endpoint.delete('app_id', 'endpoint_id');"},{"lang":"Python","label":"Python","source":"svix.endpoint.delete('app_id', 'endpoint_id')"},{"lang":"Python","label":"Python (Async)","source":"await svix.endpoint.delete('app_id', 'endpoint_id')"},{"lang":"Go","label":"Go","source":"err := svixClient.Endpoint.Delete(\"app_id\", \"endpoint_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"svix.endpoint.delete('app_id', 'endpoint_id')"},{"lang":"Java","label":"Java","source":"svix.getEndpoint().delete('app_id', 'endpoint_id')"},{"lang":"Ruby","label":"Ruby","source":"svix.endpoint.delete('app_id', 'endpoint_id')"},{"lang":"Rust","label":"Rust","source":"svix.endpoint().delete(\"app_id\", \"endpoint_id\").await?;"},{"lang":"C#","label":"C#","source":"await svix.Endpoint.DeleteAsync(\"app_id\", \"endpoint_id\")"},{"lang":"Shell","label":"CLI","source":"svix endpoint delete 'app_id' 'endpoint_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'DELETE' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/endpoint/{endpoint_id}/secret/":{"get":{"tags":["Endpoint"],"summary":"Get Endpoint Secret","description":"Get the endpoint's signing secret.\n\nThis is used to verify the authenticity of the webhook.\nFor more information please refer to [the consuming webhooks docs](https://docs.svix.com/consuming-webhooks/).","operationId":"get_endpoint_secret_api_v1_app__app_id__endpoint__endpoint_id__secret__get","parameters":[{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointSecretOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const endpointSecretOut = await svix.endpoint.getSecret('app_id', 'endpoint_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const endpointSecretOut = await svix.endpoint.getSecret('app_id', 'endpoint_id');"},{"lang":"Python","label":"Python","source":"endpoint_secret_out = svix.endpoint.get_secret('app_id', 'endpoint_id')"},{"lang":"Python","label":"Python (Async)","source":"endpoint_secret_out = await svix.endpoint.get_secret('app_id', 'endpoint_id')"},{"lang":"Go","label":"Go","source":"endpointSecretOut, err := svixClient.Endpoint.GetSecret(\"app_id\", \"endpoint_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val endpointSecretOut = svix.endpoint.getSecret('app_id', 'endpoint_id')"},{"lang":"Java","label":"Java","source":"EndpointSecretOut endpointSecretOut = svix.getEndpoint().getSecret('app_id', 'endpoint_id')"},{"lang":"Ruby","label":"Ruby","source":"endpoint_secret_out = svix.endpoint.get_secret('app_id', 'endpoint_id')"},{"lang":"Rust","label":"Rust","source":"let endpoint_secret_out = svix.endpoint().get_secret(\"app_id\", \"endpoint_id\").await?;"},{"lang":"C#","label":"C#","source":"var endpointSecretOut = await svix.Endpoint.GetSecretAsync(\"app_id\", \"endpoint_id\")"},{"lang":"Shell","label":"CLI","source":"svix endpoint get-secret 'app_id' 'endpoint_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/secret/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/endpoint/{endpoint_id}/secret/rotate/":{"post":{"tags":["Endpoint"],"summary":"Rotate Endpoint Secret","description":"Rotates the endpoint's signing secret. The previous secret will be valid for the next 24 hours.","operationId":"rotate_endpoint_secret_api_v1_app__app_id__endpoint__endpoint_id__secret_rotate__post","parameters":[{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointSecretRotateIn"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"await svix.endpoint.rotateSecret('app_id', 'endpoint_id', {\n key: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n});"},{"lang":"JavaScript","label":"TypeScript","source":"await svix.endpoint.rotateSecret('app_id', 'endpoint_id', {\n key: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n});"},{"lang":"Python","label":"Python","source":"svix.endpoint.rotate_secret('app_id', 'endpoint_id', EndpointSecretRotateIn(\n key=\"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n))"},{"lang":"Python","label":"Python (Async)","source":"await svix.endpoint.rotate_secret('app_id', 'endpoint_id', EndpointSecretRotateIn(\n key=\"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n))"},{"lang":"Go","label":"Go","source":"err := svixClient.Endpoint.RotateSecret(\"app_id\", \"endpoint_id\", &svix.EndpointSecretRotateIn{\n Key: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n})"},{"lang":"Kotlin","label":"Kotlin","source":"svix.endpoint.rotateSecret('app_id', 'endpoint_id', EndpointSecretRotateIn()\n .key(\"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\")\n)"},{"lang":"Java","label":"Java","source":"svix.getEndpoint().rotateSecret('app_id', 'endpoint_id', new EndpointSecretRotateIn()\n .key(\"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\")\n)"},{"lang":"Ruby","label":"Ruby","source":"svix.endpoint.rotate_secret('app_id', 'endpoint_id', Svix::EndpointSecretRotateIn.new({\n \"key\": \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n}))"},{"lang":"Rust","label":"Rust","source":"svix.endpoint().rotate_secret(\"app_id\", \"endpoint_id\", EndpointSecretRotateIn {\n key: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\".to_string()\n}).await?;"},{"lang":"C#","label":"C#","source":"await svix.Endpoint.RotateSecretAsync(\"app_id\", \"endpoint_id\", new EndpointSecretRotateIn{\n key: \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n})"},{"lang":"Shell","label":"CLI","source":"svix endpoint rotate-secret 'app_id' 'endpoint_id' '{\n \"key\": \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/secret/rotate/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"key\": \"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD\"\n}'"}]}},"/api/v1/app/{app_id}/endpoint/{endpoint_id}/recover/":{"post":{"tags":["Endpoint"],"summary":"Recover Failed Webhooks","description":"Resend all failed messages since a given time.","operationId":"recover_failed_webhooks_api_v1_app__app_id__endpoint__endpoint_id__recover__post","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoverIn"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoverOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const recoverOut = await svix.endpoint.recover('app_id', 'endpoint_id', {\n since: new Date(\"2019-08-24T14:15:22Z\")\n});"},{"lang":"JavaScript","label":"TypeScript","source":"const recoverOut = await svix.endpoint.recover('app_id', 'endpoint_id', {\n since: new Date(\"2019-08-24T14:15:22Z\")\n});"},{"lang":"Python","label":"Python","source":"recover_out = svix.endpoint.recover('app_id', 'endpoint_id', RecoverIn(\n since=datetime.datetime(2019, 8, 24, 14, 15, 22, timezone.utc)\n))"},{"lang":"Python","label":"Python (Async)","source":"recover_out = await svix.endpoint.recover('app_id', 'endpoint_id', RecoverIn(\n since=datetime.datetime(2019, 8, 24, 14, 15, 22, timezone.utc)\n))"},{"lang":"Go","label":"Go","source":"recoverOut, err := svixClient.Endpoint.Recover(\"app_id\", \"endpoint_id\", &svix.RecoverIn{\n Since: \"2019-08-24T14:15:22Z\"\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val recoverOut = svix.endpoint.recover('app_id', 'endpoint_id', RecoverIn()\n .since(\"2019-08-24T14:15:22Z\")\n)"},{"lang":"Java","label":"Java","source":"RecoverOut recoverOut = svix.getEndpoint().recover('app_id', 'endpoint_id', new RecoverIn()\n .since(\"2019-08-24T14:15:22Z\")\n)"},{"lang":"Ruby","label":"Ruby","source":"recover_out = svix.endpoint.recover('app_id', 'endpoint_id', Svix::RecoverIn.new({\n \"since\": \"2019-08-24T14:15:22Z\"\n}))"},{"lang":"Rust","label":"Rust","source":"let recover_out = svix.endpoint().recover(\"app_id\", \"endpoint_id\", RecoverIn {\n since: \"2019-08-24T14:15:22Z\".to_string()\n}).await?;"},{"lang":"C#","label":"C#","source":"var recoverOut = await svix.Endpoint.RecoverAsync(\"app_id\", \"endpoint_id\", new RecoverIn{\n since: \"2019-08-24T14:15:22Z\"\n})"},{"lang":"Shell","label":"CLI","source":"svix endpoint recover 'app_id' 'endpoint_id' '{\n \"since\": \"2019-08-24T14:15:22Z\"\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/recover/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"since\": \"2019-08-24T14:15:22Z\"\n}'"}]}},"/api/v1/app/{app_id}/endpoint/{endpoint_id}/headers/":{"get":{"tags":["Endpoint"],"summary":"Get Endpoint Headers","description":"Get the additional headers to be sent with the webhook","operationId":"get_endpoint_headers_api_v1_app__app_id__endpoint__endpoint_id__headers__get","parameters":[{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointHeadersOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const endpointHeadersOut = await svix.endpoint.getHeaders('app_id', 'endpoint_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const endpointHeadersOut = await svix.endpoint.getHeaders('app_id', 'endpoint_id');"},{"lang":"Python","label":"Python","source":"endpoint_headers_out = svix.endpoint.get_headers('app_id', 'endpoint_id')"},{"lang":"Python","label":"Python (Async)","source":"endpoint_headers_out = await svix.endpoint.get_headers('app_id', 'endpoint_id')"},{"lang":"Go","label":"Go","source":"endpointHeadersOut, err := svixClient.Endpoint.GetHeaders(\"app_id\", \"endpoint_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val endpointHeadersOut = svix.endpoint.getHeaders('app_id', 'endpoint_id')"},{"lang":"Java","label":"Java","source":"EndpointHeadersOut endpointHeadersOut = svix.getEndpoint().getHeaders('app_id', 'endpoint_id')"},{"lang":"Ruby","label":"Ruby","source":"endpoint_headers_out = svix.endpoint.get_headers('app_id', 'endpoint_id')"},{"lang":"Rust","label":"Rust","source":"let endpoint_headers_out = svix.endpoint().get_headers(\"app_id\", \"endpoint_id\").await?;"},{"lang":"C#","label":"C#","source":"var endpointHeadersOut = await svix.Endpoint.GetHeadersAsync(\"app_id\", \"endpoint_id\")"},{"lang":"Shell","label":"CLI","source":"svix endpoint get-headers 'app_id' 'endpoint_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/headers/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"put":{"tags":["Endpoint"],"summary":"Update Endpoint Headers","description":"Set the additional headers to be sent with the webhook","operationId":"update_endpoint_headers_api_v1_app__app_id__endpoint__endpoint_id__headers__put","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointHeadersIn"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"await svix.endpoint.updateHeaders('app_id', 'endpoint_id', {\n headers: {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n});"},{"lang":"JavaScript","label":"TypeScript","source":"await svix.endpoint.updateHeaders('app_id', 'endpoint_id', {\n headers: {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n});"},{"lang":"Python","label":"Python","source":"svix.endpoint.update_headers('app_id', 'endpoint_id', EndpointHeadersIn(\n headers={'X-Foobar': 'Bar', 'X-Example': '123'}\n))"},{"lang":"Python","label":"Python (Async)","source":"await svix.endpoint.update_headers('app_id', 'endpoint_id', EndpointHeadersIn(\n headers={'X-Foobar': 'Bar', 'X-Example': '123'}\n))"},{"lang":"Go","label":"Go","source":"err := svixClient.Endpoint.UpdateHeaders(\"app_id\", \"endpoint_id\", &svix.EndpointHeadersIn{\n Headers: map[string]string{\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n})"},{"lang":"Kotlin","label":"Kotlin","source":"svix.endpoint.updateHeaders('app_id', 'endpoint_id', EndpointHeadersIn()\n .headers(\"\"\"{\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\"\"\")\n)"},{"lang":"Java","label":"Java","source":"svix.getEndpoint().updateHeaders('app_id', 'endpoint_id', new EndpointHeadersIn()\n .headers(\"{\" +\n \"\\\"X-Foobar\\\": \\\"Bar\\\",\" +\n \"\\\"X-Example\\\": \\\"123\\\"\" +\n \"}\")\n)"},{"lang":"Ruby","label":"Ruby","source":"svix.endpoint.update_headers('app_id', 'endpoint_id', Svix::EndpointHeadersIn.new({\n \"headers\": {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n}))"},{"lang":"Rust","label":"Rust","source":"svix.endpoint().update_headers(\"app_id\", \"endpoint_id\", EndpointHeadersIn {\n headers: HashMap::from([\n (\"X-Foobar.\"to_string(), \"Bar\".to_string()),\n (\"X-Example.\"to_string(), \"123\".to_string())\n ])\n}).await?;"},{"lang":"C#","label":"C#","source":"await svix.Endpoint.UpdateHeadersAsync(\"app_id\", \"endpoint_id\", new EndpointHeadersIn{\n headers: new {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n})"},{"lang":"Shell","label":"CLI","source":"svix endpoint update-headers 'app_id' 'endpoint_id' '{\n \"headers\": {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'PUT' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/headers/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"headers\": {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n}'"}]},"patch":{"tags":["Endpoint"],"summary":"Patch Endpoint Headers","description":"Partially set the additional headers to be sent with the webhook","operationId":"patch_endpoint_headers_api_v1_app__app_id__endpoint__endpoint_id__headers__patch","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointHeadersPatchIn"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"await svix.endpoint.patchHeaders('app_id', 'endpoint_id', {\n headers: {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n});"},{"lang":"JavaScript","label":"TypeScript","source":"await svix.endpoint.patchHeaders('app_id', 'endpoint_id', {\n headers: {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n});"},{"lang":"Python","label":"Python","source":"svix.endpoint.patch_headers('app_id', 'endpoint_id', EndpointHeadersPatchIn(\n headers={'X-Foobar': 'Bar', 'X-Example': '123'}\n))"},{"lang":"Python","label":"Python (Async)","source":"await svix.endpoint.patch_headers('app_id', 'endpoint_id', EndpointHeadersPatchIn(\n headers={'X-Foobar': 'Bar', 'X-Example': '123'}\n))"},{"lang":"Go","label":"Go","source":"err := svixClient.Endpoint.PatchHeaders(\"app_id\", \"endpoint_id\", &svix.EndpointHeadersPatchIn{\n Headers: map[string]string{\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n})"},{"lang":"Kotlin","label":"Kotlin","source":"svix.endpoint.patchHeaders('app_id', 'endpoint_id', EndpointHeadersPatchIn()\n .headers(\"\"\"{\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\"\"\")\n)"},{"lang":"Java","label":"Java","source":"svix.getEndpoint().patchHeaders('app_id', 'endpoint_id', new EndpointHeadersPatchIn()\n .headers(\"{\" +\n \"\\\"X-Foobar\\\": \\\"Bar\\\",\" +\n \"\\\"X-Example\\\": \\\"123\\\"\" +\n \"}\")\n)"},{"lang":"Ruby","label":"Ruby","source":"svix.endpoint.patch_headers('app_id', 'endpoint_id', Svix::EndpointHeadersPatchIn.new({\n \"headers\": {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n}))"},{"lang":"Rust","label":"Rust","source":"svix.endpoint().patch_headers(\"app_id\", \"endpoint_id\", EndpointHeadersPatchIn {\n headers: HashMap::from([\n (\"X-Foobar.\"to_string(), \"Bar\".to_string()),\n (\"X-Example.\"to_string(), \"123\".to_string())\n ])\n}).await?;"},{"lang":"C#","label":"C#","source":"await svix.Endpoint.PatchHeadersAsync(\"app_id\", \"endpoint_id\", new EndpointHeadersPatchIn{\n headers: new {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n})"},{"lang":"Shell","label":"CLI","source":"svix endpoint patch-headers 'app_id' 'endpoint_id' '{\n \"headers\": {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'PATCH' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/headers/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"headers\": {\n \"X-Foobar\": \"Bar\",\n \"X-Example\": \"123\"\n }\n}'"}]}},"/api/v1/app/{app_id}/msg/":{"get":{"tags":["Message"],"summary":"List Messages","description":"List all of the application's messages.\n\nThe `before` parameter lets you filter all items created before a certain date and is ignored if an iterator is passed.\nThe `after` parameter lets you filter all items created after a certain date and is ignored if an iterator is passed.\n`before` and `after` cannot be used simultaneously.","operationId":"list_messages_api_v1_app__app_id__msg__get","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":false,"schema":{"title":"Iterator","type":"string","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"required":false,"schema":{"title":"Event Types","type":"array","items":{"maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"}},"name":"event_types","in":"query"},{"required":false,"schema":{"title":"Channel","maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"name":"channel","in":"query"},{"required":false,"schema":{"title":"Before","type":"string","format":"date-time"},"name":"before","in":"query"},{"required":false,"schema":{"title":"After","type":"string","format":"date-time"},"name":"after","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_MessageOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const listResponseMessageOut = await svix.message.list('app_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const listResponseMessageOut = await svix.message.list('app_id');"},{"lang":"Python","label":"Python","source":"list_response_message_out = svix.message.list('app_id')"},{"lang":"Python","label":"Python (Async)","source":"list_response_message_out = await svix.message.list('app_id')"},{"lang":"Go","label":"Go","source":"listResponseMessageOut, err := svixClient.Message.List(\"app_id\", nil)"},{"lang":"Kotlin","label":"Kotlin","source":"val listResponseMessageOut = svix.message.list('app_id', FetchOptions())"},{"lang":"Java","label":"Java","source":"ListResponseMessageOut listResponseMessageOut = svix.getMessage().list('app_id', new FetchOptions())"},{"lang":"Ruby","label":"Ruby","source":"list_response_message_out = svix.message.list('app_id')"},{"lang":"Rust","label":"Rust","source":"let list_response_message_out = svix.message().list(\"app_id\", None).await?;"},{"lang":"C#","label":"C#","source":"var listResponseMessageOut = await svix.Message.ListAsync(\"app_id\")"},{"lang":"Shell","label":"CLI","source":"svix message list 'app_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/msg/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"post":{"tags":["Message"],"summary":"Create Message","description":"Creates a new message and dispatches it to all of the application's endpoints.\n\nThe `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.\nIf a message with the same `eventId` already exists for any application in your environment, a 409 conflict error will be returned.\n\nThe `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.\nMessages 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.\n\nThe `payload' property is the webhook's body (the actual webhook message).","operationId":"create_message_api_v1_app__app_id__msg__post","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":false,"schema":{"title":"With Content","type":"boolean","default":true},"name":"with_content","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageIn"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"413":{"description":"Request Entity Too Large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const messageOut = await svix.message.create('app_id', {\n eventType: \"user.signup\",\n eventId: \"evt_pNZKtWg8Azow\",\n channels: [\n \"project_123\",\n \"group_2\"\n ],\n payload: {\n \"username\": \"test_user\",\n \"email\": \"test@example.com\"\n },\n payloadRetentionPeriod: 90\n});"},{"lang":"JavaScript","label":"TypeScript","source":"const messageOut = await svix.message.create('app_id', {\n eventType: \"user.signup\",\n eventId: \"evt_pNZKtWg8Azow\",\n channels: [\n \"project_123\",\n \"group_2\"\n ],\n payload: {\n \"username\": \"test_user\",\n \"email\": \"test@example.com\"\n },\n payloadRetentionPeriod: 90\n});"},{"lang":"Python","label":"Python","source":"message_out = svix.message.create('app_id', MessageIn(\n event_type=\"user.signup\",\n event_id=\"evt_pNZKtWg8Azow\",\n channels=['project_123', 'group_2'],\n payload={'username': 'test_user', 'email': 'test@example.com'},\n payload_retention_period=90\n))"},{"lang":"Python","label":"Python (Async)","source":"message_out = await svix.message.create('app_id', MessageIn(\n event_type=\"user.signup\",\n event_id=\"evt_pNZKtWg8Azow\",\n channels=['project_123', 'group_2'],\n payload={'username': 'test_user', 'email': 'test@example.com'},\n payload_retention_period=90\n))"},{"lang":"Go","label":"Go","source":"messageOut, err := svixClient.Message.Create(\"app_id\", &svix.MessageIn{\n EventType: \"user.signup\",\n EventId: \"evt_pNZKtWg8Azow\",\n Channels: [...]string{\"project_123\", \"group_2\"},\n Payload: map[string]interface{}{\n \"username\": \"test_user\",\n \"email\": \"test@example.com\"\n },\n PayloadRetentionPeriod: 90\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val messageOut = svix.message.create('app_id', MessageIn()\n .eventType(\"user.signup\"),\n .eventId(\"evt_pNZKtWg8Azow\"),\n .channels(arrayOf(\"project_123\", \"group_2\")),\n .payload(\"\"\"{\n \"username\": \"test_user\",\n \"email\": \"test@example.com\"\n }\"\"\"),\n .payloadRetentionPeriod(90)\n)"},{"lang":"Java","label":"Java","source":"MessageOut messageOut = svix.getMessage().create('app_id', new MessageIn()\n .eventType(\"user.signup\"),\n .eventId(\"evt_pNZKtWg8Azow\"),\n .channels(new String[]{\"project_123\", \"group_2\"}),\n .payload(\"{\" +\n \"\\\"username\\\": \\\"test_user\\\",\" +\n \"\\\"email\\\": \\\"test@example.com\\\"\" +\n \"}\"),\n .payloadRetentionPeriod(90)\n)"},{"lang":"Ruby","label":"Ruby","source":"message_out = svix.message.create('app_id', Svix::MessageIn.new({\n \"event_type\": \"user.signup\",\n \"event_id\": \"evt_pNZKtWg8Azow\",\n \"channels\": [\n \"project_123\",\n \"group_2\"\n ],\n \"payload\": {\n \"username\": \"test_user\",\n \"email\": \"test@example.com\"\n },\n \"payload_retention_period\": 90\n}))"},{"lang":"Rust","label":"Rust","source":"let message_out = svix.message().create(\"app_id\", MessageIn {\n event_type: \"user.signup\".to_string(),\n event_id: \"evt_pNZKtWg8Azow\".to_string(),\n channels: vec![\"project_123\".to_string(), \"group_2\".to_string()],\n payload: json!({\n \"username\": \"test_user\",\n \"email\": \"test@example.com\"\n }),\n payload_retention_period: 90\n}).await?;"},{"lang":"C#","label":"C#","source":"var messageOut = await svix.Message.CreateAsync(\"app_id\", new MessageIn{\n eventType: \"user.signup\",\n eventId: \"evt_pNZKtWg8Azow\",\n channels: new string[] {\"project_123\", \"group_2\"},\n payload: new {\n \"username\": \"test_user\",\n \"email\": \"test@example.com\"\n },\n payloadRetentionPeriod: 90\n})"},{"lang":"Shell","label":"CLI","source":"svix message create 'app_id' '{\n \"eventType\": \"user.signup\",\n \"eventId\": \"evt_pNZKtWg8Azow\",\n \"channels\": [\n \"project_123\",\n \"group_2\"\n ],\n \"payload\": {\n \"username\": \"test_user\",\n \"email\": \"test@example.com\"\n },\n \"payloadRetentionPeriod\": 90\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/app/{app_id}/msg/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"eventType\": \"user.signup\",\n \"eventId\": \"evt_pNZKtWg8Azow\",\n \"channels\": [\n \"project_123\",\n \"group_2\"\n ],\n \"payload\": {\n \"username\": \"test_user\",\n \"email\": \"test@example.com\"\n },\n \"payloadRetentionPeriod\": 90\n}'"}]}},"/api/v1/app/{app_id}/msg/{msg_id}/":{"get":{"tags":["Message"],"summary":"Get Message","description":"Get a message by its ID or eventID.","operationId":"get_message_api_v1_app__app_id__msg__msg_id___get","parameters":[{"required":true,"schema":{"title":"Msg Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The message's ID or eventID","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"msg_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const messageOut = await svix.message.get('app_id', 'msg_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const messageOut = await svix.message.get('app_id', 'msg_id');"},{"lang":"Python","label":"Python","source":"message_out = svix.message.get('app_id', 'msg_id')"},{"lang":"Python","label":"Python (Async)","source":"message_out = await svix.message.get('app_id', 'msg_id')"},{"lang":"Go","label":"Go","source":"messageOut, err := svixClient.Message.Get(\"app_id\", \"msg_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val messageOut = svix.message.get('app_id', 'msg_id')"},{"lang":"Java","label":"Java","source":"MessageOut messageOut = svix.getMessage().get('app_id', 'msg_id')"},{"lang":"Ruby","label":"Ruby","source":"message_out = svix.message.get('app_id', 'msg_id')"},{"lang":"Rust","label":"Rust","source":"let message_out = svix.message().get(\"app_id\", \"msg_id\").await?;"},{"lang":"C#","label":"C#","source":"var messageOut = await svix.Message.GetAsync(\"app_id\", \"msg_id\")"},{"lang":"Shell","label":"CLI","source":"svix message get 'app_id' 'msg_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/msg/{msg_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/endpoint/{endpoint_id}/msg/":{"get":{"tags":["Message Attempt"],"summary":"List Attempted Messages","description":"List messages for a particular endpoint. Additionally includes metadata about the latest message attempt.\n\nThe `before` parameter lets you filter all items created before a certain date and is ignored if an iterator is passed.","operationId":"list_attempted_messages_api_v1_app__app_id__endpoint__endpoint_id__msg__get","parameters":[{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":false,"schema":{"title":"Iterator","type":"string","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"required":false,"schema":{"title":"Channel","maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"name":"channel","in":"query"},{"required":false,"schema":{"$ref":"#/components/schemas/MessageStatus"},"name":"status","in":"query"},{"required":false,"schema":{"title":"Before","type":"string","format":"date-time"},"name":"before","in":"query"},{"required":false,"schema":{"title":"After","type":"string","format":"date-time"},"name":"after","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_EndpointMessageOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/endpoint/{endpoint_id}/msg/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/attempt/endpoint/{endpoint_id}/":{"get":{"tags":["Message Attempt"],"summary":"List Attempts By Endpoint","description":"List attempts by endpoint id","operationId":"list_attempts_by_endpoint_api_v1_app__app_id__attempt_endpoint__endpoint_id___get","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":false,"schema":{"title":"Iterator","type":"string","example":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"required":false,"schema":{"$ref":"#/components/schemas/MessageStatus"},"name":"status","in":"query"},{"required":false,"schema":{"$ref":"#/components/schemas/StatusCodeClass"},"name":"status_code_class","in":"query"},{"required":false,"schema":{"title":"Event Types","type":"array","items":{"maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"}},"name":"event_types","in":"query"},{"required":false,"schema":{"title":"Channel","maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"name":"channel","in":"query"},{"required":false,"schema":{"title":"Before","type":"string","format":"date-time"},"name":"before","in":"query"},{"required":false,"schema":{"title":"After","type":"string","format":"date-time"},"name":"after","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_MessageAttemptOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const listResponseMessageAttemptOut = await svix.messageAttempt.listByEndpoint('app_id', 'endpoint_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const listResponseMessageAttemptOut = await svix.messageAttempt.listByEndpoint('app_id', 'endpoint_id');"},{"lang":"Python","label":"Python","source":"list_response_message_attempt_out = svix.message_attempt.list_by_endpoint('app_id', 'endpoint_id')"},{"lang":"Python","label":"Python (Async)","source":"list_response_message_attempt_out = await svix.message_attempt.list_by_endpoint('app_id', 'endpoint_id')"},{"lang":"Go","label":"Go","source":"listResponseMessageAttemptOut, err := svixClient.MessageAttempt.ListByEndpoint(\"app_id\", \"endpoint_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val listResponseMessageAttemptOut = svix.messageAttempt.listByEndpoint('app_id', 'endpoint_id')"},{"lang":"Java","label":"Java","source":"ListResponseMessageAttemptOut listResponseMessageAttemptOut = svix.getMessageAttempt().listByEndpoint('app_id', 'endpoint_id')"},{"lang":"Ruby","label":"Ruby","source":"list_response_message_attempt_out = svix.message_attempt.list_by_endpoint('app_id', 'endpoint_id')"},{"lang":"Rust","label":"Rust","source":"let list_response_message_attempt_out = svix.message_attempt().list_by_endpoint(\"app_id\", \"endpoint_id\", None).await?;"},{"lang":"C#","label":"C#","source":"var listResponseMessageAttemptOut = await svix.MessageAttempt.ListByEndpointAsync(\"app_id\", \"endpoint_id\")"},{"lang":"Shell","label":"CLI","source":"svix message-attempt list-by-endpoint 'app_id' 'endpoint_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/attempt/endpoint/{endpoint_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/attempt/msg/{msg_id}/":{"get":{"tags":["Message Attempt"],"summary":"List Attempts By Msg","description":"List attempts by message id","operationId":"list_attempts_by_msg_api_v1_app__app_id__attempt_msg__msg_id___get","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":true,"schema":{"title":"Msg Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The message's ID or eventID","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"msg_id","in":"path"},{"required":false,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"query"},{"required":false,"schema":{"title":"Iterator","type":"string","example":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"required":false,"schema":{"$ref":"#/components/schemas/MessageStatus"},"name":"status","in":"query"},{"required":false,"schema":{"$ref":"#/components/schemas/StatusCodeClass"},"name":"status_code_class","in":"query"},{"required":false,"schema":{"title":"Event Types","type":"array","items":{"maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"}},"name":"event_types","in":"query"},{"required":false,"schema":{"title":"Channel","maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"name":"channel","in":"query"},{"required":false,"schema":{"title":"Before","type":"string","format":"date-time"},"name":"before","in":"query"},{"required":false,"schema":{"title":"After","type":"string","format":"date-time"},"name":"after","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_MessageAttemptOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const listResponseMessageAttemptOut = await svix.messageAttempt.listByMsg('app_id', 'msg_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const listResponseMessageAttemptOut = await svix.messageAttempt.listByMsg('app_id', 'msg_id');"},{"lang":"Python","label":"Python","source":"list_response_message_attempt_out = svix.message_attempt.list_by_msg('app_id', 'msg_id')"},{"lang":"Python","label":"Python (Async)","source":"list_response_message_attempt_out = await svix.message_attempt.list_by_msg('app_id', 'msg_id')"},{"lang":"Go","label":"Go","source":"listResponseMessageAttemptOut, err := svixClient.MessageAttempt.ListByMsg(\"app_id\", \"msg_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val listResponseMessageAttemptOut = svix.messageAttempt.listByMsg('app_id', 'msg_id')"},{"lang":"Java","label":"Java","source":"ListResponseMessageAttemptOut listResponseMessageAttemptOut = svix.getMessageAttempt().listByMsg('app_id', 'msg_id')"},{"lang":"Ruby","label":"Ruby","source":"list_response_message_attempt_out = svix.message_attempt.list_by_msg('app_id', 'msg_id')"},{"lang":"Rust","label":"Rust","source":"let list_response_message_attempt_out = svix.message_attempt().list_by_msg(\"app_id\", \"msg_id\", None).await?;"},{"lang":"C#","label":"C#","source":"var listResponseMessageAttemptOut = await svix.MessageAttempt.ListByMsgAsync(\"app_id\", \"msg_id\")"},{"lang":"Shell","label":"CLI","source":"svix message-attempt list-by-msg 'app_id' 'msg_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/attempt/msg/{msg_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/msg/{msg_id}/endpoint/":{"get":{"tags":["Message Attempt"],"summary":"List Attempted Destinations","description":"`msg_id`: Use a message id or a message `eventId`","operationId":"list_attempted_destinations_api_v1_app__app_id__msg__msg_id__endpoint__get","parameters":[{"required":true,"schema":{"title":"Msg Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The message's ID or eventID","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"msg_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":false,"schema":{"title":"Iterator","type":"string","example":"msgep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_MessageEndpointOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/msg/{msg_id}/endpoint/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/resend/":{"post":{"tags":["Message Attempt"],"summary":"Resend Webhook","description":"Resend a message to the specified endpoint.","operationId":"resend_webhook_api_v1_app__app_id__msg__msg_id__endpoint__endpoint_id__resend__post","parameters":[{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":true,"schema":{"title":"Msg Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The message's ID or eventID","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"msg_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"202":{"description":"Successful Response"},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"await svix.messageAttempt.resend('app_id', 'msg_id', 'endpoint_id');"},{"lang":"JavaScript","label":"TypeScript","source":"await svix.messageAttempt.resend('app_id', 'msg_id', 'endpoint_id');"},{"lang":"Python","label":"Python","source":"svix.message_attempt.resend('app_id', 'msg_id', 'endpoint_id')"},{"lang":"Python","label":"Python (Async)","source":"await svix.message_attempt.resend('app_id', 'msg_id', 'endpoint_id')"},{"lang":"Go","label":"Go","source":"err := svixClient.MessageAttempt.Resend(\"app_id\", \"msg_id\", \"endpoint_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"svix.messageAttempt.resend('app_id', 'msg_id', 'endpoint_id')"},{"lang":"Java","label":"Java","source":"svix.getMessageAttempt().resend('app_id', 'msg_id', 'endpoint_id')"},{"lang":"Ruby","label":"Ruby","source":"svix.message_attempt.resend('app_id', 'msg_id', 'endpoint_id')"},{"lang":"Rust","label":"Rust","source":"svix.message_attempt().resend(\"app_id\", \"msg_id\", \"endpoint_id\").await?;"},{"lang":"C#","label":"C#","source":"await svix.MessageAttempt.ResendAsync(\"app_id\", \"msg_id\", \"endpoint_id\")"},{"lang":"Shell","label":"CLI","source":"svix message-attempt resend 'app_id' 'msg_id' 'endpoint_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/resend/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/attempt/":{"get":{"tags":["Message Attempt"],"summary":"List Attempts For Endpoint","description":"DEPRECATED: please use list_attempts with endpoint_id as a query parameter instead.\n\nList the message attempts for a particular endpoint.\n\nReturning the endpoint.\n\nThe `before` parameter lets you filter all items created before a certain date and is ignored if an iterator is passed.","operationId":"list_attempts_for_endpoint_api_v1_app__app_id__msg__msg_id__endpoint__endpoint_id__attempt__get","parameters":[{"required":true,"schema":{"title":"Msg Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The message's ID or eventID","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"msg_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":true,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"path"},{"required":false,"schema":{"title":"Iterator","type":"string","example":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"required":false,"schema":{"title":"Event Types","type":"array","items":{"maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"}},"name":"event_types","in":"query"},{"required":false,"schema":{"title":"Channel","maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"name":"channel","in":"query"},{"required":false,"schema":{"$ref":"#/components/schemas/MessageStatus"},"name":"status","in":"query"},{"required":false,"schema":{"title":"Before","type":"string","format":"date-time"},"name":"before","in":"query"},{"required":false,"schema":{"title":"After","type":"string","format":"date-time"},"name":"after","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_MessageAttemptEndpointOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/attempt/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/msg/{msg_id}/attempt/":{"get":{"tags":["Message Attempt"],"summary":"List Attempts","description":"Deprecated: Please use \"List Attempts by Endpoint\" and \"List Attempts by Msg\" instead.\n\n`msg_id`: Use a message id or a message `eventId`","operationId":"list_attempts_api_v1_app__app_id__msg__msg_id__attempt__get","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":true,"schema":{"title":"Msg Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The message's ID or eventID","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"msg_id","in":"path"},{"required":false,"schema":{"title":"Iterator","type":"string","example":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","maximum":250.0,"type":"integer","default":50},"name":"limit","in":"query"},{"required":false,"schema":{"title":"Endpoint Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The endpoint's ID or UID","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"endpoint_id","in":"query"},{"required":false,"schema":{"title":"Event Types","type":"array","items":{"maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"}},"name":"event_types","in":"query"},{"required":false,"schema":{"title":"Channel","maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"name":"channel","in":"query"},{"required":false,"schema":{"$ref":"#/components/schemas/MessageStatus"},"name":"status","in":"query"},{"required":false,"schema":{"title":"Before","type":"string","format":"date-time"},"name":"before","in":"query"},{"required":false,"schema":{"title":"After","type":"string","format":"date-time"},"name":"after","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_MessageAttemptOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const listResponseMessageAttemptOut = await svix.messageAttempt.list('app_id', 'msg_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const listResponseMessageAttemptOut = await svix.messageAttempt.list('app_id', 'msg_id');"},{"lang":"Python","label":"Python","source":"list_response_message_attempt_out = svix.message_attempt.list('app_id', 'msg_id')"},{"lang":"Python","label":"Python (Async)","source":"list_response_message_attempt_out = await svix.message_attempt.list('app_id', 'msg_id')"},{"lang":"Go","label":"Go","source":"listResponseMessageAttemptOut, err := svixClient.MessageAttempt.List(\"app_id\", \"msg_id\", nil)"},{"lang":"Kotlin","label":"Kotlin","source":"val listResponseMessageAttemptOut = svix.messageAttempt.list('app_id', 'msg_id', FetchOptionsMessageAttempt())"},{"lang":"Java","label":"Java","source":"ListResponseMessageAttemptOut listResponseMessageAttemptOut = svix.getMessageAttempt().list('app_id', 'msg_id', new FetchOptionsMessageAttempt())"},{"lang":"Ruby","label":"Ruby","source":"list_response_message_attempt_out = svix.message_attempt.list('app_id', 'msg_id')"},{"lang":"Rust","label":"Rust","source":"let list_response_message_attempt_out = svix.message_attempt().list(\"app_id\", \"msg_id\", None).await?;"},{"lang":"C#","label":"C#","source":"var listResponseMessageAttemptOut = await svix.MessageAttempt.ListAsync(\"app_id\", \"msg_id\")"},{"lang":"Shell","label":"CLI","source":"svix message-attempt list 'app_id' 'msg_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/msg/{msg_id}/attempt/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}/":{"get":{"tags":["Message Attempt"],"summary":"Get Attempt","description":"`msg_id`: Use a message id or a message `eventId`","operationId":"get_attempt_api_v1_app__app_id__msg__msg_id__attempt__attempt_id___get","parameters":[{"required":true,"schema":{"title":"Attempt Id","type":"string","example":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"attempt_id","in":"path"},{"required":true,"schema":{"title":"Msg Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The message's ID or eventID","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"msg_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageAttemptOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const messageAttemptOut = await svix.messageAttempt.get('app_id', 'msg_id', 'attempt_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const messageAttemptOut = await svix.messageAttempt.get('app_id', 'msg_id', 'attempt_id');"},{"lang":"Python","label":"Python","source":"message_attempt_out = svix.message_attempt.get('app_id', 'msg_id', 'attempt_id')"},{"lang":"Python","label":"Python (Async)","source":"message_attempt_out = await svix.message_attempt.get('app_id', 'msg_id', 'attempt_id')"},{"lang":"Go","label":"Go","source":"messageAttemptOut, err := svixClient.MessageAttempt.Get(\"app_id\", \"msg_id\", \"attempt_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val messageAttemptOut = svix.messageAttempt.get('app_id', 'msg_id', 'attempt_id')"},{"lang":"Java","label":"Java","source":"MessageAttemptOut messageAttemptOut = svix.getMessageAttempt().get('app_id', 'msg_id', 'attempt_id')"},{"lang":"Ruby","label":"Ruby","source":"message_attempt_out = svix.message_attempt.get('app_id', 'msg_id', 'attempt_id')"},{"lang":"Rust","label":"Rust","source":"let message_attempt_out = svix.message_attempt().get(\"app_id\", \"msg_id\", \"attempt_id\").await?;"},{"lang":"C#","label":"C#","source":"var messageAttemptOut = await svix.MessageAttempt.GetAsync(\"app_id\", \"msg_id\", \"attempt_id\")"},{"lang":"Shell","label":"CLI","source":"svix message-attempt get 'app_id' 'msg_id' 'attempt_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/integration/":{"get":{"tags":["Integration"],"summary":"List Integrations","description":"List the application's integrations.","operationId":"list_integrations_api_v1_app__app_id__integration__get","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"required":false,"schema":{"title":"Iterator","type":"string","example":"integ_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"iterator","in":"query"},{"required":false,"schema":{"title":"Limit","type":"integer","default":50},"name":"limit","in":"query"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_IntegrationOut_"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const listResponseIntegrationOut = await svix.integration.list('app_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const listResponseIntegrationOut = await svix.integration.list('app_id');"},{"lang":"Python","label":"Python","source":"list_response_integration_out = svix.integration.list('app_id')"},{"lang":"Python","label":"Python (Async)","source":"list_response_integration_out = await svix.integration.list('app_id')"},{"lang":"Go","label":"Go","source":"listResponseIntegrationOut, err := svixClient.Integration.List(\"app_id\", nil)"},{"lang":"Kotlin","label":"Kotlin","source":"val listResponseIntegrationOut = svix.integration.list('app_id', FetchOptions())"},{"lang":"Java","label":"Java","source":"ListResponseIntegrationOut listResponseIntegrationOut = svix.getIntegration().list('app_id', new FetchOptions())"},{"lang":"Ruby","label":"Ruby","source":"list_response_integration_out = svix.integration.list('app_id')"},{"lang":"Rust","label":"Rust","source":"let list_response_integration_out = svix.integration().list(\"app_id\", None).await?;"},{"lang":"C#","label":"C#","source":"var listResponseIntegrationOut = await svix.Integration.ListAsync(\"app_id\")"},{"lang":"Shell","label":"CLI","source":"svix integration list 'app_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/integration/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"post":{"tags":["Integration"],"summary":"Create Integration","description":"Create an integration.","operationId":"create_integration_api_v1_app__app_id__integration__post","parameters":[{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const integrationOut = await svix.integration.create('app_id', {\n name: \"Example Integration\"\n});"},{"lang":"JavaScript","label":"TypeScript","source":"const integrationOut = await svix.integration.create('app_id', {\n name: \"Example Integration\"\n});"},{"lang":"Python","label":"Python","source":"integration_out = svix.integration.create('app_id', IntegrationIn(\n name=\"Example Integration\"\n))"},{"lang":"Python","label":"Python (Async)","source":"integration_out = await svix.integration.create('app_id', IntegrationIn(\n name=\"Example Integration\"\n))"},{"lang":"Go","label":"Go","source":"integrationOut, err := svixClient.Integration.Create(\"app_id\", &svix.IntegrationIn{\n Name: \"Example Integration\"\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val integrationOut = svix.integration.create('app_id', IntegrationIn()\n .name(\"Example Integration\")\n)"},{"lang":"Java","label":"Java","source":"IntegrationOut integrationOut = svix.getIntegration().create('app_id', new IntegrationIn()\n .name(\"Example Integration\")\n)"},{"lang":"Ruby","label":"Ruby","source":"integration_out = svix.integration.create('app_id', Svix::IntegrationIn.new({\n \"name\": \"Example Integration\"\n}))"},{"lang":"Rust","label":"Rust","source":"let integration_out = svix.integration().create(\"app_id\", IntegrationIn {\n name: \"Example Integration\".to_string()\n}).await?;"},{"lang":"C#","label":"C#","source":"var integrationOut = await svix.Integration.CreateAsync(\"app_id\", new IntegrationIn{\n name: \"Example Integration\"\n})"},{"lang":"Shell","label":"CLI","source":"svix integration create 'app_id' '{\n \"name\": \"Example Integration\"\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/app/{app_id}/integration/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"name\": \"Example Integration\"\n}'"}]}},"/api/v1/app/{app_id}/integration/{integ_id}/":{"get":{"tags":["Integration"],"summary":"Get Integration","description":"Get an integration.","operationId":"get_integration_api_v1_app__app_id__integration__integ_id___get","parameters":[{"required":true,"schema":{"title":"Integ Id","type":"string","example":"integ_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"integ_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const integrationOut = await svix.integration.get('app_id', 'integ_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const integrationOut = await svix.integration.get('app_id', 'integ_id');"},{"lang":"Python","label":"Python","source":"integration_out = svix.integration.get('app_id', 'integ_id')"},{"lang":"Python","label":"Python (Async)","source":"integration_out = await svix.integration.get('app_id', 'integ_id')"},{"lang":"Go","label":"Go","source":"integrationOut, err := svixClient.Integration.Get(\"app_id\", \"integ_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val integrationOut = svix.integration.get('app_id', 'integ_id')"},{"lang":"Java","label":"Java","source":"IntegrationOut integrationOut = svix.getIntegration().get('app_id', 'integ_id')"},{"lang":"Ruby","label":"Ruby","source":"integration_out = svix.integration.get('app_id', 'integ_id')"},{"lang":"Rust","label":"Rust","source":"let integration_out = svix.integration().get(\"app_id\", \"integ_id\").await?;"},{"lang":"C#","label":"C#","source":"var integrationOut = await svix.Integration.GetAsync(\"app_id\", \"integ_id\")"},{"lang":"Shell","label":"CLI","source":"svix integration get 'app_id' 'integ_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/integration/{integ_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]},"put":{"tags":["Integration"],"summary":"Update Integration","description":"Update an integration.","operationId":"update_integration_api_v1_app__app_id__integration__integ_id___put","parameters":[{"required":true,"schema":{"title":"Integ Id","type":"string","example":"integ_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"integ_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const integrationOut = await svix.integration.update('app_id', 'integ_id', {\n name: \"Example Integration\"\n});"},{"lang":"JavaScript","label":"TypeScript","source":"const integrationOut = await svix.integration.update('app_id', 'integ_id', {\n name: \"Example Integration\"\n});"},{"lang":"Python","label":"Python","source":"integration_out = svix.integration.update('app_id', 'integ_id', IntegrationUpdate(\n name=\"Example Integration\"\n))"},{"lang":"Python","label":"Python (Async)","source":"integration_out = await svix.integration.update('app_id', 'integ_id', IntegrationUpdate(\n name=\"Example Integration\"\n))"},{"lang":"Go","label":"Go","source":"integrationOut, err := svixClient.Integration.Update(\"app_id\", \"integ_id\", &svix.IntegrationUpdate{\n Name: \"Example Integration\"\n})"},{"lang":"Kotlin","label":"Kotlin","source":"val integrationOut = svix.integration.update('app_id', 'integ_id', IntegrationUpdate()\n .name(\"Example Integration\")\n)"},{"lang":"Java","label":"Java","source":"IntegrationOut integrationOut = svix.getIntegration().update('app_id', 'integ_id', new IntegrationUpdate()\n .name(\"Example Integration\")\n)"},{"lang":"Ruby","label":"Ruby","source":"integration_out = svix.integration.update('app_id', 'integ_id', Svix::IntegrationUpdate.new({\n \"name\": \"Example Integration\"\n}))"},{"lang":"Rust","label":"Rust","source":"let integration_out = svix.integration().update(\"app_id\", \"integ_id\", IntegrationUpdate {\n name: \"Example Integration\".to_string()\n}).await?;"},{"lang":"C#","label":"C#","source":"var integrationOut = await svix.Integration.UpdateAsync(\"app_id\", \"integ_id\", new IntegrationUpdate{\n name: \"Example Integration\"\n})"},{"lang":"Shell","label":"CLI","source":"svix integration update 'app_id' 'integ_id' '{\n \"name\": \"Example Integration\"\n}'"},{"lang":"Shell","label":"cURL","source":"curl -X 'PUT' \\\n 'https://api.svix.com/api/v1/app/{app_id}/integration/{integ_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"name\": \"Example Integration\"\n}'"}]},"delete":{"tags":["Integration"],"summary":"Delete Integration","description":"Delete an integration and revoke it's key.","operationId":"delete_integration_api_v1_app__app_id__integration__integ_id___delete","parameters":[{"required":true,"schema":{"title":"Integ Id","type":"string","example":"integ_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"integ_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"204":{"description":"Successful Response"},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"await svix.integration.delete('app_id', 'integ_id');"},{"lang":"JavaScript","label":"TypeScript","source":"await svix.integration.delete('app_id', 'integ_id');"},{"lang":"Python","label":"Python","source":"svix.integration.delete('app_id', 'integ_id')"},{"lang":"Python","label":"Python (Async)","source":"await svix.integration.delete('app_id', 'integ_id')"},{"lang":"Go","label":"Go","source":"err := svixClient.Integration.Delete(\"app_id\", \"integ_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"svix.integration.delete('app_id', 'integ_id')"},{"lang":"Java","label":"Java","source":"svix.getIntegration().delete('app_id', 'integ_id')"},{"lang":"Ruby","label":"Ruby","source":"svix.integration.delete('app_id', 'integ_id')"},{"lang":"Rust","label":"Rust","source":"svix.integration().delete(\"app_id\", \"integ_id\").await?;"},{"lang":"C#","label":"C#","source":"await svix.Integration.DeleteAsync(\"app_id\", \"integ_id\")"},{"lang":"Shell","label":"CLI","source":"svix integration delete 'app_id' 'integ_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'DELETE' \\\n 'https://api.svix.com/api/v1/app/{app_id}/integration/{integ_id}/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/integration/{integ_id}/key/":{"get":{"tags":["Integration"],"summary":"Get Integration Key","description":"Get an integration's key.","operationId":"get_integration_key_api_v1_app__app_id__integration__integ_id__key__get","parameters":[{"required":true,"schema":{"title":"Integ Id","type":"string","example":"integ_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"integ_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationKeyOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const integrationKeyOut = await svix.integration.getKey('app_id', 'integ_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const integrationKeyOut = await svix.integration.getKey('app_id', 'integ_id');"},{"lang":"Python","label":"Python","source":"integration_key_out = svix.integration.get_key('app_id', 'integ_id')"},{"lang":"Python","label":"Python (Async)","source":"integration_key_out = await svix.integration.get_key('app_id', 'integ_id')"},{"lang":"Go","label":"Go","source":"integrationKeyOut, err := svixClient.Integration.GetKey(\"app_id\", \"integ_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val integrationKeyOut = svix.integration.getKey('app_id', 'integ_id')"},{"lang":"Java","label":"Java","source":"IntegrationKeyOut integrationKeyOut = svix.getIntegration().getKey('app_id', 'integ_id')"},{"lang":"Ruby","label":"Ruby","source":"integration_key_out = svix.integration.get_key('app_id', 'integ_id')"},{"lang":"Rust","label":"Rust","source":"let integration_key_out = svix.integration().get_key(\"app_id\", \"integ_id\").await?;"},{"lang":"C#","label":"C#","source":"var integrationKeyOut = await svix.Integration.GetKeyAsync(\"app_id\", \"integ_id\")"},{"lang":"Shell","label":"CLI","source":"svix integration get-key 'app_id' 'integ_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'GET' \\\n 'https://api.svix.com/api/v1/app/{app_id}/integration/{integ_id}/key/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}},"/api/v1/app/{app_id}/integration/{integ_id}/key/rotate/":{"post":{"tags":["Integration"],"summary":"Rotate Integration Key","description":"Rotate the integration's key. The previous key will be immediately revoked.","operationId":"rotate_integration_key_api_v1_app__app_id__integration__integ_id__key_rotate__post","parameters":[{"required":true,"schema":{"title":"Integ Id","type":"string","example":"integ_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"integ_id","in":"path"},{"required":true,"schema":{"title":"App Id","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"The application's ID or UID","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"name":"app_id","in":"path"},{"description":"The request's idempotency key","required":false,"schema":{"title":"Idempotency-Key","type":"string","description":"The request's idempotency key"},"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationKeyOut"}}}},"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"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}],"x-codeSamples":[{"lang":"JavaScript","label":"JavaScript","source":"const integrationKeyOut = await svix.integration.rotateKey('app_id', 'integ_id');"},{"lang":"JavaScript","label":"TypeScript","source":"const integrationKeyOut = await svix.integration.rotateKey('app_id', 'integ_id');"},{"lang":"Python","label":"Python","source":"integration_key_out = svix.integration.rotate_key('app_id', 'integ_id')"},{"lang":"Python","label":"Python (Async)","source":"integration_key_out = await svix.integration.rotate_key('app_id', 'integ_id')"},{"lang":"Go","label":"Go","source":"integrationKeyOut, err := svixClient.Integration.RotateKey(\"app_id\", \"integ_id\")"},{"lang":"Kotlin","label":"Kotlin","source":"val integrationKeyOut = svix.integration.rotateKey('app_id', 'integ_id')"},{"lang":"Java","label":"Java","source":"IntegrationKeyOut integrationKeyOut = svix.getIntegration().rotateKey('app_id', 'integ_id')"},{"lang":"Ruby","label":"Ruby","source":"integration_key_out = svix.integration.rotate_key('app_id', 'integ_id')"},{"lang":"Rust","label":"Rust","source":"let integration_key_out = svix.integration().rotate_key(\"app_id\", \"integ_id\").await?;"},{"lang":"C#","label":"C#","source":"var integrationKeyOut = await svix.Integration.RotateKeyAsync(\"app_id\", \"integ_id\")"},{"lang":"Shell","label":"CLI","source":"svix integration rotate-key 'app_id' 'integ_id'"},{"lang":"Shell","label":"cURL","source":"curl -X 'POST' \\\n 'https://api.svix.com/api/v1/app/{app_id}/integration/{integ_id}/key/rotate/' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'accept: application/json' \\\n -H 'Content-Type: application/json'"}]}}},"components":{"schemas":{"ApplicationIn":{"title":"ApplicationIn","required":["name"],"type":"object","properties":{"uid":{"title":"Uid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the application","example":"unique-app-identifier"},"name":{"title":"Name","type":"string","example":"My first application"},"rateLimit":{"title":"Ratelimit","exclusiveMinimum":0.0,"type":"integer","example":1000}}},"ApplicationOut":{"title":"ApplicationOut","required":["name","id","createdAt","updatedAt"],"type":"object","properties":{"uid":{"title":"Uid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the application","example":"unique-app-identifier"},"name":{"title":"Name","type":"string","example":"My first application"},"rateLimit":{"title":"Ratelimit","exclusiveMinimum":0.0,"type":"integer","example":1000},"id":{"title":"Id","type":"string","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"createdAt":{"title":"Createdat","type":"string","format":"date-time"},"updatedAt":{"title":"Updatedat","type":"string","format":"date-time"}}},"DashboardAccessOut":{"title":"DashboardAccessOut","required":["url","token"],"type":"object","properties":{"url":{"title":"Url","maxLength":65536,"minLength":1,"type":"string","format":"uri","example":"https://app.svix.com/login#key=eyJhcHBJZCI6ICJhcHBfMXRSdFl"},"token":{"title":"Token","type":"string","example":"appsk_kV3ts5tKPNJN4Dl25cMTfUNdmabxbX0O"}}},"EndpointCreatedEvent":{"title":"EndpointCreatedEvent","required":["data"],"type":"object","properties":{"type":{"title":"Type","enum":["endpoint.created"],"type":"string","default":"endpoint.created"},"data":{"$ref":"#/components/schemas/EndpointCreatedEventData"}},"description":"Sent when an endpoint is created.","example":{"type":"endpoint.created","data":{"appId":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","appUid":"unique-app-identifier","endpointId":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"}}},"EndpointCreatedEventData":{"title":"EndpointCreatedEventData","required":["appId","endpointId"],"type":"object","properties":{"appId":{"title":"Appid","type":"string","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"appUid":{"title":"Appuid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the application","example":"unique-app-identifier"},"endpointId":{"title":"Endpointid","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"}}},"EndpointDeletedEvent":{"title":"EndpointDeletedEvent","required":["data"],"type":"object","properties":{"type":{"title":"Type","enum":["endpoint.deleted"],"type":"string","default":"endpoint.deleted"},"data":{"$ref":"#/components/schemas/EndpointDeletedEventData"}},"description":"Sent when an endpoint is deleted.","example":{"type":"endpoint.deleted","data":{"appId":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","appUid":"unique-app-identifier","endpointId":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"}}},"EndpointDeletedEventData":{"title":"EndpointDeletedEventData","required":["appId","endpointId"],"type":"object","properties":{"appId":{"title":"Appid","type":"string","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"appUid":{"title":"Appuid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the application","example":"unique-app-identifier"},"endpointId":{"title":"Endpointid","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"}}},"EndpointDisabledEvent":{"title":"EndpointDisabledEvent","required":["data"],"type":"object","properties":{"type":{"title":"Type","enum":["endpoint.disabled"],"type":"string","default":"endpoint.disabled"},"data":{"$ref":"#/components/schemas/EndpointDisabledEventData"}},"description":"Sent when an endpoint has been automatically disabled after continuous failures.","example":{"type":"endpoint.disabled","data":{"appId":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","appUid":"unique-app-identifier","endpointId":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2","failSince":"1970-01-01T00:00:00"}}},"EndpointDisabledEventData":{"title":"EndpointDisabledEventData","required":["appId","endpointId","failSince"],"type":"object","properties":{"appId":{"title":"Appid","type":"string","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"appUid":{"title":"Appuid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the application","example":"unique-app-identifier"},"endpointId":{"title":"Endpointid","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"failSince":{"title":"Failsince","type":"string","format":"date-time"}}},"EndpointHeadersIn":{"title":"EndpointHeadersIn","required":["headers"],"type":"object","properties":{"headers":{"title":"Headers","type":"object","additionalProperties":{"type":"string"},"example":{"X-Foobar":"Bar","X-Example":"123"}}}},"EndpointHeadersOut":{"title":"EndpointHeadersOut","required":["headers","sensitive"],"type":"object","properties":{"headers":{"title":"Headers","type":"object","additionalProperties":{"type":"string"},"example":{"X-Foobar":"Bar","X-Example":"123"}},"sensitive":{"title":"Sensitive","uniqueItems":true,"type":"array","items":{"type":"string","example":"X-Foobar"},"example":["Authorization"]}},"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":{"title":"EndpointHeadersPatchIn","required":["headers"],"type":"object","properties":{"headers":{"title":"Headers","type":"object","additionalProperties":{"type":"string"},"example":{"X-Foobar":"Bar","X-Example":"123"}}}},"EndpointIn":{"title":"EndpointIn","required":["url","version"],"type":"object","properties":{"uid":{"title":"Uid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the endpoint","example":"unique-endpoint-identifier"},"url":{"title":"Url","maxLength":65536,"minLength":1,"type":"string","format":"uri","example":"https://example.com/webhook/"},"version":{"title":"Version","exclusiveMinimum":0.0,"type":"integer","example":1},"description":{"title":"Description","type":"string","default":"","example":"An example endpoint name"},"filterTypes":{"title":"Filtertypes","minItems":1,"uniqueItems":true,"type":"array","items":{"type":"string"},"example":["user.signup","user.deleted"]},"channels":{"title":"Channels","maxItems":10,"minItems":1,"uniqueItems":true,"type":"array","items":{"maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"description":"List of message channels this endpoint listens to (omit for all)","example":["project_123","group_2"]},"disabled":{"title":"Disabled","type":"boolean","default":false,"example":false},"rateLimit":{"title":"Ratelimit","exclusiveMinimum":0.0,"type":"integer","example":1000},"secret":{"title":"Secret","pattern":"^whsec_[a-zA-Z0-9+/]{32}$","type":"string","description":"The endpoint's verification secret. If `null` is passed, a secret is automatically generated.","example":"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD"}}},"EndpointMessageOut":{"title":"EndpointMessageOut","required":["eventType","payload","id","timestamp","status"],"type":"object","properties":{"eventType":{"title":"Eventtype","maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"},"eventId":{"title":"Eventid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the message","example":"evt_pNZKtWg8Azow"},"channels":{"title":"Channels","maxItems":5,"minItems":1,"uniqueItems":true,"type":"array","items":{"maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"description":"List of free-form identifiers that endpoints can filter by","example":["project_123","group_2"]},"payload":{"title":"Payload","type":"object","example":{"username":"test_user","email":"test@example.com"}},"id":{"title":"Id","type":"string","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"timestamp":{"title":"Timestamp","type":"string","format":"date-time"},"status":{"$ref":"#/components/schemas/MessageStatus"},"nextAttempt":{"title":"Nextattempt","type":"string","format":"date-time"}}},"EndpointOut":{"title":"EndpointOut","required":["url","version","id","createdAt","updatedAt"],"type":"object","properties":{"uid":{"title":"Uid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the endpoint","example":"unique-endpoint-identifier"},"url":{"title":"Url","maxLength":65536,"minLength":1,"type":"string","format":"uri","example":"https://example.com/webhook/"},"version":{"title":"Version","exclusiveMinimum":0.0,"type":"integer","example":1},"description":{"title":"Description","type":"string","default":"","example":"An example endpoint name"},"filterTypes":{"title":"Filtertypes","minItems":1,"uniqueItems":true,"type":"array","items":{"type":"string"},"example":["user.signup","user.deleted"]},"channels":{"title":"Channels","maxItems":10,"minItems":1,"uniqueItems":true,"type":"array","items":{"maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"description":"List of message channels this endpoint listens to (omit for all)","example":["project_123","group_2"]},"disabled":{"title":"Disabled","type":"boolean","default":false,"example":false},"rateLimit":{"title":"Ratelimit","exclusiveMinimum":0.0,"type":"integer","example":1000},"id":{"title":"Id","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"createdAt":{"title":"Createdat","type":"string","format":"date-time"},"updatedAt":{"title":"Updatedat","type":"string","format":"date-time"}}},"EndpointSecretOut":{"title":"EndpointSecretOut","required":["key"],"type":"object","properties":{"key":{"title":"Key","pattern":"^whsec_[a-zA-Z0-9+/]{32}$","type":"string","description":"The endpoint's verification secret. If `null` is passed, a secret is automatically generated.","example":"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD"}}},"EndpointSecretRotateIn":{"title":"EndpointSecretRotateIn","type":"object","properties":{"key":{"title":"Key","pattern":"^whsec_[a-zA-Z0-9+/]{32}$","type":"string","description":"The endpoint's verification secret. If `null` is passed, a secret is automatically generated.","example":"whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD"}}},"EndpointUpdate":{"title":"EndpointUpdate","required":["url","version"],"type":"object","properties":{"uid":{"title":"Uid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the endpoint","example":"unique-endpoint-identifier"},"url":{"title":"Url","maxLength":65536,"minLength":1,"type":"string","format":"uri","example":"https://example.com/webhook/"},"version":{"title":"Version","exclusiveMinimum":0.0,"type":"integer","example":1},"description":{"title":"Description","type":"string","default":"","example":"An example endpoint name"},"filterTypes":{"title":"Filtertypes","minItems":1,"uniqueItems":true,"type":"array","items":{"type":"string"},"example":["user.signup","user.deleted"]},"channels":{"title":"Channels","maxItems":10,"minItems":1,"uniqueItems":true,"type":"array","items":{"maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"description":"List of message channels this endpoint listens to (omit for all)","example":["project_123","group_2"]},"disabled":{"title":"Disabled","type":"boolean","default":false,"example":false},"rateLimit":{"title":"Ratelimit","exclusiveMinimum":0.0,"type":"integer","example":1000}}},"EndpointUpdatedEvent":{"title":"EndpointUpdatedEvent","required":["data"],"type":"object","properties":{"type":{"title":"Type","enum":["endpoint.updated"],"type":"string","default":"endpoint.updated"},"data":{"$ref":"#/components/schemas/EndpointUpdatedEventData"}},"description":"Sent when an endpoint is updated.","example":{"type":"endpoint.updated","data":{"appId":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","appUid":"unique-app-identifier","endpointId":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"}}},"EndpointUpdatedEventData":{"title":"EndpointUpdatedEventData","required":["appId","endpointId"],"type":"object","properties":{"appId":{"title":"Appid","type":"string","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"appUid":{"title":"Appuid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the application","example":"unique-app-identifier"},"endpointId":{"title":"Endpointid","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"}}},"EventTypeIn":{"title":"EventTypeIn","required":["description","name"],"type":"object","properties":{"description":{"title":"Description","type":"string","example":"A user has signed up"},"schemas":{"title":"Schemas","type":"object","additionalProperties":{"type":"object","example":{"title":"Invoice Paid Event","description":"An invoice was paid by a user","type":"object","properties":{"invoiceId":{"description":"The invoice id","type":"string"},"userId":{"description":"The user id","type":"string"}},"required":["invoiceId","userId"]}},"description":"The schema for the event type for a specific version as a JSON schema.","example":{"1":{"title":"Invoice Paid Event","description":"An invoice was paid by a user","type":"object","properties":{"invoiceId":{"description":"The invoice id","type":"string"},"userId":{"description":"The user id","type":"string"}},"required":["invoiceId","userId"]}}},"archived":{"title":"Archived","type":"boolean","default":false,"example":false},"name":{"title":"Name","maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"}}},"EventTypeOut":{"title":"EventTypeOut","required":["description","name","createdAt","updatedAt"],"type":"object","properties":{"description":{"title":"Description","type":"string","example":"A user has signed up"},"schemas":{"title":"Schemas","type":"object","additionalProperties":{"type":"object","example":{"title":"Invoice Paid Event","description":"An invoice was paid by a user","type":"object","properties":{"invoiceId":{"description":"The invoice id","type":"string"},"userId":{"description":"The user id","type":"string"}},"required":["invoiceId","userId"]}},"description":"The schema for the event type for a specific version as a JSON schema.","example":{"1":{"title":"Invoice Paid Event","description":"An invoice was paid by a user","type":"object","properties":{"invoiceId":{"description":"The invoice id","type":"string"},"userId":{"description":"The user id","type":"string"}},"required":["invoiceId","userId"]}}},"archived":{"title":"Archived","type":"boolean","default":false,"example":false},"name":{"title":"Name","maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"},"createdAt":{"title":"Createdat","type":"string","format":"date-time"},"updatedAt":{"title":"Updatedat","type":"string","format":"date-time"}}},"EventTypeUpdate":{"title":"EventTypeUpdate","required":["description"],"type":"object","properties":{"description":{"title":"Description","type":"string","example":"A user has signed up"},"schemas":{"title":"Schemas","type":"object","additionalProperties":{"type":"object","example":{"title":"Invoice Paid Event","description":"An invoice was paid by a user","type":"object","properties":{"invoiceId":{"description":"The invoice id","type":"string"},"userId":{"description":"The user id","type":"string"}},"required":["invoiceId","userId"]}},"description":"The schema for the event type for a specific version as a JSON schema.","example":{"1":{"title":"Invoice Paid Event","description":"An invoice was paid by a user","type":"object","properties":{"invoiceId":{"description":"The invoice id","type":"string"},"userId":{"description":"The user id","type":"string"}},"required":["invoiceId","userId"]}}},"archived":{"title":"Archived","type":"boolean","default":false,"example":false}}},"HTTPValidationError":{"title":"HTTPValidationError","type":"object","properties":{"detail":{"title":"Detail","type":"array","items":{"$ref":"#/components/schemas/ValidationError"}}}},"HttpErrorOut":{"title":"HttpError","required":["code","detail"],"type":"object","properties":{"code":{"title":"Code","type":"string"},"detail":{"title":"Detail","type":"string"}}},"IntegrationIn":{"title":"IntegrationIn","required":["name"],"type":"object","properties":{"name":{"title":"Name","type":"string","example":"Example Integration"}}},"IntegrationKeyOut":{"title":"IntegrationKeyOut","required":["key"],"type":"object","properties":{"key":{"title":"Key","type":"string","example":"integsk_kV3ts5tKPNJN4Dl25cMTfUNdmabxbX0O"}}},"IntegrationOut":{"title":"IntegrationOut","required":["name","id","createdAt","updatedAt"],"type":"object","properties":{"name":{"title":"Name","type":"string","example":"Example Integration"},"id":{"title":"Id","type":"string","example":"integ_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"createdAt":{"title":"Createdat","type":"string","format":"date-time"},"updatedAt":{"title":"Updatedat","type":"string","format":"date-time"}}},"IntegrationUpdate":{"title":"IntegrationUpdate","required":["name"],"type":"object","properties":{"name":{"title":"Name","type":"string","example":"Example Integration"}}},"ListResponse_ApplicationOut_":{"title":"ListResponse[ApplicationOut]","required":["data","done"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/ApplicationOut"}},"iterator":{"title":"Iterator","type":"string","example":"iterator"},"done":{"title":"Done","type":"boolean"}}},"ListResponse_EndpointMessageOut_":{"title":"ListResponse[EndpointMessageOut]","required":["data","done"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/EndpointMessageOut"}},"iterator":{"title":"Iterator","type":"string","example":"iterator"},"prevIterator":{"title":"Previterator","type":"string","example":"-iterator"},"done":{"title":"Done","type":"boolean"}}},"ListResponse_EndpointOut_":{"title":"ListResponse[EndpointOut]","required":["data","done"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/EndpointOut"}},"iterator":{"title":"Iterator","type":"string","example":"iterator"},"done":{"title":"Done","type":"boolean"}}},"ListResponse_EventTypeOut_":{"title":"ListResponse[EventTypeOut]","required":["data","done"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/EventTypeOut"}},"iterator":{"title":"Iterator","type":"string","example":"iterator"},"done":{"title":"Done","type":"boolean"}}},"ListResponse_IntegrationOut_":{"title":"ListResponse[IntegrationOut]","required":["data","done"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/IntegrationOut"}},"iterator":{"title":"Iterator","type":"string","example":"iterator"},"done":{"title":"Done","type":"boolean"}}},"ListResponse_MessageAttemptEndpointOut_":{"title":"ListResponse[MessageAttemptEndpointOut]","required":["data","done"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/MessageAttemptEndpointOut"}},"iterator":{"title":"Iterator","type":"string","example":"iterator"},"prevIterator":{"title":"Previterator","type":"string","example":"-iterator"},"done":{"title":"Done","type":"boolean"}}},"ListResponse_MessageAttemptOut_":{"title":"ListResponse[MessageAttemptOut]","required":["data","done"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/MessageAttemptOut"}},"iterator":{"title":"Iterator","type":"string","example":"iterator"},"prevIterator":{"title":"Previterator","type":"string","example":"-iterator"},"done":{"title":"Done","type":"boolean"}}},"ListResponse_MessageEndpointOut_":{"title":"ListResponse[MessageEndpointOut]","required":["data","done"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/MessageEndpointOut"}},"iterator":{"title":"Iterator","type":"string","example":"iterator"},"done":{"title":"Done","type":"boolean"}}},"ListResponse_MessageOut_":{"title":"ListResponse[MessageOut]","required":["data","done"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/MessageOut"}},"iterator":{"title":"Iterator","type":"string","example":"iterator"},"prevIterator":{"title":"Previterator","type":"string","example":"-iterator"},"done":{"title":"Done","type":"boolean"}}},"MessageAttemptEndpointOut":{"title":"MessageAttemptEndpointOut","required":["id","msgId","endpointId","response","responseStatusCode","timestamp","status","triggerType"],"type":"object","properties":{"id":{"title":"Id","type":"string","example":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"msgId":{"title":"Msgid","type":"string","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"endpointId":{"title":"Endpointid","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"response":{"title":"Response","type":"string","example":"{}"},"responseStatusCode":{"title":"Responsestatuscode","type":"integer","example":200},"timestamp":{"title":"Timestamp","type":"string","format":"date-time"},"status":{"$ref":"#/components/schemas/MessageStatus"},"triggerType":{"$ref":"#/components/schemas/MessageAttemptTriggerType"}}},"MessageAttemptExhaustedEvent":{"title":"MessageAttemptExhaustedEvent","required":["data"],"type":"object","properties":{"type":{"title":"Type","enum":["message.attempt.exhausted"],"type":"string","default":"message.attempt.exhausted"},"data":{"$ref":"#/components/schemas/MessageAttemptExhaustedEventData"}},"description":"Sent when a message delivery has failed (all of the retry attempts have been exhausted).","example":{"type":"message.attempt.exhausted","data":{"appId":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","appUid":"unique-app-identifier","msgId":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","endpointId":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2","lastAttempt":{"id":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2","responseStatusCode":500,"timestamp":"1970-01-01T00:00:00"}}}},"MessageAttemptExhaustedEventData":{"title":"MessageAttemptExhaustedEventData","required":["appId","msgId","endpointId","lastAttempt"],"type":"object","properties":{"appId":{"title":"Appid","type":"string","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"appUid":{"title":"Appuid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the application","example":"unique-app-identifier"},"msgId":{"title":"Msgid","type":"string","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"endpointId":{"title":"Endpointid","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"lastAttempt":{"$ref":"#/components/schemas/MessageAttemptFailedData"}}},"MessageAttemptFailedData":{"title":"MessageAttemptFailedData","required":["id","responseStatusCode","timestamp"],"type":"object","properties":{"id":{"title":"Id","type":"string","example":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"responseStatusCode":{"title":"Responsestatuscode","type":"integer","example":500},"timestamp":{"title":"Timestamp","type":"string","format":"date-time"}}},"MessageAttemptFailingEvent":{"title":"MessageAttemptFailingEvent","required":["data"],"type":"object","properties":{"type":{"title":"Type","enum":["message.attempt.failing"],"type":"string","default":"message.attempt.failing"},"data":{"$ref":"#/components/schemas/MessageAttemptFailingEventData"}},"description":"Sent after a message has been failing for a few times.\nIt's sent on the fourth failure. It complements `message.attempt.exhausted` which is sent after the last failure.","example":{"type":"message.attempt.failing","data":{"appId":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2","appUid":"unique-app-identifier","msgId":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","endpointId":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2","lastAttempt":{"id":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2","responseStatusCode":500,"timestamp":"1970-01-01T00:00:00"}}}},"MessageAttemptFailingEventData":{"title":"MessageAttemptFailingEventData","required":["appId","msgId","endpointId","lastAttempt"],"type":"object","properties":{"appId":{"title":"Appid","type":"string","example":"app_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"appUid":{"title":"Appuid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the application","example":"unique-app-identifier"},"msgId":{"title":"Msgid","type":"string","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"endpointId":{"title":"Endpointid","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"lastAttempt":{"$ref":"#/components/schemas/MessageAttemptFailedData"}}},"MessageAttemptOut":{"title":"MessageAttemptOut","required":["id","msgId","endpointId","response","responseStatusCode","timestamp","status","triggerType"],"type":"object","properties":{"id":{"title":"Id","type":"string","example":"atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"msgId":{"title":"Msgid","type":"string","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"endpointId":{"title":"Endpointid","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"response":{"title":"Response","type":"string","example":"{}"},"responseStatusCode":{"title":"Responsestatuscode","type":"integer","example":200},"timestamp":{"title":"Timestamp","type":"string","format":"date-time"},"status":{"$ref":"#/components/schemas/MessageStatus"},"triggerType":{"$ref":"#/components/schemas/MessageAttemptTriggerType"}}},"MessageAttemptTriggerType":{"title":"MessageAttemptTriggerType","enum":[0,1],"type":"integer","description":"The reason an attempt was made:\n- Scheduled = 0\n- Manual = 1","x-enum-varnames":["Scheduled","Manual"]},"MessageEndpointOut":{"title":"MessageEndpointOut","required":["url","version","id","createdAt","status"],"type":"object","properties":{"uid":{"title":"Uid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the endpoint","example":"unique-endpoint-identifier"},"url":{"title":"Url","maxLength":65536,"minLength":1,"type":"string","format":"uri","example":"https://example.com/webhook/"},"version":{"title":"Version","exclusiveMinimum":0.0,"type":"integer","example":1},"description":{"title":"Description","type":"string","default":"","example":"An example endpoint name"},"filterTypes":{"title":"Filtertypes","minItems":1,"uniqueItems":true,"type":"array","items":{"type":"string"},"example":["user.signup","user.deleted"]},"channels":{"title":"Channels","maxItems":10,"minItems":1,"uniqueItems":true,"type":"array","items":{"maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"description":"List of message channels this endpoint listens to (omit for all)","example":["project_123","group_2"]},"disabled":{"title":"Disabled","type":"boolean","default":false,"example":false},"rateLimit":{"title":"Ratelimit","exclusiveMinimum":0.0,"type":"integer","example":1000},"id":{"title":"Id","type":"string","example":"ep_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"createdAt":{"title":"Createdat","type":"string","format":"date-time"},"status":{"$ref":"#/components/schemas/MessageStatus"},"nextAttempt":{"title":"Nextattempt","type":"string","format":"date-time"}}},"MessageIn":{"title":"MessageIn","required":["eventType","payload"],"type":"object","properties":{"eventType":{"title":"Eventtype","maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"},"eventId":{"title":"Eventid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the message","example":"evt_pNZKtWg8Azow"},"channels":{"title":"Channels","maxItems":5,"minItems":1,"uniqueItems":true,"type":"array","items":{"maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"description":"List of free-form identifiers that endpoints can filter by","example":["project_123","group_2"]},"payload":{"title":"Payload","type":"object","example":{"username":"test_user","email":"test@example.com"}},"payloadRetentionPeriod":{"title":"Payloadretentionperiod","maximum":90.0,"minimum":5.0,"type":"integer","description":"The retention period for the payload (in days).","default":90,"example":90}}},"MessageOut":{"title":"MessageOut","required":["eventType","payload","id","timestamp"],"type":"object","properties":{"eventType":{"title":"Eventtype","maxLength":256,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"user.signup"},"eventId":{"title":"Eventid","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","description":"Optional unique identifier for the message","example":"evt_pNZKtWg8Azow"},"channels":{"title":"Channels","maxItems":5,"minItems":1,"uniqueItems":true,"type":"array","items":{"maxLength":128,"pattern":"^[a-zA-Z0-9\\-_.]+$","type":"string","example":"project_1337"},"description":"List of free-form identifiers that endpoints can filter by","example":["project_123","group_2"]},"payload":{"title":"Payload","type":"object","example":{"username":"test_user","email":"test@example.com"}},"id":{"title":"Id","type":"string","example":"msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"},"timestamp":{"title":"Timestamp","type":"string","format":"date-time"}}},"MessageStatus":{"title":"MessageStatus","enum":[0,1,2,3],"type":"integer","description":"The sending status of the message:\n- Success = 0\n- Pending = 1\n- Fail = 2\n- Sending = 3","x-enum-varnames":["Success","Pending","Fail","Sending"]},"RecoverIn":{"title":"RecoverIn","required":["since"],"type":"object","properties":{"since":{"title":"Since","type":"string","format":"date-time"}}},"RecoverOut":{"title":"RecoverOut","type":"object","properties":{}},"StatusCodeClass":{"title":"StatusCodeClass","enum":[0,100,200,300,400,500],"type":"integer","description":"The different classes of HTTP status codes:\n- CodeNone = 0\n- Code1xx = 100\n- Code2xx = 200\n- Code3xx = 300\n- Code4xx = 400\n- Code5xx = 500","x-enum-varnames":["CodeNone","Code1xx","Code2xx","Code3xx","Code4xx","Code5xx"]},"ValidationError":{"title":"ValidationError","required":["loc","msg","type"],"type":"object","properties":{"loc":{"title":"Location","type":"array","items":{"type":"string"}},"msg":{"title":"Message","type":"string"},"type":{"title":"Error Type","type":"string"}}},"WebhookTypes":{"title":"WebhookTypes","required":["a","b","c","d","e","a1"],"type":"object","properties":{"a":{"$ref":"#/components/schemas/EndpointDisabledEvent"},"b":{"$ref":"#/components/schemas/EndpointCreatedEvent"},"c":{"$ref":"#/components/schemas/EndpointUpdatedEvent"},"d":{"$ref":"#/components/schemas/EndpointDeletedEvent"},"e":{"$ref":"#/components/schemas/MessageAttemptExhaustedEvent"},"a1":{"$ref":"#/components/schemas/MessageAttemptFailingEvent"}},"description":"All of the webhook types that we support"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}},"tags":[{"name":"Application","description":"Applications are where messages are sent to. In most cases you would wantto have one application for each of your users."},{"name":"Message","description":"Messages are the webhook events being sent."},{"name":"Message Attempt","description":"Attempts to deliver `Message`s to `Endpoint`s."},{"name":"Endpoint","description":"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)."},{"name":"Integration","description":"Integrations are services your users connect an application to. An integration can manage the application and it's endpoints."},{"name":"Event Type","description":"Event types are identifiers denoting the type of message being sent. Event types are primarily used to decide which events are sent to which endpoint."},{"name":"Authentication","description":"Easily give your users access to our pre-built management UI."},{"name":"Health","description":"Health checks for the API."},{"name":"Webhooks","description":"The webhooks the Svix service sends to notify you of events."}],"x-tagGroups":[{"name":"General","tags":["Application","Event Type"]},{"name":"Application specific","tags":["Authentication","Endpoint","Message","Message Attempt","Integration"]},{"name":"Utility","tags":["Health"]},{"name":"Webhooks","tags":["Webhooks"]}],"x-webhooks":{"EndpointDisabledEvent":{"post":{"tags":["Webhooks"],"summary":"EndpointDisabledEvent","description":"Sent when an endpoint has been automatically disabled after continuous failures.","operationId":"EndpointDisabledEvent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointDisabledEvent"}}}},"responses":{"2XX":{"description":"Return any 2XX status to indicate that the data was received successfully"}}}},"EndpointCreatedEvent":{"post":{"tags":["Webhooks"],"summary":"EndpointCreatedEvent","description":"Sent when an endpoint is created.","operationId":"EndpointCreatedEvent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointCreatedEvent"}}}},"responses":{"2XX":{"description":"Return any 2XX status to indicate that the data was received successfully"}}}},"EndpointUpdatedEvent":{"post":{"tags":["Webhooks"],"summary":"EndpointUpdatedEvent","description":"Sent when an endpoint is updated.","operationId":"EndpointUpdatedEvent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointUpdatedEvent"}}}},"responses":{"2XX":{"description":"Return any 2XX status to indicate that the data was received successfully"}}}},"EndpointDeletedEvent":{"post":{"tags":["Webhooks"],"summary":"EndpointDeletedEvent","description":"Sent when an endpoint is deleted.","operationId":"EndpointDeletedEvent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointDeletedEvent"}}}},"responses":{"2XX":{"description":"Return any 2XX status to indicate that the data was received successfully"}}}},"MessageAttemptExhaustedEvent":{"post":{"tags":["Webhooks"],"summary":"MessageAttemptExhaustedEvent","description":"Sent when a message delivery has failed (all of the retry attempts have been exhausted).","operationId":"MessageAttemptExhaustedEvent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageAttemptExhaustedEvent"}}}},"responses":{"2XX":{"description":"Return any 2XX status to indicate that the data was received successfully"}}}},"MessageAttemptFailingEvent":{"post":{"tags":["Webhooks"],"summary":"MessageAttemptFailingEvent","description":"Sent after a message has been failing for a few times.\nIt's sent on the fourth failure. It complements `message.attempt.exhausted` which is sent after the last failure.","operationId":"MessageAttemptFailingEvent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageAttemptFailingEvent"}}}},"responses":{"2XX":{"description":"Return any 2XX status to indicate that the data was received successfully"}}}}}} \ No newline at end of file +{ + "components": { + "schemas": { + "AppPortalAccessIn": { + "properties": { + "featureFlags": { + "description": "The set of feature flags the created token will have access to.", + "example": [], + "items": { + "example": "cool-new-feature", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "AppPortalAccessOut": { + "properties": { + "token": { + "example": "appsk_kV3ts5tKPNJN4Dl25cMTfUNdmabxbX0O", + "type": "string" + }, + "url": { + "example": "https://app.svix.com/login#key=eyJhcHBJZCI6ICJhcHBfMXRSdFl", + "format": "uri", + "maxLength": 65536, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "token", + "url" + ], + "type": "object" + }, + "ApplicationIn": { + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "default": {}, + "type": "object" + }, + "name": { + "example": "My first application", + "minLength": 1, + "type": "string" + }, + "rateLimit": { + "format": "uint16", + "minimum": 1, + "nullable": true, + "type": "integer" + }, + "uid": { + "description": "Optional unique identifier for the application", + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "ApplicationOut": { + "properties": { + "createdAt": { + "format": "date-time", + "type": "string" + }, + "id": { + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "example": "My first application", + "type": "string" + }, + "rateLimit": { + "format": "uint16", + "minimum": 0, + "nullable": true, + "type": "integer" + }, + "uid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "createdAt", + "id", + "metadata", + "name", + "updatedAt" + ], + "type": "object" + }, + "ApplicationPatch": { + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "type": "string" + }, + "rateLimit": { + "format": "uint16", + "minimum": 0, + "nullable": true, + "type": "integer" + }, + "uid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + } + }, + "type": "object" + }, + "BackgroundTaskStatus": { + "enum": [ + "running" + ], + "type": "string" + }, + "BackgroundTaskType": { + "enum": [ + "endpoint.recover" + ], + "type": "string" + }, + "DashboardAccessOut": { + "properties": { + "token": { + "example": "appsk_kV3ts5tKPNJN4Dl25cMTfUNdmabxbX0O", + "type": "string" + }, + "url": { + "example": "https://app.svix.com/login#key=eyJhcHBJZCI6ICJhcHBfMXRSdFl", + "format": "uri", + "maxLength": 65536, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "token", + "url" + ], + "type": "object" + }, + "EndpointCreatedEvent": { + "description": "Sent when an endpoint is created.", + "properties": { + "data": { + "$ref": "#/components/schemas/EndpointCreatedEventData" + }, + "type": { + "default": "endpoint.created", + "enum": [ + "endpoint.created" + ], + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "type": "object" + }, + "EndpointCreatedEventData": { + "description": "Sent when an endpoint is created, updated, or deleted", + "properties": { + "appId": { + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "appUid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "endpointUid": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + } + }, + "required": [ + "appId", + "endpointId" + ], + "type": "object" + }, + "EndpointDeletedEvent": { + "description": "Sent when an endpoint is deleted.", + "properties": { + "data": { + "$ref": "#/components/schemas/EndpointDeletedEventData" + }, + "type": { + "default": "endpoint.deleted", + "enum": [ + "endpoint.deleted" + ], + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "type": "object" + }, + "EndpointDeletedEventData": { + "description": "Sent when an endpoint is created, updated, or deleted", + "properties": { + "appId": { + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "appUid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "endpointUid": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + } + }, + "required": [ + "appId", + "endpointId" + ], + "type": "object" + }, + "EndpointDisabledEvent": { + "description": "Sent when an endpoint has been automatically disabled after continuous failures.", + "properties": { + "data": { + "$ref": "#/components/schemas/EndpointDisabledEventData" + }, + "type": { + "default": "endpoint.disabled", + "enum": [ + "endpoint.disabled" + ], + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "type": "object" + }, + "EndpointDisabledEventData": { + "description": "Sent when an endpoint has been automatically disabled after continuous failures.", + "properties": { + "appId": { + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "appUid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "endpointUid": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "failSince": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "appId", + "endpointId", + "failSince" + ], + "type": "object" + }, + "EndpointHeadersIn": { + "properties": { + "headers": { + "additionalProperties": { + "type": "string" + }, + "example": { + "X-Example": "123", + "X-Foobar": "Bar" + }, + "type": "object" + } + }, + "required": [ + "headers" + ], + "type": "object" + }, + "EndpointHeadersOut": { + "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.", + "properties": { + "headers": { + "additionalProperties": { + "type": "string" + }, + "example": { + "X-Example": "123", + "X-Foobar": "Bar" + }, + "type": "object" + }, + "sensitive": { + "example": [ + "Authorization" + ], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "headers", + "sensitive" + ], + "type": "object" + }, + "EndpointHeadersPatchIn": { + "properties": { + "headers": { + "additionalProperties": { + "nullable": true, + "type": "string" + }, + "example": { + "X-Example": "123", + "X-Foobar": "Bar" + }, + "type": "object" + } + }, + "required": [ + "headers" + ], + "type": "object" + }, + "EndpointIn": { + "properties": { + "channels": { + "description": "List of message channels this endpoint listens to (omit for all)", + "example": [ + "project_123", + "group_2" + ], + "items": { + "example": "project_1337", + "maxLength": 128, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "description": { + "default": "", + "example": "An example endpoint name", + "type": "string" + }, + "disabled": { + "default": false, + "example": false, + "type": "boolean" + }, + "filterTypes": { + "example": [ + "user.signup", + "user.deleted" + ], + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "default": {}, + "type": "object" + }, + "rateLimit": { + "format": "uint16", + "minimum": 1, + "nullable": true, + "type": "integer" + }, + "secret": { + "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.", + "example": "whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD", + "nullable": true, + "pattern": "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$", + "type": "string" + }, + "uid": { + "description": "Optional unique identifier for the endpoint", + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "url": { + "example": "https://example.com/webhook/", + "format": "uri", + "maxLength": 65536, + "minLength": 1, + "type": "string" + }, + "version": { + "default": 1, + "deprecated": true, + "example": 1, + "format": "uint16", + "minimum": 1, + "nullable": true, + "type": "integer" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "EndpointMessageOut": { + "description": "A model containing information on a given message plus additional fields on the last attempt for that message.", + "properties": { + "channels": { + "description": "List of free-form identifiers that endpoints can filter by", + "example": [ + "project_123", + "group_2" + ], + "items": { + "example": "project_1337", + "maxLength": 128, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "eventId": { + "description": "Optional unique identifier for the message", + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "eventType": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "id": { + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "nextAttempt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "payload": { + "example": { + "email": "test@example.com", + "username": "test_user" + }, + "type": "object" + }, + "status": { + "$ref": "#/components/schemas/MessageStatus" + }, + "timestamp": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "eventType", + "id", + "payload", + "status", + "timestamp" + ], + "type": "object" + }, + "EndpointOut": { + "properties": { + "channels": { + "description": "List of message channels this endpoint listens to (omit for all)", + "example": [ + "project_123", + "group_2" + ], + "items": { + "example": "project_1337", + "maxLength": 128, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "description": { + "description": "An example endpoint name", + "type": "string" + }, + "disabled": { + "default": false, + "example": false, + "type": "boolean" + }, + "filterTypes": { + "example": [ + "user.signup", + "user.deleted" + ], + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "id": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "rateLimit": { + "format": "uint16", + "minimum": 0, + "nullable": true, + "type": "integer" + }, + "uid": { + "description": "Optional unique identifier for the endpoint", + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://example.com/webhook/", + "format": "uri", + "maxLength": 65536, + "minLength": 1, + "type": "string" + }, + "version": { + "deprecated": true, + "example": 1, + "format": "uint16", + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "createdAt", + "description", + "id", + "metadata", + "updatedAt", + "url", + "version" + ], + "type": "object" + }, + "EndpointPatch": { + "properties": { + "channels": { + "items": { + "example": "project_1337", + "maxLength": 128, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "description": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "filterTypes": { + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "rateLimit": { + "format": "uint16", + "minimum": 0, + "nullable": true, + "type": "integer" + }, + "secret": { + "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.", + "example": "whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD", + "nullable": true, + "pattern": "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$", + "type": "string" + }, + "uid": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "version": { + "deprecated": true, + "example": 1, + "format": "uint16", + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "EndpointSecretOut": { + "properties": { + "key": { + "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.", + "example": "whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD", + "pattern": "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$", + "type": "string" + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "EndpointSecretRotateIn": { + "properties": { + "key": { + "default": null, + "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.", + "example": "whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD", + "nullable": true, + "pattern": "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$", + "type": "string" + } + }, + "type": "object" + }, + "EndpointStats": { + "properties": { + "fail": { + "format": "int64", + "type": "integer" + }, + "pending": { + "format": "int64", + "type": "integer" + }, + "sending": { + "format": "int64", + "type": "integer" + }, + "success": { + "format": "int64", + "type": "integer" + } + }, + "required": [ + "fail", + "pending", + "sending", + "success" + ], + "type": "object" + }, + "EndpointStatsRange": { + "properties": { + "since": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "until": { + "format": "date-time", + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "EndpointUpdate": { + "properties": { + "channels": { + "description": "List of message channels this endpoint listens to (omit for all)", + "example": [ + "project_123", + "group_2" + ], + "items": { + "example": "project_1337", + "maxLength": 128, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "description": { + "default": "", + "example": "An example endpoint name", + "type": "string" + }, + "disabled": { + "default": false, + "example": false, + "type": "boolean" + }, + "filterTypes": { + "example": [ + "user.signup", + "user.deleted" + ], + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "default": {}, + "type": "object" + }, + "rateLimit": { + "format": "uint16", + "minimum": 1, + "nullable": true, + "type": "integer" + }, + "uid": { + "description": "Optional unique identifier for the endpoint", + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "url": { + "example": "https://example.com/webhook/", + "format": "uri", + "maxLength": 65536, + "minLength": 1, + "type": "string" + }, + "version": { + "default": 1, + "deprecated": true, + "example": 1, + "format": "uint16", + "minimum": 1, + "nullable": true, + "type": "integer" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "EndpointUpdatedEvent": { + "description": "Sent when an endpoint is updated.", + "properties": { + "data": { + "$ref": "#/components/schemas/EndpointUpdatedEventData" + }, + "type": { + "default": "endpoint.updated", + "enum": [ + "endpoint.updated" + ], + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "type": "object" + }, + "EndpointUpdatedEventData": { + "description": "Sent when an endpoint is created, updated, or deleted", + "properties": { + "appId": { + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "appUid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "endpointUid": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + } + }, + "required": [ + "appId", + "endpointId" + ], + "type": "object" + }, + "EventExampleIn": { + "properties": { + "eventType": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + } + }, + "required": [ + "eventType" + ], + "type": "object" + }, + "EventTypeIn": { + "properties": { + "archived": { + "default": false, + "example": false, + "type": "boolean" + }, + "deprecated": { + "default": false, + "type": "boolean" + }, + "description": { + "example": "A user has signed up", + "type": "string" + }, + "featureFlag": { + "example": "cool-new-feature", + "maxLength": 256, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "name": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "schemas": { + "additionalProperties": { + "type": "object" + }, + "description": "The schema for the event type for a specific version as a JSON schema.", + "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, + "type": "object" + } + }, + "required": [ + "description", + "name" + ], + "type": "object" + }, + "EventTypeOut": { + "properties": { + "archived": { + "default": false, + "example": false, + "type": "boolean" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "deprecated": { + "type": "boolean" + }, + "description": { + "example": "A user has signed up", + "type": "string" + }, + "featureFlag": { + "example": "cool-new-feature", + "maxLength": 256, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "name": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "schemas": { + "additionalProperties": { + "type": "object" + }, + "description": "The schema for the event type for a specific version as a JSON schema.", + "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, + "type": "object" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "createdAt", + "deprecated", + "description", + "name", + "updatedAt" + ], + "type": "object" + }, + "EventTypePatch": { + "properties": { + "archived": { + "type": "boolean" + }, + "deprecated": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "featureFlag": { + "example": "cool-new-feature", + "maxLength": 256, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "schemas": { + "additionalProperties": { + "type": "object" + }, + "example": { + "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, + "type": "object" + } + }, + "type": "object" + }, + "EventTypeUpdate": { + "properties": { + "archived": { + "default": false, + "example": false, + "type": "boolean" + }, + "deprecated": { + "default": false, + "type": "boolean" + }, + "description": { + "example": "A user has signed up", + "type": "string" + }, + "featureFlag": { + "example": "cool-new-feature", + "maxLength": 256, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "schemas": { + "additionalProperties": { + "type": "object" + }, + "description": "The schema for the event type for a specific version as a JSON schema.", + "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, + "type": "object" + } + }, + "required": [ + "description" + ], + "type": "object" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationErrorItem" + }, + "type": "array" + } + }, + "required": [ + "detail" + ], + "type": "object" + }, + "HttpErrorOut": { + "properties": { + "code": { + "type": "string" + }, + "detail": { + "type": "string" + } + }, + "required": [ + "code", + "detail" + ], + "title": "HttpError", + "type": "object" + }, + "ListResponse_ApplicationOut_": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/ApplicationOut" + }, + "type": "array" + }, + "done": { + "type": "boolean" + }, + "iterator": { + "example": "iterator", + "nullable": true, + "type": "string" + }, + "prevIterator": { + "example": "-iterator", + "nullable": true, + "type": "string" + } + }, + "required": [ + "data", + "done" + ], + "type": "object" + }, + "ListResponse_EndpointMessageOut_": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/EndpointMessageOut" + }, + "type": "array" + }, + "done": { + "type": "boolean" + }, + "iterator": { + "example": "iterator", + "nullable": true, + "type": "string" + }, + "prevIterator": { + "example": "-iterator", + "nullable": true, + "type": "string" + } + }, + "required": [ + "data", + "done" + ], + "type": "object" + }, + "ListResponse_EndpointOut_": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/EndpointOut" + }, + "type": "array" + }, + "done": { + "type": "boolean" + }, + "iterator": { + "example": "iterator", + "nullable": true, + "type": "string" + }, + "prevIterator": { + "example": "-iterator", + "nullable": true, + "type": "string" + } + }, + "required": [ + "data", + "done" + ], + "type": "object" + }, + "ListResponse_EventTypeOut_": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/EventTypeOut" + }, + "type": "array" + }, + "done": { + "type": "boolean" + }, + "iterator": { + "example": "iterator", + "nullable": true, + "type": "string" + }, + "prevIterator": { + "example": "-iterator", + "nullable": true, + "type": "string" + } + }, + "required": [ + "data", + "done" + ], + "type": "object" + }, + "ListResponse_MessageAttemptEndpointOut_": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/MessageAttemptEndpointOut" + }, + "type": "array" + }, + "done": { + "type": "boolean" + }, + "iterator": { + "example": "iterator", + "nullable": true, + "type": "string" + }, + "prevIterator": { + "example": "-iterator", + "nullable": true, + "type": "string" + } + }, + "required": [ + "data", + "done" + ], + "type": "object" + }, + "ListResponse_MessageAttemptOut_": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/MessageAttemptOut" + }, + "type": "array" + }, + "done": { + "type": "boolean" + }, + "iterator": { + "example": "iterator", + "nullable": true, + "type": "string" + }, + "prevIterator": { + "example": "-iterator", + "nullable": true, + "type": "string" + } + }, + "required": [ + "data", + "done" + ], + "type": "object" + }, + "ListResponse_MessageEndpointOut_": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/MessageEndpointOut" + }, + "type": "array" + }, + "done": { + "type": "boolean" + }, + "iterator": { + "example": "iterator", + "nullable": true, + "type": "string" + }, + "prevIterator": { + "example": "-iterator", + "nullable": true, + "type": "string" + } + }, + "required": [ + "data", + "done" + ], + "type": "object" + }, + "ListResponse_MessageOut_": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/MessageOut" + }, + "type": "array" + }, + "done": { + "type": "boolean" + }, + "iterator": { + "example": "iterator", + "nullable": true, + "type": "string" + }, + "prevIterator": { + "example": "-iterator", + "nullable": true, + "type": "string" + } + }, + "required": [ + "data", + "done" + ], + "type": "object" + }, + "MessageAttempetLast": { + "properties": { + "id": { + "example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "responseStatusCode": { + "format": "int16", + "type": "integer" + }, + "timestamp": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "id", + "responseStatusCode", + "timestamp" + ], + "type": "object" + }, + "MessageAttemptEndpointOut": { + "properties": { + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "id": { + "example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "msgId": { + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "response": { + "example": "{}", + "type": "string" + }, + "responseDurationMs": { + "description": "Response duration in milliseconds.\n\nCurrently, this is not actually recorded in the OSS version of Svix, so this field always has a value of `0`.", + "format": "int64", + "type": "integer" + }, + "responseStatusCode": { + "example": 200, + "format": "int16", + "type": "integer" + }, + "status": { + "$ref": "#/components/schemas/MessageStatus" + }, + "timestamp": { + "format": "date-time", + "type": "string" + }, + "triggerType": { + "$ref": "#/components/schemas/MessageAttemptTriggerType" + }, + "url": { + "example": "https://example.com/webhook/", + "format": "uri", + "maxLength": 65536, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "endpointId", + "id", + "msgId", + "response", + "responseDurationMs", + "responseStatusCode", + "status", + "timestamp", + "triggerType", + "url" + ], + "type": "object" + }, + "MessageAttemptExhaustedEvent": { + "description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted).", + "properties": { + "data": { + "$ref": "#/components/schemas/MessageAttemptExhaustedEventData" + }, + "type": { + "default": "message.attempt.exhausted", + "enum": [ + "message.attempt.exhausted" + ], + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "type": "object" + }, + "MessageAttemptExhaustedEventData": { + "description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted) as a \"message.attempt.exhausted\" type or after it's failed four times as a \"message.attempt.failing\" event.", + "properties": { + "appId": { + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "appUid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "lastAttempt": { + "$ref": "#/components/schemas/MessageAttempetLast" + }, + "msgEventId": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "msgId": { + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + } + }, + "required": [ + "appId", + "endpointId", + "lastAttempt", + "msgId" + ], + "type": "object" + }, + "MessageAttemptFailingEvent": { + "description": "Sent after a message has been failing for a few times.\nIt's sent on the fourth failure. It complements `message.attempt.exhausted` which is sent after the last failure.", + "properties": { + "data": { + "$ref": "#/components/schemas/MessageAttemptFailingEventData" + }, + "type": { + "default": "message.attempt.failing", + "enum": [ + "message.attempt.failing" + ], + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "type": "object" + }, + "MessageAttemptFailingEventData": { + "description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted) as a \"message.attempt.exhausted\" type or after it's failed four times as a \"message.attempt.failing\" event.", + "properties": { + "appId": { + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "appUid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "lastAttempt": { + "$ref": "#/components/schemas/MessageAttempetLast" + }, + "msgEventId": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "msgId": { + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + } + }, + "required": [ + "appId", + "endpointId", + "lastAttempt", + "msgId" + ], + "type": "object" + }, + "MessageAttemptOut": { + "properties": { + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "id": { + "example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "msgId": { + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "response": { + "example": "{}", + "type": "string" + }, + "responseDurationMs": { + "description": "Response duration in milliseconds.\n\nCurrently, this is not actually recorded in the OSS version of Svix, so this field always has a value of `0`.", + "format": "int64", + "type": "integer" + }, + "responseStatusCode": { + "example": 200, + "format": "int16", + "type": "integer" + }, + "status": { + "$ref": "#/components/schemas/MessageStatus" + }, + "timestamp": { + "format": "date-time", + "type": "string" + }, + "triggerType": { + "$ref": "#/components/schemas/MessageAttemptTriggerType" + }, + "url": { + "example": "https://example.com/webhook/", + "format": "uri", + "maxLength": 65536, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "endpointId", + "id", + "msgId", + "response", + "responseDurationMs", + "responseStatusCode", + "status", + "timestamp", + "triggerType", + "url" + ], + "type": "object" + }, + "MessageAttemptRecoveredEvent": { + "description": "Sent on a successful dispatch after an earlier failure op webhook has already been sent.", + "properties": { + "data": { + "$ref": "#/components/schemas/MessageAttemptRecoveredEventData" + }, + "type": { + "default": "message.attempt.recovered", + "enum": [ + "message.attempt.recovered" + ], + "type": "string" + } + }, + "required": [ + "data", + "type" + ], + "type": "object" + }, + "MessageAttemptRecoveredEventData": { + "description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted) as a \"message.attempt.exhausted\" type or after it's failed four times as a \"message.attempt.failing\" event.", + "properties": { + "appId": { + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "appUid": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "endpointId": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "lastAttempt": { + "$ref": "#/components/schemas/MessageAttempetLast" + }, + "msgEventId": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "msgId": { + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + } + }, + "required": [ + "appId", + "endpointId", + "lastAttempt", + "msgId" + ], + "type": "object" + }, + "MessageAttemptTriggerType": { + "description": "The reason an attempt was made:\n- Scheduled = 0\n- Manual = 1", + "enum": [ + 0, + 1 + ], + "title": "MessageAttemptTriggerType", + "type": "integer", + "x-enum-varnames": [ + "Scheduled", + "Manual" + ] + }, + "MessageEndpointOut": { + "properties": { + "channels": { + "description": "List of message channels this endpoint listens to (omit for all)", + "example": [ + "project_123", + "group_2" + ], + "items": { + "example": "project_1337", + "maxLength": 128, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "description": { + "description": "An example endpoint name", + "type": "string" + }, + "disabled": { + "default": false, + "example": false, + "type": "boolean" + }, + "filterTypes": { + "example": [ + "user.signup", + "user.deleted" + ], + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "id": { + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "nextAttempt": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "rateLimit": { + "format": "uint16", + "minimum": 0, + "nullable": true, + "type": "integer" + }, + "status": { + "$ref": "#/components/schemas/MessageStatus" + }, + "uid": { + "description": "Optional unique identifier for the endpoint", + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + }, + "url": { + "example": "https://example.com/webhook/", + "format": "uri", + "maxLength": 65536, + "minLength": 1, + "type": "string" + }, + "version": { + "deprecated": true, + "example": 1, + "format": "uint16", + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "createdAt", + "description", + "id", + "status", + "updatedAt", + "url", + "version" + ], + "type": "object" + }, + "MessageIn": { + "properties": { + "channels": { + "description": "List of free-form identifiers that endpoints can filter by", + "example": [ + "project_123", + "group_2" + ], + "items": { + "example": "project_1337", + "maxLength": 128, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "eventId": { + "description": "Optional unique identifier for the message", + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "eventType": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "payload": { + "example": { + "email": "test@example.com", + "username": "test_user" + }, + "type": "object" + }, + "payloadRetentionPeriod": { + "default": 90, + "example": 90, + "format": "int64", + "maximum": 90, + "minimum": 5, + "type": "integer" + } + }, + "required": [ + "eventType", + "payload" + ], + "type": "object" + }, + "MessageOut": { + "properties": { + "channels": { + "description": "List of free-form identifiers that endpoints can filter by", + "example": [ + "project_123", + "group_2" + ], + "items": { + "example": "project_1337", + "maxLength": 128, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "eventId": { + "description": "Optional unique identifier for the message", + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "eventType": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "id": { + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "payload": { + "example": { + "email": "test@example.com", + "username": "test_user" + }, + "type": "object" + }, + "timestamp": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "eventType", + "id", + "payload", + "timestamp" + ], + "type": "object" + }, + "MessageStatus": { + "description": "The sending status of the message:\n- Success = 0\n- Pending = 1\n- Fail = 2\n- Sending = 3", + "enum": [ + 0, + 1, + 2, + 3 + ], + "title": "MessageStatus", + "type": "integer", + "x-enum-varnames": [ + "Success", + "Pending", + "Fail", + "Sending" + ] + }, + "Ordering": { + "description": "Defines the ordering in a listing of results.", + "enum": [ + "ascending", + "descending" + ], + "type": "string" + }, + "RecoverIn": { + "properties": { + "since": { + "format": "date-time", + "type": "string" + }, + "until": { + "format": "date-time", + "nullable": true, + "type": "string" + } + }, + "required": [ + "since" + ], + "type": "object" + }, + "RecoverOut": { + "properties": { + "id": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/BackgroundTaskStatus" + }, + "task": { + "$ref": "#/components/schemas/BackgroundTaskType" + } + }, + "required": [ + "id", + "status", + "task" + ], + "type": "object" + }, + "StatusCodeClass": { + "description": "The different classes of HTTP status codes:\n- CodeNone = 0\n- Code1xx = 100\n- Code2xx = 200\n- Code3xx = 300\n- Code4xx = 400\n- Code5xx = 500", + "enum": [ + 0, + 100, + 200, + 300, + 400, + 500 + ], + "title": "StatusCodeClass", + "type": "integer", + "x-enum-varnames": [ + "CodeNone", + "Code1xx", + "Code2xx", + "Code3xx", + "Code4xx", + "Code5xx" + ] + }, + "ValidationErrorItem": { + "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.", + "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.", + "items": { + "type": "string" + }, + "type": "array" + }, + "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" + ], + "type": "object" + } + } + }, + "info": { + "description": "", + "title": "Svix API", + "version": "1.1.1", + "x-logo": { + "altText": "Svix Logo", + "url": "https://www.svix.com/static/img/brand-padded.svg" + } + }, + "openapi": "3.0.2", + "paths": { + "/api/v1/app": { + "get": { + "description": "List of all the organization's applications.", + "operationId": "v1.application.list", + "parameters": [ + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "The sorting order of the returned items", + "in": "query", + "name": "order", + "schema": { + "$ref": "#/components/schemas/Ordering", + "description": "The sorting order of the returned items", + "nullable": true + }, + "style": "form" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_ApplicationOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Applications", + "tags": [ + "Application" + ] + }, + "post": { + "description": "Create a new application.", + "operationId": "v1.application.create", + "parameters": [ + { + "description": "Get an existing application, or create a new one if doesn't exist. It's two separate functions in the libs.", + "in": "query", + "name": "get_if_exists", + "schema": { + "default": false, + "description": "Get an existing application, or create a new one if doesn't exist. It's two separate functions in the libs.", + "type": "boolean" + }, + "style": "form" + }, + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationIn" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationOut" + } + } + }, + "description": "" + }, + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Create Application", + "tags": [ + "Application" + ] + } + }, + "/api/v1/app/{app_id}": { + "delete": { + "description": "Delete an application.", + "operationId": "v1.application.delete", + "responses": { + "204": { + "description": "no content" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Delete Application", + "tags": [ + "Application" + ] + }, + "get": { + "description": "Get an application.", + "operationId": "v1.application.get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Get Application", + "tags": [ + "Application" + ] + }, + "patch": { + "description": "Partially update an application.", + "operationId": "patch_application", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Patch Application", + "tags": [ + "Application" + ] + }, + "put": { + "description": "Update an application.", + "operationId": "v1.application.update", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationIn" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationOut" + } + } + }, + "description": "" + }, + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApplicationOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Update Application", + "tags": [ + "Application" + ] + } + }, + "/api/v1/app/{app_id}/attempt/endpoint/{endpoint_id}": { + "get": { + "description": "List attempts by endpoint id", + "operationId": "v1.message-attempt.list-by-endpoint", + "parameters": [ + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the delivery status", + "in": "query", + "name": "status", + "schema": { + "$ref": "#/components/schemas/MessageStatus", + "description": "Filter response based on the delivery status", + "nullable": true + }, + "style": "form" + }, + { + "description": "Filter response based on the HTTP status code", + "in": "query", + "name": "status_code_class", + "schema": { + "$ref": "#/components/schemas/StatusCodeClass", + "description": "Filter response based on the HTTP status code", + "nullable": true + }, + "style": "form" + }, + { + "description": "Filter response based on the channel", + "in": "query", + "name": "channel", + "schema": { + "description": "Filter response based on the channel", + "example": "project_1337", + "maxLength": 128, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "form" + }, + { + "description": "Only include items created before a certain date", + "in": "query", + "name": "before", + "schema": { + "description": "Only include items created before a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Only include items created after a certain date", + "in": "query", + "name": "after", + "schema": { + "description": "Only include items created after a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "When `true` attempt content is included in the response", + "in": "query", + "name": "with_content", + "schema": { + "default": true, + "description": "When `true` attempt content is included in the response", + "type": "boolean" + }, + "style": "form" + }, + { + "description": "Filter response based on the event type", + "in": "query", + "name": "event_types", + "schema": { + "description": "Filter response based on the event type", + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "style": "form" + }, + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_MessageAttemptOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Attempts By Endpoint", + "tags": [ + "Message Attempt" + ] + } + }, + "/api/v1/app/{app_id}/attempt/msg/{msg_id}": { + "get": { + "description": "List attempts by message id", + "operationId": "v1.message-attempt.list-by-msg", + "parameters": [ + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the delivery status", + "in": "query", + "name": "status", + "schema": { + "$ref": "#/components/schemas/MessageStatus", + "description": "Filter response based on the delivery status", + "nullable": true + }, + "style": "form" + }, + { + "description": "Filter response based on the HTTP status code", + "in": "query", + "name": "status_code_class", + "schema": { + "$ref": "#/components/schemas/StatusCodeClass", + "description": "Filter response based on the HTTP status code", + "nullable": true + }, + "style": "form" + }, + { + "description": "Filter response based on the channel", + "in": "query", + "name": "channel", + "schema": { + "description": "Filter response based on the channel", + "example": "project_1337", + "maxLength": 128, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter the attempts based on the attempted endpoint", + "in": "query", + "name": "endpoint_id", + "schema": { + "description": "Filter the attempts based on the attempted endpoint", + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "form" + }, + { + "description": "Only include items created before a certain date", + "in": "query", + "name": "before", + "schema": { + "description": "Only include items created before a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Only include items created after a certain date", + "in": "query", + "name": "after", + "schema": { + "description": "Only include items created after a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "When `true` attempt content is included in the response", + "in": "query", + "name": "with_content", + "schema": { + "default": true, + "description": "When `true` attempt content is included in the response", + "type": "boolean" + }, + "style": "form" + }, + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "msg_id", + "required": true, + "schema": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "Filter response based on the event type", + "in": "query", + "name": "event_types", + "schema": { + "description": "Filter response based on the event type", + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "style": "form" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_MessageAttemptOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Attempts By Msg", + "tags": [ + "Message Attempt" + ] + } + }, + "/api/v1/app/{app_id}/endpoint": { + "get": { + "description": "List the application's endpoints.", + "operationId": "v1.endpoint.list", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "The sorting order of the returned items", + "in": "query", + "name": "order", + "schema": { + "$ref": "#/components/schemas/Ordering", + "description": "The sorting order of the returned items", + "nullable": true + }, + "style": "form" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_EndpointOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Endpoints", + "tags": [ + "Endpoint" + ] + }, + "post": { + "description": "Create a new endpoint for the application.\n\nWhen `secret` is `null` the secret is automatically generated (recommended)", + "operationId": "v1.endpoint.create", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointIn" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Create Endpoint", + "tags": [ + "Endpoint" + ] + } + }, + "/api/v1/app/{app_id}/endpoint/{endpoint_id}": { + "delete": { + "description": "Delete an endpoint.", + "operationId": "v1.endpoint.delete", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "204": { + "description": "no content" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Delete Endpoint", + "tags": [ + "Endpoint" + ] + }, + "get": { + "description": "Get an endpoint.", + "operationId": "v1.endpoint.get", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Get Endpoint", + "tags": [ + "Endpoint" + ] + }, + "patch": { + "description": "Partially update an endpoint.", + "operationId": "patch_endpoint", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointPatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Patch Endpoint", + "tags": [ + "Endpoint" + ] + }, + "put": { + "description": "Update an endpoint.", + "operationId": "v1.endpoint.update", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointOut" + } + } + }, + "description": "" + }, + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Update Endpoint", + "tags": [ + "Endpoint" + ] + } + }, + "/api/v1/app/{app_id}/endpoint/{endpoint_id}/headers": { + "get": { + "description": "Get the additional headers to be sent with the webhook", + "operationId": "v1.endpoint.get-headers", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointHeadersOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Get Endpoint Headers", + "tags": [ + "Endpoint" + ] + }, + "patch": { + "description": "Partially set the additional headers to be sent with the webhook", + "operationId": "v1.endpoint.patch-headers", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointHeadersPatchIn" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "no content" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Patch Endpoint Headers", + "tags": [ + "Endpoint" + ] + }, + "put": { + "description": "Set the additional headers to be sent with the webhook", + "operationId": "v1.endpoint.update-headers", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointHeadersIn" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "no content" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Update Endpoint Headers", + "tags": [ + "Endpoint" + ] + } + }, + "/api/v1/app/{app_id}/endpoint/{endpoint_id}/msg": { + "get": { + "description": "List messages for a particular endpoint. Additionally includes metadata about the latest message attempt.\n\nThe `before` parameter lets you filter all items created before a certain date and is ignored if an iterator is passed.", + "operationId": "v1.message-attempt.list-attempted-messages", + "parameters": [ + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the channel", + "in": "query", + "name": "channel", + "schema": { + "description": "Filter response based on the channel", + "example": "project_1337", + "maxLength": 128, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the delivery status", + "in": "query", + "name": "status", + "schema": { + "$ref": "#/components/schemas/MessageStatus", + "description": "Filter response based on the delivery status", + "nullable": true + }, + "style": "form" + }, + { + "description": "Only include items created before a certain date", + "in": "query", + "name": "before", + "schema": { + "description": "Only include items created before a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Only include items created after a certain date", + "in": "query", + "name": "after", + "schema": { + "description": "Only include items created after a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "When `true` message payloads are included in the response", + "in": "query", + "name": "with_content", + "schema": { + "default": true, + "description": "When `true` message payloads are included in the response", + "type": "boolean" + }, + "style": "form" + }, + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "Filter response based on the event type", + "in": "query", + "name": "event_types", + "schema": { + "description": "Filter response based on the event type", + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "style": "form" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_EndpointMessageOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Attempted Messages", + "tags": [ + "Message Attempt" + ] + } + }, + "/api/v1/app/{app_id}/endpoint/{endpoint_id}/recover": { + "post": { + "description": "Resend all failed messages since a given time.", + "operationId": "v1.endpoint.recover", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecoverIn" + } + } + }, + "required": true + }, + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecoverOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Recover Failed Webhooks", + "tags": [ + "Endpoint" + ] + } + }, + "/api/v1/app/{app_id}/endpoint/{endpoint_id}/secret": { + "get": { + "description": "Get the endpoint's signing secret.\n\nThis is used to verify the authenticity of the webhook.\nFor more information please refer to [the consuming webhooks docs](https://docs.svix.com/consuming-webhooks/).", + "operationId": "v1.endpoint.get-secret", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointSecretOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Get Endpoint Secret", + "tags": [ + "Endpoint" + ] + } + }, + "/api/v1/app/{app_id}/endpoint/{endpoint_id}/secret/rotate": { + "post": { + "description": "Rotates the endpoint's signing secret. The previous secret will be valid for the next 24 hours.", + "operationId": "v1.endpoint.rotate-secret", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointSecretRotateIn" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "no content" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Rotate Endpoint Secret", + "tags": [ + "Endpoint" + ] + } + }, + "/api/v1/app/{app_id}/endpoint/{endpoint_id}/send-example": { + "post": { + "description": "Send an example message for an event", + "operationId": "v1.endpoint.send-example", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventExampleIn" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Send Event Type Example Message", + "tags": [ + "Endpoint" + ] + } + }, + "/api/v1/app/{app_id}/endpoint/{endpoint_id}/stats": { + "get": { + "description": "Get basic statistics for the endpoint.", + "operationId": "v1.endpoint.get-stats", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "query", + "name": "since", + "schema": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "in": "query", + "name": "until", + "schema": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointStats" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Endpoint Stats", + "tags": [ + "Endpoint" + ] + } + }, + "/api/v1/app/{app_id}/msg": { + "get": { + "description": "List all of the application's messages.\n\nThe `before` parameter lets you filter all items created before a certain date and is ignored if an iterator is passed.\nThe `after` parameter lets you filter all items created after a certain date and is ignored if an iterator is passed.\n`before` and `after` cannot be used simultaneously.", + "operationId": "v1.message.list", + "parameters": [ + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the channel", + "in": "query", + "name": "channel", + "schema": { + "description": "Filter response based on the channel", + "example": "project_1337", + "maxLength": 128, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "form" + }, + { + "description": "Only include items created before a certain date", + "in": "query", + "name": "before", + "schema": { + "description": "Only include items created before a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Only include items created after a certain date", + "in": "query", + "name": "after", + "schema": { + "description": "Only include items created after a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "When `true` message payloads are included in the response", + "in": "query", + "name": "with_content", + "schema": { + "default": true, + "description": "When `true` message payloads are included in the response", + "type": "boolean" + }, + "style": "form" + }, + { + "description": "Filter response based on the event type", + "in": "query", + "name": "event_types", + "schema": { + "description": "Filter response based on the event type", + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "style": "form" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_MessageOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Messages", + "tags": [ + "Message" + ] + }, + "post": { + "description": "Creates a new message and dispatches it to all of the application's endpoints.\n\nThe `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.\nIf a message with the same `eventId` already exists for any application in your environment, a 409 conflict error will be returned.\n\nThe `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.\nMessages 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.\n\nThe `payload` property is the webhook's body (the actual webhook message). Svix supports payload sizes of up to ~350kb, though it's generally a good idea to keep webhook payloads small, probably no larger than 40kb.", + "operationId": "v1.message.create", + "parameters": [ + { + "description": "When `true` message payloads are included in the response", + "in": "query", + "name": "with_content", + "schema": { + "default": true, + "description": "When `true` message payloads are included in the response", + "type": "boolean" + }, + "style": "form" + }, + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageIn" + } + } + }, + "required": true + }, + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Create Message", + "tags": [ + "Message" + ] + } + }, + "/api/v1/app/{app_id}/msg/{msg_id}": { + "get": { + "description": "Get a message by its ID or eventID.", + "operationId": "v1.message.get", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "msg_id", + "required": true, + "schema": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "When `true` message payloads are included in the response", + "in": "query", + "name": "with_content", + "schema": { + "default": true, + "description": "When `true` message payloads are included in the response", + "type": "boolean" + }, + "style": "form" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Get Message", + "tags": [ + "Message" + ] + } + }, + "/api/v1/app/{app_id}/msg/{msg_id}/attempt": { + "get": { + "description": "Deprecated: Please use \"List Attempts by Endpoint\" and \"List Attempts by Msg\" instead.\n\n`msg_id`: Use a message id or a message `eventId`", + "operationId": "v1.message-attempt.list-by-msg-deprecated", + "parameters": [ + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter the attempts based on the attempted endpoint", + "in": "query", + "name": "endpoint_id", + "schema": { + "description": "Filter the attempts based on the attempted endpoint", + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the channel", + "in": "query", + "name": "channel", + "schema": { + "description": "Filter response based on the channel", + "example": "project_1337", + "maxLength": 128, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the delivery status", + "in": "query", + "name": "status", + "schema": { + "$ref": "#/components/schemas/MessageStatus", + "description": "Filter response based on the delivery status", + "nullable": true + }, + "style": "form" + }, + { + "description": "Only include items created before a certain date", + "in": "query", + "name": "before", + "schema": { + "description": "Only include items created before a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Only include items created after a certain date", + "in": "query", + "name": "after", + "schema": { + "description": "Only include items created after a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the event type", + "in": "query", + "name": "event_types", + "schema": { + "description": "Filter response based on the event type", + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "style": "form" + }, + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "msg_id", + "required": true, + "schema": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_MessageAttemptOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Messageattempts", + "tags": [ + "Message Attempt" + ] + } + }, + "/api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}": { + "get": { + "description": "`msg_id`: Use a message id or a message `eventId`", + "operationId": "v1.message-attempt.get", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "msg_id", + "required": true, + "schema": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "attempt_id", + "required": true, + "schema": { + "example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageAttemptOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Get Messageattempt", + "tags": [ + "Message Attempt" + ] + } + }, + "/api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}/content": { + "delete": { + "description": "Deletes the given attempt's response body. Useful when an endpoint accidentally returned sensitive content.", + "operationId": "v1.message-attempt.expunge-content", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "msg_id", + "required": true, + "schema": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "attempt_id", + "required": true, + "schema": { + "example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Expunge Attempt Content", + "tags": [ + "Message Attempt" + ] + } + }, + "/api/v1/app/{app_id}/msg/{msg_id}/content": { + "delete": { + "description": "Delete the given message's payload. Useful in cases when a message was accidentally sent with sensitive content.\n\nThe message can't be replayed or resent once its payload has been deleted or expired.", + "operationId": "v1.message.expunge-content", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "msg_id", + "required": true, + "schema": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Expunge Message Content", + "tags": [ + "Message" + ] + } + }, + "/api/v1/app/{app_id}/msg/{msg_id}/endpoint": { + "get": { + "description": "`msg_id`: Use a message id or a message `eventId`", + "operationId": "v1.message-attempt.list-attempted-destinations", + "parameters": [ + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "msg_id", + "required": true, + "schema": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_MessageEndpointOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Attempted Destinations", + "tags": [ + "Message Attempt" + ] + } + }, + "/api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/attempt": { + "get": { + "description": "DEPRECATED: please use list_attempts with endpoint_id as a query parameter instead.\n\nList the message attempts for a particular endpoint.\n\nReturning the endpoint.\n\nThe `before` parameter lets you filter all items created before a certain date and is ignored if an iterator is passed.", + "operationId": "v1.message-attempt.list-by-endpoint-deprecated", + "parameters": [ + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the channel", + "in": "query", + "name": "channel", + "schema": { + "description": "Filter response based on the channel", + "example": "project_1337", + "maxLength": 128, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the delivery status", + "in": "query", + "name": "status", + "schema": { + "$ref": "#/components/schemas/MessageStatus", + "description": "Filter response based on the delivery status", + "nullable": true + }, + "style": "form" + }, + { + "description": "Only include items created before a certain date", + "in": "query", + "name": "before", + "schema": { + "description": "Only include items created before a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Only include items created after a certain date", + "in": "query", + "name": "after", + "schema": { + "description": "Only include items created after a certain date", + "format": "date-time", + "nullable": true, + "type": "string" + }, + "style": "form" + }, + { + "description": "Filter response based on the event type", + "in": "query", + "name": "event_types", + "schema": { + "description": "Filter response based on the event type", + "items": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "nullable": true, + "type": "array", + "uniqueItems": true + }, + "style": "form" + }, + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "msg_id", + "required": true, + "schema": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_MessageAttemptEndpointOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Attempts For Endpoint", + "tags": [ + "Message Attempt" + ] + } + }, + "/api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/resend": { + "post": { + "description": "Resend a message to the specified endpoint.", + "operationId": "v1.message-attempt.resend", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "msg_id", + "required": true, + "schema": { + "example": "unique-msg-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "in": "path", + "name": "endpoint_id", + "required": true, + "schema": { + "example": "unique-ep-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "202": { + "description": "no content" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Resend Webhook", + "tags": [ + "Message Attempt" + ] + } + }, + "/api/v1/auth/app-portal-access/{app_id}": { + "post": { + "description": "Use this function to get magic links (and authentication codes) for connecting your users to the Consumer Application Portal.", + "operationId": "v1.authentication.app-portal-access", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPortalAccessIn" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPortalAccessOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "App Portal Access", + "tags": [ + "Authentication" + ] + } + }, + "/api/v1/auth/dashboard-access/{app_id}": { + "post": { + "description": "DEPRECATED: Please use `app-portal-access` instead.\n\nUse this function to get magic links (and authentication codes) for connecting your users to the Consumer Application Portal.", + "operationId": "v1.authentication.dashboard-access", + "parameters": [ + { + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "example": "unique-app-identifier", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + }, + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DashboardAccessOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Dashboard Access", + "tags": [ + "Authentication" + ] + } + }, + "/api/v1/auth/logout": { + "post": { + "description": "\nLogout an app token.\n\nTrying to log out other tokens will fail.\n", + "operationId": "logout_api_v1_auth_logout__post", + "parameters": [ + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "204": { + "description": "no content" + } + }, + "summary": "Logout", + "tags": [ + "Authentication" + ] + } + }, + "/api/v1/event-type": { + "get": { + "description": "Return the list of event types.", + "operationId": "v1.event-type.list", + "parameters": [ + { + "description": "Limit the number of returned items", + "in": "query", + "name": "limit", + "schema": { + "description": "Limit the number of returned items", + "format": "uint64", + "minimum": 0, + "type": "integer" + }, + "style": "form" + }, + { + "description": "The iterator returned from a prior invocation", + "in": "query", + "name": "iterator", + "schema": { + "description": "The iterator returned from a prior invocation", + "example": "user.signup", + "maxLength": 256, + "nullable": true, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "form" + }, + { + "description": "The sorting order of the returned items", + "in": "query", + "name": "order", + "schema": { + "$ref": "#/components/schemas/Ordering", + "description": "The sorting order of the returned items", + "nullable": true + }, + "style": "form" + }, + { + "description": "When `true` archived (deleted but not expunged) items are included in the response", + "in": "query", + "name": "include_archived", + "schema": { + "default": false, + "description": "When `true` archived (deleted but not expunged) items are included in the response", + "type": "boolean" + }, + "style": "form" + }, + { + "description": "When `true` the full item (including the schema) is included in the response", + "in": "query", + "name": "with_content", + "schema": { + "default": false, + "description": "When `true` the full item (including the schema) is included in the response", + "type": "boolean" + }, + "style": "form" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse_EventTypeOut_" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "List Event Types", + "tags": [ + "Event Type" + ] + }, + "post": { + "description": "Create new or unarchive existing event type.\n\nUnarchiving an event type will allow endpoints to filter on it and messages to be sent with it.\nEndpoints filtering on the event type before archival will continue to filter on it.\nThis operation does not preserve the description and schemas.", + "operationId": "v1.event-type.create", + "parameters": [ + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeIn" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Create Event Type", + "tags": [ + "Event Type" + ] + } + }, + "/api/v1/event-type/schema/generate-example": { + "post": { + "description": "Generates a fake example from the given JSONSchema", + "parameters": [ + { + "description": "The request's idempotency key", + "in": "header", + "name": "idempotency-key", + "schema": { + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "204": { + "description": "no content" + } + }, + "tags": [ + "Event Type" + ] + } + }, + "/api/v1/event-type/{event_type_name}": { + "delete": { + "description": "Archive an event type.\n\nEndpoints already configured to filter on an event type will continue to do so after archival.\nHowever, new messages can not be sent with it and endpoints can not filter on it.\nAn event type can be unarchived with the\n[create operation](#operation/create_event_type_api_v1_event_type__post).", + "operationId": "v1.event-type.delete", + "parameters": [ + { + "in": "path", + "name": "event_type_name", + "required": true, + "schema": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "204": { + "description": "no content" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Delete Event Type", + "tags": [ + "Event Type" + ] + }, + "get": { + "description": "Get an event type.", + "operationId": "v1.event-type.get", + "parameters": [ + { + "in": "path", + "name": "event_type_name", + "required": true, + "schema": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Get Event Type", + "tags": [ + "Event Type" + ] + }, + "patch": { + "description": "Partially update an event type.", + "operationId": "patch_event_type", + "parameters": [ + { + "in": "path", + "name": "event_type_name", + "required": true, + "schema": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypePatch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Patch Event Type", + "tags": [ + "Event Type" + ] + }, + "put": { + "description": "Update an event type.", + "operationId": "v1.event-type.update", + "parameters": [ + { + "in": "path", + "name": "event_type_name", + "required": true, + "schema": { + "example": "user.signup", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "style": "simple" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeOut" + } + } + }, + "description": "" + }, + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EventTypeOut" + } + } + }, + "description": "" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Update Event Type", + "tags": [ + "Event Type" + ] + } + }, + "/api/v1/health": { + "get": { + "description": "Verify the API server is up and running.", + "operationId": "v1.health.get", + "responses": { + "204": { + "description": "no content" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Health", + "tags": [ + "Health" + ] + }, + "head": { + "description": "Verify the API server is up and running.", + "operationId": "v1.health.get", + "responses": { + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Unauthorized" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Not Found" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Conflict" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HttpErrorOut" + } + } + }, + "description": "Too Many Requests" + } + }, + "summary": "Health", + "tags": [ + "Health" + ] + } + }, + "/api/v1/health/ping": { + "get": { + "responses": { + "204": { + "description": "no content" + } + } + }, + "head": { + "responses": { + "204": { + "description": "no content" + } + } + } + } + }, + "tags": [ + { + "name": "Application" + }, + { + "name": "Message" + }, + { + "name": "Message Attempt" + }, + { + "name": "Endpoint" + }, + { + "name": "Integration" + }, + { + "name": "Event Type" + }, + { + "name": "Authentication" + }, + { + "name": "Health" + }, + { + "name": "Webhooks" + } + ], + "x-tagGroups": [ + { + "name": "General", + "tags": [ + "Application", + "Event Type" + ] + }, + { + "name": "Application specific", + "tags": [ + "Authentication", + "Endpoint", + "Message", + "Message Attempt", + "Integration" + ] + }, + { + "name": "Utility", + "tags": [ + "Health" + ] + }, + { + "name": "Webhooks", + "tags": [ + "Webhooks" + ] + } + ], + "x-webhooks": { + "EndpointCreatedEvent": { + "post": { + "description": "Sent when an endpoint is created.", + "operationId": "EndpointCreatedEvent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointCreatedEvent" + } + } + } + }, + "responses": { + "2XX": { + "description": "Return any 2XX status to indicate that the data was received successfully" + } + }, + "summary": "EndpointCreatedEvent", + "tags": [ + "Webhooks" + ] + } + }, + "EndpointDeletedEvent": { + "post": { + "description": "Sent when an endpoint is deleted.", + "operationId": "EndpointDeletedEvent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointDeletedEvent" + } + } + } + }, + "responses": { + "2XX": { + "description": "Return any 2XX status to indicate that the data was received successfully" + } + }, + "summary": "EndpointDeletedEvent", + "tags": [ + "Webhooks" + ] + } + }, + "EndpointDisabledEvent": { + "post": { + "description": "Sent when an endpoint has been automatically disabled after continuous failures.", + "operationId": "EndpointDisabledEvent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointDisabledEvent" + } + } + } + }, + "responses": { + "2XX": { + "description": "Return any 2XX status to indicate that the data was received successfully" + } + }, + "summary": "EndpointDisabledEvent", + "tags": [ + "Webhooks" + ] + } + }, + "EndpointUpdatedEvent": { + "post": { + "description": "Sent when an endpoint is updated.", + "operationId": "EndpointUpdatedEvent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndpointUpdatedEvent" + } + } + } + }, + "responses": { + "2XX": { + "description": "Return any 2XX status to indicate that the data was received successfully" + } + }, + "summary": "EndpointUpdatedEvent", + "tags": [ + "Webhooks" + ] + } + }, + "MessageAttemptExhaustedEvent": { + "post": { + "description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted).", + "operationId": "MessageAttemptExhaustedEvent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageAttemptExhaustedEvent" + } + } + } + }, + "responses": { + "2XX": { + "description": "Return any 2XX status to indicate that the data was received successfully" + } + }, + "summary": "MessageAttemptExhaustedEvent", + "tags": [ + "Webhooks" + ] + } + }, + "MessageAttemptFailingEvent": { + "post": { + "description": "Sent after a message has been failing for a few times.\nIt's sent on the fourth failure. It complements `message.attempt.exhausted` which is sent after the last failure.", + "operationId": "MessageAttemptFailingEvent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageAttemptFailingEvent" + } + } + } + }, + "responses": { + "2XX": { + "description": "Return any 2XX status to indicate that the data was received successfully" + } + }, + "summary": "MessageAttemptFailingEvent", + "tags": [ + "Webhooks" + ] + } + }, + "MessageAttemptRecoveredEvent": { + "post": { + "description": "Sent on a successful dispatch after an earlier failure op webhook has already been sent.", + "operationId": "MessageAttemptRecoveredEvent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageAttemptRecoveredEvent" + } + } + } + }, + "responses": { + "2XX": { + "description": "Return any 2XX status to indicate that the data was received successfully" + } + }, + "summary": "MessageAttemptRecoveredEvent", + "tags": [ + "Webhooks" + ] + } + } + } +} diff --git a/server/svix-server/src/worker.rs b/server/svix-server/src/worker.rs index abf26a097..a521a2306 100644 --- a/server/svix-server/src/worker.rs +++ b/server/svix-server/src/worker.rs @@ -407,11 +407,19 @@ async fn make_http_call( #[tracing::instrument(skip_all, fields(response_code, msg_dest_id = msg_dest.id.0))] async fn handle_successful_dispatch( - WorkerContext { cache, db, .. }: &WorkerContext<'_>, + WorkerContext { + cache, + db, + op_webhook_sender, + .. + }: &WorkerContext<'_>, DispatchContext { org_id, endp, app_id, + app_uid, + msg_task, + msg_uid, .. }: DispatchContext<'_>, SuccessfulDispatch(mut attempt): SuccessfulDispatch, @@ -432,6 +440,28 @@ async fn handle_successful_dispatch( tracing::Span::current().record("response_code", attempt.response_status_code); tracing::info!("Webhook success."); + if msg_task.attempt_count as usize >= OP_WEBHOOKS_SEND_FAILING_EVENT_AFTER { + if let Err(e) = op_webhook_sender + .send_operational_webhook( + org_id, + OperationalWebhook::MessageAttemptRecovered(MessageAttemptEvent { + app_id: app_id.clone(), + app_uid: app_uid.cloned(), + endpoint_id: msg_task.endpoint_id.clone(), + msg_id: msg_task.msg_id.clone(), + msg_event_id: msg_uid.cloned(), + last_attempt: attempt.into(), + }), + ) + .await + { + tracing::error!( + "Failed sending MessageAttemptRecovered Operational Webhook: {}", + e + ); + } + } + Ok(()) }