PUThttps://api.veriko.mx/v1/webhooks/{id}

Actualizar un endpoint de webhook

Audiencia
public
Autenticación
API key
Permiso
webhooks:update
Guía de uso →

Actualiza la dirección receptora, los eventos suscritos o el estado de un endpoint ya registrado. Solo cambia lo que venga en el cuerpo: un campo ausente se queda como estaba, y un cuerpo sin ningún campo editable responde 422 no_valid_fields. El secreto de firma no cambia aquí. Cambiar la dirección deja el mismo secreto en el endpoint nuevo, de modo que un receptor que ya validaba firmas sigue validándolas. Para rotarlo está POST /v1/webhooks/{id}/regenerate-secret. Poner el estado en disabled detiene las entregas sin perder el historial; es lo que conviene mientras se arregla un receptor caído, en vez de borrar el endpoint y volver a crearlo.

Parámetros
ParámetroUbicaciónTipoObligatorioDescripción
id*pathstring (uuid)obligatorio

UUID del endpoint de webhook.

p. ej. f47ac10b-58cc-4372-a567-0e02b2c3d479
Parámetros
ParámetroTipoObligatorioDescripción
urlstring (uri) (?–2048)opcional

URL HTTPS de destino. Reemplaza la URL anterior si se envía.

p. ej. https://example.com/webhooks/entregas
eventsarray<string> (elementos: 1–10)opcional

Suscripción de eventos del webhook. Reemplaza la lista anterior; máximo 10 eventos.

descriptionstring | nullanulable (?–255)opcional

Etiqueta libre del webhook (null para limpiarla).

p. ej. Alta de pagos en el ERP
statusstring (enumeración)opcional

Cambia el estado del webhook (active o disabled).

p. ej. active
Petición
curl -X PUT 'https://api.veriko.mx/v1/webhooks/{id}' \
  -H 'Authorization: Bearer veriko_••••' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://webhook.example.com/platform",
    "events": [
      "validation.completed"
    ],
    "status": "active"
  }'

Ejemplo en Python — próximamente.

Ejemplo en JavaScript — próximamente.

Ejemplo en PHP — próximamente.

Respuesta 200WebhookEndpoint — Endpoint actualizado.
CampoTipoDescripción
type*string

Tipo del recurso, fijo para esta operación. Forma parte de la identidad del recurso en la envoltura JSON:API. Siempre webhook_endpoint.

p. ej. webhook_endpoint
id*string (uuid)

Identificador del endpoint.

p. ej. a1b2c3d4-e5f6-7890-abcd-ef0123456789
attributes*object

Atributos canónicos del endpoint de webhook (URL receptora, eventos suscritos, estado y secreto).

urlstring (uri)

URL HTTPS receptora. En producción se rechaza HTTP, URLs que resuelven a IPs privadas (SSRF), y URLs >2048 caracteres.

p. ej. https://example.com/webhooks/entregas
eventsarray

Lista de eventos suscritos. Máximo 10.

descriptionstring | nullanulable

Etiqueta libre del endpoint.

p. ej. Alta de pagos en el ERP
statusstring

active recibe entregas. disabled fue apagado manualmente. auto_disabled fue desactivado por la plataforma tras superar webhooks.auto_disable_threshold fallos consecutivos.

p. ej. active
consecutive_failuresinteger

Contador de fallos consecutivos. Se resetea en éxito.

p. ej. 0
last_delivery_atTimestampUTC | null

Marca de tiempo UTC del último intento de entrega (cualquier status). null cuando el endpoint aún no recibió ningún delivery.

secretstring

Clave compartida para verificar firmas. Solo presente en la respuesta de creación y regeneración del endpoint; se omite en cualquier otra respuesta.

p. ej. whsec_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
secret_hintstring

Últimos 4 caracteres del secret, prefijados con .... Presente en cualquier respuesta donde secret está oculto.

p. ej. ...4f2a
created_atstring (date-time)

Timestamp ISO 8601 en UTC con sufijo Z explícito. Ejemplo: "2026-05-01T05:14:38Z". Cada campo *_at, *_end, *_start, *_date de la API usa esta forma. El descriptor compañero en meta.datetime permite afirmar el contrato en tiempo de ejecución sin volver a leer este spec. El new Date(value) nativo del navegador, el datetime.fromisoformat (≥3.11) de Python y el time.Parse(time.RFC3339) de Go parsean este formato directamente.

p. ej. 2026-05-01T05:14:38Z
updated_atstring (date-time)

Timestamp ISO 8601 en UTC con sufijo Z explícito. Ejemplo: "2026-05-01T05:14:38Z". Cada campo *_at, *_end, *_start, *_date de la API usa esta forma. El descriptor compañero en meta.datetime permite afirmar el contrato en tiempo de ejecución sin volver a leer este spec. El new Date(value) nativo del navegador, el datetime.fromisoformat (≥3.11) de Python y el time.Parse(time.RFC3339) de Go parsean este formato directamente.

p. ej. 2026-05-01T05:14:38Z
Códigos de respuestaPUT /v1/webhooks/{id}
CódigoClaseDescripciónCuerpo
2002xxEndpoint actualizado.Sin cuerpo
4004xxEl cuerpo de la petición está vacío o no es JSON válido.ErrorResponse
4014xxSe requiere autenticación o las credenciales son inválidasErrorResponse
4034xxPermisos insuficientesErrorResponse
4044xxnot_found — el endpoint no existe o no pertenece al usuario.ErrorResponse
4134xxEl cuerpo de la petición supera el tamaño máximo admitido (body_too_large).ErrorResponse
4224xxDatos inválidos. Códigos posibles: webhook_url_empty, webhook_url_too_long, webhook_url_invalid_format, webhook_url_not_https, webhook_events_required, webhook_events_too_many, webhook_event_invalid, webhook_status_invalid, no_valid_fields.ErrorResponse
4294xxLímite de tasa excedidoErrorResponse
Errores de PUT /v1/webhooks/{id}
CódigoClaveEjemplo
400body_empty

El cuerpo de la petición está vacío.

Envelope
meta.request_id
c4d5e6f7a8b9
400invalid_json

El cuerpo no es JSON válido.

Envelope
meta.request_id
d5e6f7a8b9c0
401unauthorized

Credenciales de autenticación ausentes o inválidas.

Envelope
meta.request_id
c4d5e6f7a8b9
403forbidden

No tienes permiso para acceder a este recurso.

Envelope
meta.request_id
d5e6f7a8b9c0
413body_too_large

El cuerpo de la petición es demasiado grande.

Envelope
meta.request_id
1a2b3c4d5e6f
429rate_limit_exceeded

Límite de peticiones excedido. Inténtalo de nuevo en 45 segundos.

Envelope
meta.request_id
f7a8b9c0d1e2
Cabeceras de respuesta
  • Retry-After: integer — Segundos a esperar antes de reintentar. Coincide con la ventana de rate-limit del endpoint (típicamente 60s para listas, 1-5s para operaciones idempotentes en vuelo).
  • X-RateLimit-Limit: integer — Límite de solicitudes configurado para este bucket (emitido sólo en 429).
  • X-RateLimit-Remaining: integer — Solicitudes restantes en la ventana actual — siempre 0 en el momento del 429 (emitido sólo en 429).
  • X-RateLimit-Reset: integer — Unix epoch absoluto (segundos) en que se reinicia la ventana. Emitido sólo en 429, junto con Retry-After. Puede existir sobreescritura por endpoint (p. ej. `rate_limited_login`).