Skip to main content
Las suscripciones se gestionan vía API REST. Cada operación está scoped al tenant de tu API key — nunca podés ver ni modificar suscripciones de otros tenants. Scopes: webhooks:read (GET), webhooks:write (POST/PATCH/DELETE/test/replay).

GET /webhooks

Lista las suscripciones del tenant.

POST /webhooks

Crea una suscripción nueva. El secret se devuelve una sola vez.

GET /webhooks/:id

Devuelve una suscripción individual (sin secret).

PATCH /webhooks/:id

Actualiza url, events, description o enabled. Si pasás enabled: true, se limpia el estado de auto-disable y se resetea el contador de fallas.

DELETE /webhooks/:id

Borra la suscripción.

POST /webhooks/:id/test

Encola un evento sintético message.received con datos dummy. Útil para validar firma + URL en desarrollo.
Test deliveries SÍ aparecen en GET /webhooks/:id/deliveries (con statusCode, errorMessage, etc), pero NO actualizan lastDeliveryAt, lastDeliveryStatus ni consecutiveFailures en la subscription — para no mezclar bookkeeping de pruebas con producción. Si querés confirmar que el test golpeó tu endpoint, consultá GET /webhooks/:id/deliveries?status=all&limit=5 justo después.
La response incluye samplePayload con el envelope exacto que se va a entregar a tu URL — útil para configurar la verificación de firma localmente antes de triggerear:

GET /webhooks/:id/deliveries

Lista los intentos de entrega individuales de una suscripción. Cada delivery (incluso fallido) genera una fila acá. Cursor-based, newest first. Scope: webhooks:read
Response:
Los id que devuelve son los deliveryId que podés pasarle a POST /webhooks/:id/replay/:deliveryId.

POST /webhooks/:id/rotate-secret

Genera un nuevo secret HMAC e invalida el anterior inmediatamente. Las entregas en cola que se hayan firmado con el secret viejo van a fallar la verificación en tu endpoint. Scope: webhooks:write
El nuevo secret se devuelve una sola vez. Guardalo y actualizá tu WASPY_WEBHOOK_SECRET antes de la próxima delivery.

POST /webhooks/:id/replay/:deliveryId

Re-encola un delivery histórico (de la tabla webhook_deliveries). Útil para reintentar manualmente entregas que fallaron después de exhaustar reintentos automáticos.
El payload exacto del delivery original no se almacena verbatim (sólo su hash). El replay re-fires un evento con el mismo event y datos sintéticos — tu integración debe ser idempotente sobre data.id para que esto sea seguro.