# Variáveis e segredos

> De onde um valor pode vir, em que ordem o Mariner procura, como manter as credenciais fora das exportações e como capturar valores de uma resposta para que a próxima requisição já os tenha.

## De onde vêm os valores

O Mariner resolve cada `{{nome}}` por uma cascata. Ganha a última camada que define a chave:

1. **As variáveis globais** — não pertencem a nenhum workspace nem a nenhuma coleção. O app não as cria: elas chegam ao importar um pacote `.mariner`.
2. **As variáveis da própria coleção** — importadas de uma coleção do Postman como *‹Coleção› Variables*. Aqui não há o que escolher: elas valem para tudo que está dentro daquela coleção.
3. **O ambiente ativo do workspace** — o que a pílula **● ENV** mostra.
4. **As variáveis locais da requisição** — a aba **Variables** da própria requisição. Use para um valor que não faz sentido em nenhum outro lugar; elas ganham do ambiente.

A ordem é a do próprio Postman (global < coleção < ambiente < local), então uma coleção que você importou envia a mesma requisição nos dois apps. Passe o cursor por um token da URL para ver de qual camada veio o valor.

O valor de uma variável pode conter outros tokens; o Mariner resolve até cinco níveis e deixa um ciclo como texto literal.

## Variáveis dinâmicas embutidas

Produzem um valor novo a cada envio e nunca precisam ser definidas:

| Token | Valor |
|---|---|
| `{{$uuid}}` / `{{$guid}}` | Um UUID aleatório |
| `{{$timestamp}}` | Segundos desde 1970 |
| `{{$isoTimestamp}}` | A hora atual em ISO 8601 |
| `{{$randomInt}}` | Um inteiro entre 0 e 1000 |

## Variáveis de path

Um segmento como `/users/:id` vira uma linha na seção **Path variables** da aba **Params**. Preencha e o segmento é substituído no envio; deixe vazio e o Mariner bloqueia o envio até você preencher. Portas e `https:` não são confundidos com variáveis de path — só conta um dois-pontos que vem depois de uma barra.

## Segredos

Marque **Secret** em uma variável e o valor fica mascarado onde quer que apareça: a lista do ambiente, a prévia da URL, o código gerado. Revele quando precisar, pelo ícone do olho.

- Os valores secretos **ficam de fora de toda exportação** — o pacote `.mariner` e o arquivo do Postman guardam a chave e suas flags com o valor vazio, para que quem receber ponha o seu.
- A folha de geração de código tem um interruptor **Include secrets**, desligado por padrão, que avisa ao ser ativado.
- As variáveis secretas sincronizam com o iCloud como qualquer outra, porque fazem parte do ambiente. As credenciais digitadas na aba **Auth** são diferentes: vão para as Chaves do macOS e nunca saem do Mac — veja [Autenticação](/pt-br/docs/auth).

<aside class="callout" data-label="AGENTES">
Quando um agente fala com o Mariner pelo servidor MCP, os valores secretos nunca são devolvidos — as ferramentas apenas informam se um segredo está definido ou vazio.
</aside>

## Capturar valores de uma resposta

A aba **Post-Response** guarda regras de captura: quando uma resposta chega, pegue um valor dela e escreva em uma variável. Um login que guarda o token é o caso clássico.

1. Toque em **Add rule** e escolha uma **origem**: um caminho JSON no body (`$.token`, `$.data.items[0].id`), um header, um cookie ou o código de status.
2. Escolha o **destino**: o ambiente ativo do workspace ou as variáveis da própria requisição, e a chave a escrever.
3. Opcionalmente, limite a regra a uma faixa de status. O padrão é 200–299, então um login que falhou nunca pisa em um token bom.

Cada regra mostra uma prévia ao vivo contra a última resposta, e o seletor de valores permite clicar em um nó do JSON em vez de escrever o caminho. Os resultados aparecem na aba **Captures** da resposta. Durante uma execução de coleção, as capturas de uma requisição ficam visíveis para a próxima, que é o que faz uma sequência *login → listagem → detalhe* rodar sem intervenção.

A sintaxe de caminhos JSON é deliberadamente pequena: `$`, chaves com ponto e índices numéricos. Sem curingas, sem filtros.

---
Source: https://marinerhttp.dev/pt-br/docs/variables · Mariner docs
