> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Rotar el secreto de firma de un webhook

> Reemplaza el secreto de firma de una suscripción webhook de Streaming Hub, usando el solapamiento en el que cada entrega lleva dos firmas.

Reemplaza el secreto de firma de una suscripción webhook sin perder una entrega.

## Participantes

***

* **Tu institución.** Tu sistema llama a la API de Streaming Hub con un token de Access Manager. Tu endpoint HTTPS recibe las entregas.
* **Streaming Hub.** El servicio de plataforma de Lerian que firma cada entrega. Lerian lo configura para tu institución.
* **Producto Lerian.** El producto que publica el evento de negocio, por ejemplo Midaz.

## Diagrama

***

![Rotar el secreto de firma de un webhook](https://mintcdn.com/lerian-49cb71fc/MbifquGny5fsdtVy/images/es/d2/id-rotate-a-webhook-signing-secret.svg?fit=max\&auto=format\&n=MbifquGny5fsdtVy\&q=85\&s=c7a0c4003a5a3c3e28f6c86ac0584c94)

## Pasos

***

| # | Origen | Destino | Mensaje | API de Lerian | Qué ocurre |
| - | - | - | - | - | - |
| 1 | Tu institución | Streaming Hub | API de Lerian | [`POST /v1/subscriptions/{id}/secret/rotate`](https://docs.lerian.studio/es/reference/platform/streaming-hub/rotate-subscription-secret) | Pide un nuevo secreto de firma. Envía un header `X-Idempotency` único. |
| 2 | Streaming Hub | Tu institución | Respuesta | | La respuesta trae el nuevo `signingSecret` y el `overlapUntil`, 24 horas después de la rotación. Guarda el secreto ahora. Ninguna ruta de lectura lo devuelve. |
| 3 | Tu institución | Tu institución | Paso interno | | Agrega el nuevo secreto a tu verificación de firma. Conserva el secreto anterior hasta el `overlapUntil`. |
| 4 | Producto Lerian | Streaming Hub | Evento | | El producto publica un evento de negocio. |
| 5 | Streaming Hub | Tu institución | Webhook | Los eventos en `event_types` | Hasta el `overlapUntil`, cada entrega lleva dos headers `X-Webhook-Signature`. El primero usa el nuevo secreto y el segundo usa el secreto anterior. |
| 6 | Tu institución | Streaming Hub | Respuesta | | Acepta la entrega cuando una de las firmas coincide con un secreto que tienes. Responde `2xx`. |
| 7 | Producto Lerian | Streaming Hub | Evento | | Después del `overlapUntil`, el producto publica otro evento. |
| 8 | Streaming Hub | Tu institución | Webhook | Los eventos en `event_types` | Después del `overlapUntil`, cada entrega lleva solo la firma del nuevo secreto. |
| 9 | Tu institución | Streaming Hub | Respuesta | | Verifica la firma y responde `2xx`. |
| 10 | Tu institución | Tu institución | Paso interno | | Quita el secreto anterior de tu verificación de firma. |

## Cómo saber que terminó

***

[`GET /v1/subscriptions/{id}`](https://docs.lerian.studio/es/reference/platform/streaming-hub/get-subscription) muestra `secret_overlap_until` como `null`.

* **Se pierde la respuesta de la rotación.** Envía la solicitud de nuevo con la misma clave `X-Idempotency`. Cuando la primera solicitud termina, recibes el mismo secreto. Mientras todavía se ejecuta, recibes `409` `idempotency_conflict`. Una clave nueva genera otro secreto.
* **Una segunda rotación.** Una segunda rotación reemplaza el secreto anterior de inmediato.

## Relacionados

***

* [Recibir eventos en un webhook](https://docs.lerian.studio/es/diagrams/platform-services/receive-events-on-a-webhook.md)
* [Gestión de suscripciones](https://docs.lerian.studio/es/platform/streaming-hub/managing-subscriptions.md)
* [Consumo de eventos](https://docs.lerian.studio/es/platform/streaming-hub/consuming-events.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.