> ## 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 un tema

> Nombre un tema, elija los valores de entrega y prepare las suscripciones.

Un tema es el destino de publicación de un grupo de suscripciones. Cree uno por flujo de eventos con reglas de acceso y entrega comunes, como `order-events` o `production-alerts`. Los filtros permiten seleccionar parte del flujo sin crear otro tema.

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

## Crear el tema

Seleccione la cuenta y región de publicadores y suscriptores. Crear exige `notifications:CreateTopic`; consulte [permisos](/es/notifications/permissions).

<Tabs>
  <Tab title="Console">
    1. Abra **Notifications** y seleccione **Create Topic**.
    2. Indique un **Name**, como `production-alerts`.
    3. Opcionalmente indique **Display name** y **Tags**.
    4. Seleccione **Create topic**. La consola abre el tema.

       Añada destinatarios en **Subscriptions**. Un tema sin suscripciones confirmadas coincidentes acepta publicaciones, pero no entrega nada.
  </Tab>

  <Tab title="API">
    Envíe a `https://notifications.sa-saopaulo-1.basaltic.sh` con los encabezados de [Autenticación](/es/authentication).

    ```http theme={null}
    POST /v1/topics
    Content-Type: application/json
    ```

    ```json theme={null}
    {
      "name": "production-alerts",
      "display_name": "Production alerts",
      "tags": { "environment": "production" }
    }
    ```

    HTTP `201` devuelve el recurso en `topic`. Guarde `topic.id` para solicitudes anidadas de suscripciones, mensajes y entregas. Use `topic.crn` en políticas IAM.
  </Tab>

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

    ```bash theme={null}
    basaltic notifications topic create --from-file request-1.json
    ```
  </Tab>

  <Tab title="Go">
    Guarde la solicitud JSON de la pestaña API como `request-1.json`. 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.CreateTopicRequest
    	if err := readJSON("request-1.json", &request1); err != nil {
    		return err
    	}
    	result1, err := client.CreateTopic(ctx, &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="choose-a-stable-name" />

## Elija un nombre estable

Los nombres tienen 1–256 letras ASCII, dígitos, puntos, guiones o guiones bajos y empiezan por letra o dígito. Son únicos en la cuenta y región. Los UUID y el prefijo `crn:` están reservados. El nombre es inmutable y forma el CRN; elíjalo antes de las políticas.

El nombre visible es opcional y editable. Se limita a 100 bytes y se usa como asunto del email cuando la publicación no indica asunto.

<span id="delivery-defaults" />

## Valores de entrega predeterminados

El formulario usa la política de reintentos de la plataforma. La API acepta `delivery_policy` al crear o en `PATCH /v1/topics/{topic_id}`:

```json theme={null}
{
  "delivery_policy": {
    "max_attempts": 6,
    "min_delay_seconds": 20,
    "max_delay_seconds": 1200,
    "timeout_seconds": 15
  }
}
```

Las suscripciones pueden sustituir campos individuales. Los campos omitidos heredan el tema y después el valor de la plataforma. Consulte [entregas y reintentos](/es/notifications/delivery#retry-policy) para intervalos y fallos que se reintentan.

<span id="next-steps" />

## Siguientes pasos

[Cree una suscripción](/es/notifications/creating-subscriptions) y [publique un mensaje](/es/notifications/publishing). Abra **Metrics** en el tema para tasas de publicación y entrega. Eliminar el tema también elimina suscripciones, registros de mensajes y entregas.


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