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

# Crear una suscripción

> Conecte email, webhook o cola a un tema y elija los mensajes recibidos.

Cree suscripciones desde el tema. El protocolo y destino son fijos; cambiarlos exige otra suscripción para autorizar o confirmar el nuevo destino.

<span id="choose-the-destination" />

## Elija el destino

| Protocolo | Destino | Inicio de la entrega |
| - | - | - |
| `email` | Dirección de email | Tras abrir el enlace de confirmación. |
| `https` | URL HTTPS pública | Tras confirmar el propietario la solicitud inicial firmada. |
| `http` | URL HTTP pública | Tras confirmar el propietario la solicitud inicial firmada. |
| `queue` | Nombre, UUID o CRN de la cola | Inmediatamente tras autorizar la cola. |

Prefiera HTTPS. El esquema de la URL debe coincidir con el protocolo. Se rechazan loopback, destinos privados y link-local. No se siguen redirecciones. Las colas deben estar en la misma cuenta y región y exigen `queue:SendMessage` en el destino y `notifications:Subscribe` en el tema.

<span id="create-the-subscription" />

## Crear la suscripción

<Tabs>
  <Tab title="Console">
    1. Abra **Notifications**, elija el tema y abra **Subscriptions**.
    2. Seleccione **Subscribe** para abrir la creación.
    3. Elija **Protocol** e indique **Endpoint**.
    4. Opcionalmente indique **Filter policy** y **Dead-letter queue**.
    5. Para webhook, active **Raw message delivery** solo si el destino espera el contenido publicado sin envoltorio.
    6. Seleccione **Create subscription**.

       En un webhook nuevo, guarde el secreto mostrado para el operador del destino. Al cerrar el diálogo, la consola abre la suscripción. Email y cola abren la página directamente.
  </Tab>

  <Tab title="API">
    ```http theme={null}
    POST /v1/topics/{topic_id}/subscriptions
    Content-Type: application/json
    ```

    ```json theme={null}
    {
      "protocol": "queue",
      "endpoint": "order-workers",
      "filter_policy": {
        "event": ["order.created", "order.paid"]
      },
      "redrive_policy": {
        "dead_letter_queue": "notification-failures"
      }
    }
    ```

    HTTP `201` devuelve un objeto `subscription`. Las colas se resuelven y devuelven como CRN. El tema se indica en la URL y no se repite en la solicitud ni en la respuesta.

    Para webhook, defina `protocol` como `https` y `endpoint` como una URL pública. La primera creación también devuelve `signing_secret`. Repetir tema, protocolo y destino devuelve la suscripción existente sin emitir otro secreto; use PATCH para cambiar la configuración.
  </Tab>

  <Tab title="CLI">
    Guarde la solicitud JSON de la pestaña API como `request-1.json`. Defina `TOPIC_ID` con el UUID del recurso. Use su cuenta y región configuradas.

    ```bash theme={null}
    basaltic notifications subscription subscribe "$TOPIC_ID" --from-file request-1.json
    ```
  </Tab>

  <Tab title="Go">
    Guarde la solicitud JSON de la pestaña API como `request-1.json`. Defina `TOPIC_ID` con el UUID del recurso. Configure credenciales, cuenta y región mediante las variables de entorno del SDK.

    ```go theme={null}
    package main

    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"os"

    	basaltic "github.com/basaltic-sh/sdk-go"
    	"github.com/basaltic-sh/sdk-go/notifications"
    )

    func readJSON(path string, value any) error {
    	data, err := os.ReadFile(path)
    	if err != nil {
    		return err
    	}
    	return json.Unmarshal(data, value)
    }

    func run() error {
    	ctx := context.Background()
    	cfg, err := basaltic.NewConfig(ctx)
    	if err != nil {
    		return err
    	}
    	client := notifications.New(cfg)
    	var request1 notifications.SubscribeRequest
    	if err := readJSON("request-1.json", &request1); err != nil {
    		return err
    	}
    	result1, err := client.Subscribe(ctx, os.Getenv("TOPIC_ID"), &request1)
    	if err != nil {
    		return err
    	}
    	fmt.Printf("%+v\n", result1)
    	return nil
    }

    func main() {
    	if err := run(); err != nil {
    		fmt.Fprintln(os.Stderr, err)
    		os.Exit(1)
    	}
    }
    ```
  </Tab>
</Tabs>

<span id="confirmation" />

## Confirmación

Email y webhooks empiezan en `pending_confirmation`. Los enlaces vencen tras 72 horas de forma predeterminada. Use la acción de reenvío si vence el enlace. El propietario sigue el enlace recibido; responder HTTP `200` a la solicitud inicial del webhook no confirma por sí solo.

Los enlaces del destinatario son independientes de la administración autenticada y no son operaciones SDK ni CLI. El destinatario también puede usar el enlace de cancelación de la notificación. Los administradores eliminan suscripciones mediante la operación DELETE autenticada.

<span id="filtering-and-delivery-options" />

## Filtros y opciones de entrega

Un filtro omitido o vacío recibe todas las publicaciones. Una política no vacía compara solo [atributos del mensaje](/es/notifications/filter-policies), no campos de un cuerpo JSON. Las políticas se aplican a todos los protocolos.

`raw_message_delivery` solo se permite en HTTP y HTTPS. Las colas siempre reciben el envoltorio. `delivery_policy` permite sustituir los campos de la política de reintentos del tema mediante la API.

La cola de fallos de la suscripción recibe envoltorios de entregas de notificación fallidas. Es distinta de la política de una cola, que trata mensajes concedidos repetidamente sin confirmación. Consulte [fallos de entrega](/es/notifications/delivery#dead-letter-queues).

<span id="change-or-delete-a-subscription" />

## Cambiar o eliminar una suscripción

Actualice la configuración en `PATCH /v1/topics/{topic_id}/subscriptions/{subscription_id}`. Omitir `filter_policy` conserva el filtro; un objeto vacío lo elimina. Protocolo y destino son inmutables. Elimine la misma ruta para detener futuras entregas. Lea o rote secretos mediante las acciones específicas, con permisos separados.


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