{ "openapi": "3.1.0", "info": { "title": "Abelo API Service", "version": "v1" }, "servers": [ { "url": "https://api.abelo.ai/v1", "description": "Production Environment" } ], "paths": { "/healthcheck": { "get": { "tags": [ "Healthcheck" ], "summary": "Health check with GET", "operationId": "healthcheck_get_healthcheck_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } }, "security": [ { "HTTPBearer": [] } ] }, "post": { "tags": [ "Healthcheck" ], "summary": "Health check with POST", "operationId": "healthcheck_post_healthcheck_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Body_healthcheck_post_healthcheck_post" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/profiles": { "get": { "tags": [ "Profiles" ], "summary": "List profiles", "description": "Retrieve a paginated list of active profiles. Can be filtered precisely by `phone_number` or `email`.", "operationId": "list_profiles_profiles_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 100, "minimum": 1, "default": 100, "title": "Limit" } }, { "name": "cursor", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cursor" } }, { "name": "phone_number", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Phone Number" } }, { "name": "email", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "email" }, { "type": "null" } ], "title": "Email" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedList_ProfileResponse_" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "Profiles" ], "summary": "Create a profile", "description": "Creates a new profile. Phone numbers are unique across profiles.", "operationId": "create_profile_profiles_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileResponse" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "400": { "description": "Profile with this phone number already exists" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/profiles/{public_id}": { "get": { "tags": [ "Profiles" ], "summary": "Get a profile", "description": "Retrieve a specific profile by its public identifier.", "operationId": "get_profile_profiles__public_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "public_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Public Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileResponse" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "404": { "description": "Profile not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "patch": { "tags": [ "Profiles" ], "summary": "Update a profile", "description": "Updates a profile", "operationId": "update_profile_profiles__public_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "public_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Public Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileResponse" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "400": { "description": "A profile with this phone number or email already exists" }, "404": { "description": "Profile not found" }, "409": { "description": "Cannot modify integrated profiles when a store is connected" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "Profiles" ], "summary": "Delete a profile", "description": "Deletes a profile. Removes association from all lists if any.", "operationId": "delete_profile_profiles__public_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "public_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Public Id" } } ], "responses": { "204": { "description": "Successful Response" }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "404": { "description": "Profile not found" }, "409": { "description": "Cannot delete integrated profiles when a store is connected" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/messages/send": { "post": { "tags": [ "Messages" ], "summary": "Trigger an API Campaign Message", "description": "Triggers an API campaign for a specific profile. Supports recipient lookup by phone number, email, or public ID.", "operationId": "send_message_messages_send_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MessageSendRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MessageSendResponse" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "400": { "description": "Campaign inactive, ambiguous profile lookup by email, missing campaign template parameters, or misconfigured BSP connection." }, "403": { "description": "Promotional consent missing for the target profile." }, "404": { "description": "Campaign or profile not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/webhooks": { "get": { "tags": [ "Webhooks" ], "summary": "List Webhooks", "description": "Returns all webhooks for the organization. `signing_secret` is never included.", "operationId": "list_webhooks_webhooks_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/WebhookResponse" }, "type": "array", "title": "Response List Webhooks Webhooks Get" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" } }, "security": [ { "HTTPBearer": [] } ] }, "post": { "tags": [ "Webhooks" ], "summary": "Create a Webhook", "description": "Creates a new webhook subscription. The `signing_secret` is returned **exactly once** — store it securely. It cannot be re-retrieved; use the rotate-secret endpoint to generate a new one.\n### Global Webhook Rules\n* **Limit:** An organization can have a maximum of **5 active webhooks** at any time.\n* **Topic Overlap:** Active webhooks cannot subscribe to overlapping topics. If a topic is \nconfigured in one active webhook, it cannot be configured in another active webhook.\n* **Inactive Webhooks:** Inactive webhooks do not count towards the \nlimit of 5 webhooks and are exempt from topic overlap validation until they are activated.", "operationId": "create_webhook_webhooks_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookCreateRequest" } } }, "required": true }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookCreateResponse" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "400": { "description": "Bad Request - Too many active webhooks or topics overlap" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/webhooks/{webhook_id}": { "get": { "tags": [ "Webhooks" ], "summary": "Get a Webhook", "operationId": "get_webhook_webhooks__webhook_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Webhook Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookResponse" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "404": { "description": "Webhook not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "patch": { "tags": [ "Webhooks" ], "summary": "Update a Webhook", "operationId": "update_webhook_webhooks__webhook_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Webhook Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookUpdateRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookResponse" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "400": { "description": "Validation error" }, "404": { "description": "Webhook not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "Webhooks" ], "summary": "Delete a Webhook", "operationId": "delete_webhook_webhooks__webhook_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Webhook Id" } } ], "responses": { "204": { "description": "Successful Response" }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "404": { "description": "Webhook not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/webhooks/{webhook_id}/rotate-secret": { "post": { "tags": [ "Webhooks" ], "summary": "Rotate Webhook Signing Secret", "description": "Generates a new signing secret for the webhook. The **previous secret is immediately invalid** upon rotation. The new secret is shown exactly once — store it securely.", "operationId": "rotate_webhook_secret_webhooks__webhook_id__rotate_secret_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Webhook Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookRotateSecretResponse" } } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "404": { "description": "Webhook not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/webhooks/test": { "post": { "tags": [ "Webhooks" ], "summary": "Test Webhook URL with a test signed payload", "description": "Test Webhook URL with a test signed payload. One can test against the URL of a given webhook by providing its ID or a standalone URL by providing their own in the post payload. In this case payload is signed with API key's webhook signing secret instead of webhook configuration's signing secret.", "operationId": "test_webhook_webhooks_test_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookAPITestRequest" } } }, "required": true }, "responses": { "202": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "401": { "description": "Unauthorized - Missing or invalid API Key" }, "500": { "description": "Internal Server Error" }, "404": { "description": "Webhook not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } } }, "components": { "schemas": { "Body_healthcheck_post_healthcheck_post": { "properties": { "value": { "type": "string", "title": "Value" } }, "type": "object", "required": [ "value" ], "title": "Body_healthcheck_post_healthcheck_post" }, "EmailIdentifier": { "properties": { "value": { "type": "string", "title": "Value" }, "type": { "type": "string", "const": "email", "title": "Type", "default": "email" } }, "type": "object", "required": [ "value" ], "title": "EmailIdentifier" }, "Error": { "properties": { "code": { "type": "integer", "title": "Code", "description": "Error code" }, "message": { "type": "string", "title": "Message", "description": "Error text" } }, "type": "object", "required": [ "code", "message" ], "title": "Error" }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "MessageSendRequest": { "properties": { "campaign_id": { "type": "string", "title": "Campaign Id", "description": "Campaign ID" }, "recipient": { "oneOf": [ { "$ref": "#/components/schemas/PhoneIdentifier" }, { "$ref": "#/components/schemas/EmailIdentifier" }, { "$ref": "#/components/schemas/PublicIdIdentifier" } ], "title": "Recipient", "description": "Target recipient for the message", "discriminator": { "propertyName": "type", "mapping": { "email": "#/components/schemas/EmailIdentifier", "phone_number": "#/components/schemas/PhoneIdentifier", "public_id": "#/components/schemas/PublicIdIdentifier" } } }, "params": { "additionalProperties": true, "type": "object", "title": "Params", "description": "Variables for template replacement" }, "client_reference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Client Reference", "description": "Echoed back for client reference" }, "webhook_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Webhook Url", "description": "Optional URL to receive all lifecycle events for this specific message. Events are HMAC-SHA256 signed with your API key's webhook_signing_secret. When set, takes strict precedence over org-level webhook subscriptions for this message." } }, "type": "object", "required": [ "campaign_id", "recipient" ], "title": "MessageSendRequest" }, "MessageSendResponse": { "properties": { "message_id": { "type": "string", "title": "Message Id", "description": "Message ID" }, "client_reference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Client Reference", "description": "Echoed back for client reference" }, "status": { "type": "string", "title": "Status", "description": "Message status" }, "error": { "anyOf": [ { "$ref": "#/components/schemas/Error" }, { "type": "null" } ], "description": "Error message" } }, "type": "object", "required": [ "message_id", "status" ], "title": "MessageSendResponse" }, "Meta": { "properties": { "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next Cursor" }, "has_more": { "type": "boolean", "title": "Has More", "default": false }, "count": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Count" } }, "type": "object", "title": "Meta" }, "PaginatedList_ProfileResponse_": { "properties": { "data": { "items": { "$ref": "#/components/schemas/ProfileResponse" }, "type": "array", "title": "Data" }, "meta": { "$ref": "#/components/schemas/Meta" } }, "type": "object", "required": [ "data", "meta" ], "title": "PaginatedList[ProfileResponse]" }, "PhoneIdentifier": { "properties": { "value": { "type": "string", "title": "Value" }, "type": { "type": "string", "const": "phone_number", "title": "Type", "default": "phone_number" } }, "type": "object", "required": [ "value" ], "title": "PhoneIdentifier" }, "ProfileCreate": { "properties": { "phone_number": { "type": "string", "title": "Phone Number" }, "email": { "anyOf": [ { "type": "string", "format": "email" }, { "type": "null" } ], "title": "Email" }, "first_name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 2 }, { "type": "null" } ], "title": "First Name" }, "last_name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 2 }, { "type": "null" } ], "title": "Last Name" }, "viber_marketing_consent": { "type": "boolean", "title": "Viber Marketing Consent", "default": false }, "sms_marketing_consent": { "type": "boolean", "title": "Sms Marketing Consent", "default": false } }, "type": "object", "required": [ "phone_number" ], "title": "ProfileCreate" }, "ProfileResponse": { "properties": { "phone_number": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Phone Number" }, "email": { "anyOf": [ { "type": "string", "format": "email" }, { "type": "null" } ], "title": "Email" }, "first_name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 2 }, { "type": "null" } ], "title": "First Name" }, "last_name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 2 }, { "type": "null" } ], "title": "Last Name" }, "public_id": { "type": "string", "title": "Public Id" }, "full_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Full Name" }, "created_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Created At" }, "updated_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updated At" }, "viber_marketing_consent": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Viber Marketing Consent" }, "sms_marketing_consent": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Sms Marketing Consent" } }, "type": "object", "required": [ "phone_number", "public_id", "full_name", "created_at", "updated_at", "viber_marketing_consent", "sms_marketing_consent" ], "title": "ProfileResponse" }, "ProfileUpdate": { "properties": { "phone_number": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Phone Number" }, "email": { "anyOf": [ { "type": "string", "format": "email" }, { "type": "null" } ], "title": "Email" }, "first_name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 2 }, { "type": "null" } ], "title": "First Name" }, "last_name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 2 }, { "type": "null" } ], "title": "Last Name" }, "viber_marketing_consent": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Viber Marketing Consent" }, "sms_marketing_consent": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Sms Marketing Consent" } }, "type": "object", "title": "ProfileUpdate" }, "PublicIdIdentifier": { "properties": { "value": { "type": "string", "title": "Value" }, "type": { "type": "string", "const": "public_id", "title": "Type", "default": "public_id" } }, "type": "object", "required": [ "value" ], "title": "PublicIdIdentifier" }, "ValidationError": { "properties": { "loc": { "items": { "anyOf": [ { "type": "string" }, { "type": "integer" } ] }, "type": "array", "title": "Location" }, "msg": { "type": "string", "title": "Message" }, "type": { "type": "string", "title": "Error Type" }, "input": { "title": "Input" }, "ctx": { "type": "object", "title": "Context" } }, "type": "object", "required": [ "loc", "msg", "type" ], "title": "ValidationError" }, "WebhookAPITestRequest": { "properties": { "body": { "additionalProperties": true, "type": "object", "title": "Body", "description": "Payload to send to webhook URL for testing." }, "webhook_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Webhook Id", "description": "Webhook ID to test" }, "url": { "anyOf": [ { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri" }, { "type": "null" } ], "title": "Url", "description": "Override URL for the webhook. In this case payload is signed with API key's webhook signing secret instead of webhook configuration's signing secret." } }, "type": "object", "title": "WebhookAPITestRequest" }, "WebhookCreateRequest": { "properties": { "name": { "type": "string", "title": "Name", "description": "The name of the webhook to create." }, "url": { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Url", "description": "The destination URL for the webhook. Must be a valid HTTP/HTTPS URL." }, "topics": { "items": { "$ref": "#/components/schemas/WebhookTopic" }, "type": "array", "minItems": 1, "title": "Topics", "description": "List of event topics to subscribe to. Must not overlap with existing configurations." }, "is_active": { "type": "boolean", "title": "Is Active", "description": "Whether the webhook is actively firing.", "default": true } }, "type": "object", "required": [ "name", "url", "topics" ], "title": "WebhookCreateRequest" }, "WebhookCreateResponse": { "properties": { "id": { "type": "string", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "url": { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Url" }, "topics": { "items": { "type": "string" }, "type": "array", "title": "Topics" }, "is_active": { "type": "boolean", "title": "Is Active" }, "created_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Created At" }, "signing_secret": { "type": "string", "title": "Signing Secret" } }, "type": "object", "required": [ "id", "name", "url", "topics", "is_active", "signing_secret" ], "title": "WebhookCreateResponse", "description": "Returned only on POST /v1/webhooks. The signing_secret is shown exactly once — store it securely." }, "WebhookResponse": { "properties": { "id": { "type": "string", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "url": { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Url" }, "topics": { "items": { "type": "string" }, "type": "array", "title": "Topics" }, "is_active": { "type": "boolean", "title": "Is Active" }, "created_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Created At" } }, "type": "object", "required": [ "id", "name", "url", "topics", "is_active" ], "title": "WebhookResponse", "description": "Returned on GET, LIST, PATCH /v1/webhooks operations. The signing_secret is never re-exposed after creation." }, "WebhookRotateSecretResponse": { "properties": { "id": { "type": "string", "title": "Id" }, "signing_secret": { "type": "string", "title": "Signing Secret" } }, "type": "object", "required": [ "id", "signing_secret" ], "title": "WebhookRotateSecretResponse", "description": "Returned on POST /v1/webhooks/{id}/rotate-secret. The new signing_secret is shown once." }, "WebhookTopic": { "type": "string", "enum": [ "test_resource.test_event", "message.sent", "message.failed", "message.delivered", "message.expired", "message.seen", "message.clicked" ], "title": "WebhookTopic", "description": "The available webhook events you can subscribe to.\n\n| Topic | Description |\n|---|---|\n| `message.sent` | Triggered when a message has been sent. |\n| `message.failed` | Triggered when a message fails delivery (provider-reported failure DLR). |\n| `message.delivered` | Triggered when a message is successfully delivered to the user's device. |\n| `message.expired` | Triggered when a message expires before delivery. |\n| `message.seen` | Triggered when the user opens the message. |\n| `message.clicked` | Triggered when the user clicks a link inside the message. |" }, "WebhookUpdateRequest": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name", "description": "The name of the webhook." }, "url": { "anyOf": [ { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri" }, { "type": "null" } ], "title": "Url", "description": "The destination URL for the webhook. Cannot be cleared." }, "topics": { "anyOf": [ { "items": { "$ref": "#/components/schemas/WebhookTopic" }, "type": "array", "minItems": 1 }, { "type": "null" } ], "title": "Topics", "description": "List of event topics to subscribe to. Must not overlap with existing configurations. Cannot be cleared." }, "is_active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Active", "description": "Whether the webhook is actively firing." } }, "type": "object", "title": "WebhookUpdateRequest" } }, "securitySchemes": { "HTTPBearer": { "type": "http", "description": "Basic authentication with Bearer token where format of token is `key_id:key_secret` from the generated keys. For advanced authentication you can use HMAC signing using the HMAC secret retrieved. Learn more in docs.", "scheme": "bearer" } } } }