---
title: "Rota el secreto de firma con ventana de solapamiento"
method: POST
path: "/webhook-endpoints/{id}/rotate-secret"
tags: ["Webhooks"]
---

# Rota el secreto de firma con ventana de solapamiento

`POST /webhook-endpoints/{id}/rotate-secret`

## Request

- Base URL: `https://api.met.meteor.com.co/api/v1`
- URL: `https://api.met.meteor.com.co/api/v1/webhook-endpoints/{id}/rotate-secret`
- Auth: one of:
  - `bearer` (a scheme the document does not define)
  - HTTP bearer

Genera un secreto nuevo **con ventana de solapamiento**: durante un rato los dos son válidos, así que puedes desplegar el nuevo sin perder entregas. Es la diferencia con el webhook entrante, donde rotar invalida el anterior de inmediato.

## Path parameters

- `id` string, required

## Request body

- RotateWebhookSecretDto
  - `overlap_hours` number: Cuántas horas sigue siendo válido el secreto ANTERIOR. Durante esa ventana cada entrega viaja firmada con los dos —dos `v1` en `X-Met-Signature`— y tu verificación pasa con cualquiera de ellos. `0` = sin ventana: el secreto viejo deja de valer en el acto. Es lo que se quiere cuando el secreto se filtró, no cuando estás haciendo higiene.

## Response `201`

- object: Sobre en el que viaja toda respuesta correcta de la API. El recurso está en `data`. Los SDKs oficiales lo desenvuelven por ti; un cliente hecho a mano tiene que leer `.data`.
  - `success` true, required: Siempre `true` en una respuesta 2xx.
  - `data` WebhookSecretRotatedResponseDto, required
    - `created_at` string, required
    - `description` string, nullable, required
    - `disabled_reason` string, nullable, required: Por qué está `disabled`, en texto. Lo escribe el apagado automático cuando un endpoint lleva días sin responder bien: dice cuántas entregas seguidas se agotaron y desde cuándo. `null` si está activo o si lo apagaste tú.
    - `enabled_events` string[], required: Tipos de evento suscritos. `*` no es un tipo de evento: es el comodín «todos los del catálogo, incluidos los que se agreguen después», así que `["*"]` significa todos. La lista sale de `WEBHOOK_EVENTS` — el catálogo vivo, con descripción y scope, está en `GET /webhook-endpoints/event-types`.
    - `id` string, required: ID del endpoint (UUID).
    - `last_delivery_at` string, nullable, required: Cuándo se le entregó un evento por última vez. `null` si nunca.
    - `object` 'webhook_endpoint', required: Siempre `webhook_endpoint`.
    - `previous_secret_expires_at` string, nullable, required: Fin de la ventana de solapamiento. Hasta ese instante las entregas viajan firmadas con los dos secretos y tu servidor verifica con cualquiera; a partir de ahí, solo con el nuevo. `null` si rotaste con `overlap_hours: 0`, o sea sin ventana: el secreto viejo dejó de valer en el acto.
    - `secret` string, required: El secreto nuevo. Solo aparece en esta respuesta.
    - `status` 'active' | 'disabled', required: `disabled` = el endpoint existe pero no recibe entregas.
    - `url` string, required: A dónde Meteor entrega los eventos.

## Other responses

- `400`: La request no es válida: un campo no pasa validación, falta un parámetro requerido o el recurso no admite la transición solicitada.
- `401`: API key ausente, inválida, revocada o expirada — o el workspace está bloqueado.
- `403`: La key está autenticada pero no puede ejecutar esta operación: scope faltante, capacidad deshabilitada, modo test restringido o recurso fuera de su cartera.
- `404`: El recurso no existe o no está disponible dentro del alcance de la key. No revela la existencia de recursos de otros tenants.
- `409`: La operación entra en conflicto con el estado actual o con un Idempotency-Key en uso. No reintentes con el mismo key y un body distinto.
- `429`: Se superó el límite por minuto de la key o la cuota del plan. Respeta `Retry-After`; el SDK ya reintenta solo.
- `500`: Error del servidor o del Met que ejecutaba. El SDK reintenta los 5xx con backoff.

---

[API](https://skmtc.dev/meteor/apis/met-public-api.md) · [All operations](https://skmtc.dev/meteor/apis/met-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meteor/apis/met-public-api/revisions/5d9ca294295c?raw)
