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

# Criando um tópico

> Nomeie um tópico, escolha os padrões de entrega e prepare as assinaturas.

Um tópico é o destino de publicação para um grupo de assinaturas. Crie um por fluxo de eventos com regras de acesso e entrega comuns, como `order-events` ou `production-alerts`. Filtros permitem selecionar parte do fluxo sem criar outro tópico.

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

## Criar o tópico

Selecione a conta e região de publicadores e assinantes. Criar exige `notifications:CreateTopic`; veja [permissões](/pt/notifications/permissions).

<Tabs>
  <Tab title="Console">
    1. Abra **Notifications** e selecione **Create Topic**.
    2. Informe um **Name**, como `production-alerts`.
    3. Opcionalmente informe **Display name** e **Tags**.
    4. Selecione **Create topic**. O console abre o tópico.

       Adicione destinatários em **Subscriptions**. Um tópico sem assinaturas confirmadas correspondentes aceita publicações, mas não entrega nada.
  </Tab>

  <Tab title="API">
    Envie a `https://notifications.sa-saopaulo-1.basaltic.sh` com os cabeçalhos de [Autenticação](/pt/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` retorna o recurso em `topic`. Salve `topic.id` para solicitações aninhadas de assinaturas, mensagens e entregas. Use `topic.crn` em políticas IAM.
  </Tab>

  <Tab title="CLI">
    Salve a solicitação JSON da aba API como `request-1.json`. Use sua conta e região configuradas.

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

  <Tab title="Go">
    Salve a solicitação JSON da aba API como `request-1.json`. Configure credenciais, conta e região pelas variáveis de ambiente do 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" />

## Escolha um nome estável

Nomes têm 1–256 letras ASCII, dígitos, pontos, hífens ou sublinhados e começam por letra ou dígito. São exclusivos na conta e região. UUIDs e o prefixo `crn:` são reservados. O nome é imutável e compõe o CRN; escolha-o antes das políticas.

O nome de exibição é opcional e editável. Limita-se a 100 bytes e vira o assunto do email quando a publicação não informa assunto.

<span id="delivery-defaults" />

## Padrões de entrega

O formulário usa a política de tentativas da plataforma. A API aceita `delivery_policy` ao criar ou em `PATCH /v1/topics/{topic_id}`:

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

Assinaturas podem substituir campos individuais. Campos omitidos herdam o tópico e depois o padrão da plataforma. Veja [entregas e tentativas](/pt/notifications/delivery#retry-policy) para intervalos e falhas repetidas.

<span id="next-steps" />

## Próximos passos

[Crie uma assinatura](/pt/notifications/creating-subscriptions) e [publique uma mensagem](/pt/notifications/publishing). Abra **Metrics** no tópico para taxas de publicação e entrega. Excluir o tópico também exclui assinaturas, registros de mensagens e entregas.


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