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

Actualizar un endpoint webhook

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

Actualiza la URL, los eventos suscritos o el estado de un endpoint webhook ya registrado.

Solo cambia lo que viene en el cuerpo: Un campo ausente se queda como estaba, y un cuerpo sin ningún campo editable responde con un estado HTTP 422 (con no_valid_fields en el cuerpo).

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

Identificador único del endpoint webhook (UUID v4).

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

Nueva URL receptora del webhook. Se rechaza si no resuelve a una dirección pública o si supera 2048 caracteres y, en producción, también si no usa HTTPS.

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

Nuevos eventos a los que se suscribe el endpoint webhook. Sustituyen a la lista anterior. Entre 1 y 10.

descriptionstring | nullanulable (?–255)opcional

Nueva etiqueta libre para distinguir el endpoint webhook de los demás. null la elimina; más de 255 caracteres responde 422 webhook_description_too_long.

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

Nuevo estado del webhook. active recibe entregas; disabled las detiene.

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 webhook actualizado.
CampoTipoDescripción
type*string

Tipo de recurso JSON:API. Siempre webhook_endpoint.

p. ej. webhook_endpoint
id*string (uuid)

Identificador único del endpoint webhook (UUID v4).

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

Datos del endpoint webhook (URL receptora, eventos suscritos, estado y secreto).

url*string (uri)

URL receptora del webhook. En producción se rechaza si no usa HTTPS, si resuelve a una dirección privada o si pasa de 2048 caracteres.

p. ej. https://example.com/webhooks/entregas
events*array (elementos: 1–10, elementos únicos)

Eventos a los que se suscribe el endpoint webhook. Entre 1 y 10.

description*string | nullanulable

Etiqueta libre para distinguir el endpoint webhook de los demás.

p. ej. Alta de pagos en el ERP
status*string

Estado actual del webhook — active: Recibe entregas; disabled: Se desactivó manualmente; auto_disabled: Se desactivó automáticamente tras superar el umbral de fallos consecutivos.

p. ej. active
consecutive_failures*integer

Cantidad de fallos consecutivos. Se reinicia al primer éxito.

p. ej. 0
last_delivery_at*TimestampUTC | null

Fecha y hora de la última entrega exitosa, en ISO 8601 UTC. null cuando el endpoint aún no completó ninguna entrega.

secretstring

Clave compartida para verificar firmas. Solo presente en la respuesta de creación y de rotación del endpoint; se omite en cualquier otra respuesta. Se usa para validar las cabeceras X-Webhook-Signature y X-Webhook-Signature-Timestamped de cada entrega.

p. ej. a0b1c2d3e4f5061728394a5b6c7d8e9f00112233445566778899aabbccddeeff
secret_hintstring

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

p. ej. ...4f2a
created_at*string (date-time)

Timestamp ISO 8601 en UTC con sufijo Z explícito; por ejemplo, "2026-05-01T05:14:38Z". Los campos *_at, *_end, *_start y *_date adoptan esta forma. meta.datetime describe el mismo contrato en la respuesta.

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

Timestamp ISO 8601 en UTC con sufijo Z explícito; por ejemplo, "2026-05-01T05:14:38Z". Los campos *_at, *_end, *_start y *_date adoptan esta forma. meta.datetime describe el mismo contrato en la respuesta.

p. ej. 2026-05-01T05:14:38Z
Códigos de respuestaPUT /v1/webhooks/{id}
CódigoClaseDescripciónCuerpo
2002xxEndpoint webhook actualizado.WebhookEndpoint
4004xxEl cuerpo de la petición está vacío o no es JSON válido, o la URL nueva no resuelve a una dirección pública.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_invalid_type, 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_description_invalid_type, webhook_description_too_long, webhook_status_invalid, no_valid_fields. Una description de más de 255 caracteres responde webhook_description_too_long. Todo error de campo trae source.pointer.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
c4d5e6f7a8b99b8a7f6e5d4c
400invalid_json

El cuerpo no es JSON válido.

Envelope
meta.request_id
d5e6f7a8b9c00c9b8a7f6e5d
400url_dns_failed

No se pudo resolver el nombre de la dirección.

Envelope
meta.request_id
d4e5f6a1b2c44c2b1a6f5e4d
400url_ssrf_blocked

La URL indicada resuelve a una dirección no pública.

Envelope
meta.request_id
d4e5f6a1b2c55c2b1a6f5e4d
401unauthorized

Credenciales de autenticación ausentes o inválidas.

Envelope
meta.request_id
c4d5e6f7a8b99b8a7f6e5d4c
403permission_denied

No tienes permiso para acceder a este recurso.

Envelope
meta.request_id
d5e6f7a8b9c00c9b8a7f6e5d
413body_too_large

El cuerpo de la petición es demasiado grande.

Envelope
meta.request_id
1a2b3c4d5e6ff6e5d4c3b2a1
429rate_limit_exceeded

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

Envelope
meta.request_id
f7a8b9c0d1e22e1d0c9b8a7f
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. Se emite en cada 429 y, en la API autenticada, también en las respuestas correctas, donde es el tope por clave del plan de la cuenta.
  • X-RateLimit-Remaining: integer — Solicitudes restantes en la ventana actual. Siempre 0 en el momento del 429; en una respuesta correcta de la API autenticada es lo que queda del tope por clave.
  • X-RateLimit-Reset: integer — Unix epoch absoluto (segundos) en que se reinicia la ventana. Se emite en cada 429, junto con Retry-After, y en las respuestas correctas de la API autenticada. Puede existir sobreescritura por endpoint (p. ej. `rate_limited_login`).