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

# Registros

> RRsets, o ápice, e os registros que a plataforma gerencia para você.

<a id="records" />

## Registros

Um registro é um **RRset**: um nome, um tipo e um array de `values`. A atualização de um registro substitui toda a lista de valores.

<Tabs>
  <Tab title="Console">
    Abra a zona de **DNS** e escolha **Add Record**. Informe um **Name** — um subdomínio como `www`, ou `@` para o ápice — escolha um **Type** e coloque uma entrada por linha em **Values**. Essa lista é o RRset. **TTL** é opcional.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST /v1/zones/{zone_id}/records
    {
      "name": "www.example.com",
      "type": "A",
      "ttl": 300,
      "values": [
        { "content": "203.0.113.10" },
        { "content": "203.0.113.11" }
      ]
    }
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic dns record create <zone-id> \
      --name www.example.com --type A --ttl 300 \
      --values '[{"content":"203.0.113.10"},{"content":"203.0.113.11"}]'
    ```

    `--values` recebe o array JSON sem alterações, então o RRset usa o mesmo formato enviado pela rede.
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    rec, err := dns.New(cfg).CreateRecord(ctx, zoneID, &dns.RecordCreateRequest{
        Name: "www.example.com",
        Type: "A",
        TTL:  basaltic.Int(300),
        Values: []*dns.RecordValue{
            {Content: "203.0.113.10"},
            {Content: "203.0.113.11"},
        },
    })
    ```
  </Tab>
</Tabs>

<Note>
  Não é possível preparar um valor sem publicá-lo. `disabled: true` é recusado: não há onde armazenar um valor que não será servido. Antes, esse valor era aceito e depois descartado, indicando sucesso mesmo com a perda do valor. Para tirar um endereço de um RRset, remova-o de `values`.
</Note>

<Warning>
  **Um CNAME não pode compartilhar um nome com outro registro nem ficar no ápice da zona.** A API recusa os dois casos para evitar falhas silenciosas de resolução.

  O assinador preenche o NSEC de cada nome com um bitmap dos tipos de registro presentes. Um CNAME junto de um A produz um bitmap indicando "CNAME e A", e um resolvedor com validação considera esse nome inválido e responde SERVFAIL. A zona é carregada e os registros parecem corretos na API, mas o nome deixa de resolver para quem valida DNSSEC. Isso segue a RFC 1034 §3.6.2 e a RFC 2181 §10.1.

  No ápice o conflito é inevitável — os conjuntos SOA e NS estão sempre lá — então aponte o ápice para endereços com registros `A`/`AAAA`.
</Warning>

<a id="pointing-a-zone-apex-at-something" />

## Apontar o ápice de uma zona para um destino

Não há tipo de registro `ALIAS` nem achatamento de CNAME. O ápice recebe endereços IP, portanto use um endereço estável.

Na Basaltic, esse endereço já é estável. Um balanceador de carga é acessado por um [IP flutuante](/pt/networking/gateways) que você aloca e mantém. O endereço não muda enquanto você o mantiver, então um registro `A` no ápice pode apontar para ele. O mesmo vale para uma instância com um IP flutuante anexado.

Para um destino operado por terceiros, como uma CDN ou um serviço de entrada hospedado, você geralmente recebe um nome de host, sem um endereço fixo. O provedor pode alterar os endereços associados a esse nome, que também podem variar conforme a origem da consulta. Por isso, não é seguro fixá-los no ápice. Coloque o `CNAME` em um subdomínio como `www` e redirecione o ápice para ele por HTTP, usando um serviço que você controle.

<a id="platform-managed-records" />

## Registros gerenciados pela plataforma

O SOA, o conjunto NS do ápice e todos os registros DNSSEC são criados e mantidos pela plataforma. Eles têm `managed: true` e não podem ser criados, atualizados ou excluídos pela API.

**A listagem de registros não os retorna por padrão.** Em uma zona assinada, eles são mais numerosos que os seus registros: há um `NSEC3` por nome, além do conjunto `DS`, do `DNSKEY` e do `SOA`. Incluí-los por padrão obrigaria você a percorrer mais registros da plataforma do que seus próprios registros. As informações úteis de DNSSEC ficam na própria zona, em `dnssec`.

Passe `include_managed=true` para obter a zona exatamente como ela é servida:

<Tabs>
  <Tab title="Console">
    A tabela de registros os oculta e diz quantos: *N conjuntos de registros gerenciados pela plataforma*, com um botão **Show** ao lado. **Hide** os coloca de volta.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    GET /v1/zones/{zone_id}/records?include_managed=true
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic dns record list <zone-id> --include-managed
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    page, err := dns.New(cfg).ListRecords(ctx, zoneID, &dns.ListRecordsParams{
        IncludeManaged: basaltic.Bool(true),
    })
    ```
  </Tab>
</Tabs>

Isso é útil para ferramentas que comparam zonas. A [exportação de um arquivo de zona](/pt/dns/zone-files#exporting-a-zone-file) inclui o SOA e o NS do ápice, como em qualquer arquivo de zona, e omite os registros DNSSEC: essas chaves de assinatura são mantidas pela plataforma e não se aplicam a outros provedores.


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