Webhooks
Assinaturas de eventos (HMAC-SHA256) com entrega async (retry 5x + DLQ; nunca desativa sozinho). Catálogo de 10 eventos (link.*, api-key.*, billing.*). URL deve ser HTTPS (409 senão). Envelope de deliveries usa a chave `deliveries` (não `data`). Teste via pipeline completa: status real 201 (não 202).
Tag no Swagger: Webhooks · Auth: JWT (Dashboard) + API Key (Public) · 7 endpoints
POST/api/v1/webhooks
Cria webhook. Status real 201. Validação = 400 (não 422).
Request body
| Campo | Tipo | Obrigatório | Regras |
|---|---|---|---|
| name | string | sim | Min 1, max 100. |
| url | string (url) | sim | HTTPS. |
| events | evento[] | sim | Min 1, max 10. |
Response
Webhook + secretErrors: 401 · 403 · 400 VALIDATION_ERROR · 409 CONFLICT
GET/api/v1/webhooks
Lista paginada.
Query parameters
| Campo | Tipo | Obrigatório | Regras |
|---|---|---|---|
| page | number | não | Default 1. |
| pageSize | number | não | Default 20, max 100. |
Response
{ data: Webhook[], total, page, pageSize, totalPages }Errors: 401 · 403
GET/api/v1/webhooks/:id
Busca por ID.
Response
WebhookErrors: 401 · 403 · 404
PATCH/api/v1/webhooks/:id
Atualiza (campos opcionais).
Response
WebhookErrors: 401 · 403 · 404 · 400 VALIDATION_ERROR
DELETE/api/v1/webhooks/:id
Exclui. Status real 204.
Response
204 No ContentErrors: 401 · 403 · 404
POST/api/v1/webhooks/:id/test
Evento de teste. Status real 201 (não 202).
Response
{ success, message }Errors: 401 · 403 · 404
GET/api/v1/webhooks/:id/deliveries
Histórico (envelope `deliveries`).
Response
{ deliveries, total, page, pageSize, totalPages }Errors: 401 · 403 · 404