> ## 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.

# Inicio rápido

> Crea una suscripción de webhook, actívala, recibe el evento de ciclo de vida hub.destination.verified y confirma la entrega.

Este camino necesita cuatro llamadas al hub. Se suscribe al hecho de ciclo de vida `hub.destination.verified` del propio hub, así que no necesitas un productor de producto aparte para la primera comprobación de extremo a extremo.

Cada llamada a `/v1` envía el header `Authorization: Bearer TOKEN` y `Content-Type: application/json`. El hub lee el tenant solo desde el token.

## Antes de empezar

***

Necesitas:

* Un hub en ejecución y un token. La lectura del catálogo también necesita `catalog` `get`.
* Un endpoint `https://` público que controles. El hub rechaza direcciones privadas, de loopback y de metadatos de nube.

## Las cuatro llamadas

***

```
1. GET  /v1/catalog                    → find hub.destination.verified
2. POST /v1/subscriptions              → id + signingSecret
3. POST /v1/subscriptions/{id}/ping    → activate and emit the lifecycle fact
4. GET  /v1/subscriptions/{id}/health  → confirm one successful delivery
```

## 1. Encuentra la clave de coincidencia y el origin

***

`GET /v1/catalog`

Encuentra la entrada `hub.destination.verified`, que pertenece al hub. La clave de coincidencia es `<resource>.<event>`. La aplicación productora es `streaming-hub`.

Cada entrada del catálogo expone `resourceType`, el verbo de evento simple como `eventType` y el `topic` de la aplicación del productor. Construye la clave de coincidencia sin fuente directamente como `<resourceType>.<eventType>`. Un tema v3 tiene la forma `lerian.streaming.<source>` y se repite en los eventos de ese productor.

## 2. Crea la suscripción

***

`POST /v1/subscriptions`

Envía `X-Idempotency` con un valor único.

```json theme={null}
{
  "name": "quick-start",
  "sink_kind": "webhook",
  "endpoint": "https://hooks.example.com/lerian",
  "event_types": ["hub.destination.verified"],
  "origin": "streaming-hub"
}
```

`event_types` contiene claves de coincidencia sin fuente, no tipos completos de CloudEvents. `origin` fija la suscripción a un solo `ce-source`. Omítelo solo cuando quieras intencionalmente la misma clave de cualquier productor. Ambos campos son inmutables después de la creación. `schema_major` es opcional. `plan_tier` usa `standard` de forma predeterminada.

La respuesta `201` lleva el `id` de la suscripción y el `signingSecret` en texto plano. Guarda el secreto ahora. Ninguna ruta de lectura lo devuelve.

## 3. Activa el destino y emite el hecho de prueba

***

`POST /v1/subscriptions/{id}/ping`

Un webhook nuevo empieza en `pending_verification`. El ping envía un sondeo firmado por la ruta de entrega de producción. Tu endpoint debe responder con `2xx`.

```json theme={null}
{ "outcome": "ok", "statusCode": 200, "errorClass": "" }
```

`outcome: "ok"` mueve la suscripción a `active`. Después de que ese cambio de estado se confirma, el hub intenta emitir `hub.destination.verified` con `ce-source: streaming-hub`. Si esa emisión de mejor esfuerzo tiene éxito, la suscripción que acabas de crear coincide con el hecho y lo recibe. Repetir el ping para una suscripción que ya está activa vuelve a sondear el endpoint, pero no reemite el evento de ciclo de vida.

## 4. Confirma la entrega

***

Tu endpoint recibe un `POST` firmado con `X-Lerian-Event-Id`, `X-Lerian-Event-Type` y `X-Lerian-Delivery-Id`. Verifica el HMAC antes de confiar en el cuerpo y deduplica por `X-Lerian-Event-Id`.

Luego llama a `GET /v1/subscriptions/{id}/health`. Un `last_success_at` reciente y un éxito en `delivery_outcomes` confirman que el camino funciona de extremo a extremo.

Una suscripción `pull` no necesita endpoint ni ping. Créala con `sink_kind: "pull"` y luego lee `GET /v1/events?subscription_id=<id>`.

Consulta [Gestión de suscripciones](/es/platform/streaming-hub/managing-subscriptions) y [Consumo de eventos](/es/platform/streaming-hub/consuming-events) para el ciclo de vida, las firmas, los reintentos y los cursores.
