openapi: 3.1.0 info: title: Sinch Brands Access Control Lists Webhooks API description: The Sinch Brands API allows developers to create, update, and manage customer brand profiles used across Sinch messaging products. Brands represent the business identity associated with messaging campaigns and sender registrations. The API provides endpoints for creating brand records, updating brand details, listing brands, and deleting brands, enabling programmatic management of the brand entities required for compliant business messaging. version: '1.0' contact: name: Sinch Support url: https://www.sinch.com/contact-us/ termsOfService: https://www.sinch.com/terms-of-service/ servers: - url: https://brands.api.sinch.com description: Global Production Server security: - bearerAuth: [] tags: - name: Webhooks description: Manage webhook endpoints for receiving callbacks on message delivery, inbound messages, and other events. paths: /v1/projects/{project_id}/apps/{app_id}/webhooks: get: operationId: listWebhooks summary: List Webhooks description: Returns the list of webhooks configured for a specific app. Up to 5 webhooks can be configured per app. tags: - Webhooks parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/AppId' responses: '200': description: List of webhooks content: application/json: schema: $ref: '#/components/schemas/WebhookList' '401': description: Unauthorized post: operationId: createWebhook summary: Create a Webhook description: Creates a new webhook for the specified app with trigger subscriptions. tags: - Webhooks parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/AppId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateWebhookRequest' responses: '200': description: Webhook created content: application/json: schema: $ref: '#/components/schemas/Webhook' '400': description: Invalid request '401': description: Unauthorized /v1/projects/{project_id}/webhooks/{webhook_id}: get: operationId: getWebhook summary: Get a Webhook description: Returns the details of a specific webhook. tags: - Webhooks parameters: - $ref: '#/components/parameters/ProjectId' - name: webhook_id in: path required: true description: The unique webhook identifier schema: type: string responses: '200': description: Webhook details content: application/json: schema: $ref: '#/components/schemas/Webhook' '401': description: Unauthorized '404': description: Webhook not found patch: operationId: updateWebhook summary: Update a Webhook description: Updates the properties of a specific webhook. tags: - Webhooks parameters: - $ref: '#/components/parameters/ProjectId' - name: webhook_id in: path required: true description: The unique webhook identifier schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateWebhookRequest' responses: '200': description: Webhook updated content: application/json: schema: $ref: '#/components/schemas/Webhook' '401': description: Unauthorized '404': description: Webhook not found delete: operationId: deleteWebhook summary: Delete a Webhook description: Deletes a specific webhook. tags: - Webhooks parameters: - $ref: '#/components/parameters/ProjectId' - name: webhook_id in: path required: true description: The unique webhook identifier schema: type: string responses: '200': description: Webhook deleted '401': description: Unauthorized '404': description: Webhook not found components: schemas: WebhookList: type: object properties: webhooks: type: array description: List of webhooks items: $ref: '#/components/schemas/Webhook' UpdateWebhookRequest: type: object properties: target: type: string format: uri description: Updated target URL target_type: type: string description: Updated target type triggers: type: array description: Updated trigger list items: type: string secret: type: string description: Updated secret Webhook: type: object properties: id: type: string description: The unique webhook identifier app_id: type: string description: The app this webhook belongs to target: type: string format: uri description: The webhook target URL target_type: type: string enum: - HTTP - GRPC description: The target type triggers: type: array description: List of event triggers this webhook subscribes to items: type: string enum: - MESSAGE_INBOUND - EVENT_INBOUND - MESSAGE_DELIVERY - MESSAGE_SUBMIT - CONTACT_CREATE - CONTACT_DELETE - CONTACT_MERGE - CONTACT_UPDATE - CONVERSATION_START - CONVERSATION_STOP - CONVERSATION_DELETE - CAPABILITY - OPT_IN - OPT_OUT - CHANNEL_EVENT - CONTACT_IDENTITIES_DUPLICATION - UNSUPPORTED - RECORD_NOTIFICATION - SMART_CONVERSATIONS secret: type: string description: Secret for HMAC signature validation CreateWebhookRequest: type: object required: - app_id - target - triggers properties: app_id: type: string description: The app ID target: type: string format: uri description: The webhook target URL target_type: type: string enum: - HTTP - GRPC description: The target type default: HTTP triggers: type: array description: Event triggers to subscribe to items: type: string secret: type: string description: Secret for HMAC validation parameters: AppId: name: app_id in: path required: true description: The unique app identifier schema: type: string ProjectId: name: project_id in: path required: true description: The unique project identifier schema: type: string securitySchemes: bearerAuth: type: http scheme: bearer description: Bearer token authentication. externalDocs: description: Sinch Brands API Documentation url: https://developers.sinch.com/docs/brands