Webhooks
Listar Webhooks
Paginación keyset. Los filtros son query params tipados (`campo=valor`, `campo[op]=valor`); los filtros desconocidos, los campos no ordenables y los valores malformados se rechazan con 400 `validation_failed`.
Crear Webhook
Crear Webhook
Crear o actualizar webhook
Upsert. Recibe el mismo cuerpo que POST más las claves de búsqueda `id` y `external_id`, comparadas en ese orden. Una coincidencia se actualiza in situ y devuelve 200 — los campos ausentes del cuerpo conservan el valor almacenado. Sin clave, o sin coincidencia, crea el webhook exactamente como lo haría POST y devuelve 201.
Obtener Webhook
Acepta el UUID interno o el `external_id` del recurso.
Actualizar Webhook
Acepta el UUID interno o el `external_id` del recurso.
Eliminar Webhook
Acepta el UUID interno o el `external_id` del recurso.
Enviar un evento webhook.ping
Acepta el UUID interno o el `external_id` del recurso.
Rotar el signing secret
Reemplaza el signing secret y devuelve el nuevo valor **una sola vez**. Por defecto el secret anterior sigue firmando entregas durante 24 horas (`previous_secret_grace_hours`), periodo en el que cada entrega lleva una firma por secret, para que el receptor cambie de clave sin perder eventos. Envía `0` para revocar el secret anterior de inmediato (secret filtrado). Acepta tanto el UUID interno como el `external_id` del recurso.