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

# Automação e CI

> Uso não interativo da CLI: chave de API, --yes, --json e exit codes em pipelines.

Ambientes não interativos (pipelines de CI, cron jobs, scripts em servidor) não passam pelo device flow. Ele depende de um humano aprovando no navegador. Use uma chave de API e as flags que a CLI já oferece para rodar sem prompts.

## Autentique com uma chave de API

```bash theme={null}
export REPASS_API_KEY=rsto_xxxxxxxxxxxxxxxx
repass whoami
```

<Tip>
  Prefira uma chave **`rsto_`** (da organização) para automação: ela não está atrelada a um usuário, então continua funcionando mesmo se a pessoa que a gerou sair da equipe. Reserve chaves `rstr_` (pessoais) para uso interativo ou quando a automação precisa herdar o papel de um operador específico. Veja [Autenticação](/docs/cli/autenticacao).
</Tip>

Com `REPASS_API_KEY` definida, todo comando resolve a credencial automaticamente. Não é preciso rodar `repass login` no pipeline.

## `--yes` para comandos destrutivos/sensíveis

Fora de TTY, comandos `destructive`/`sensitive` (ver [Convenções](/docs/cli/convencoes)) exigem `--yes` explícito; sem ele, a CLI falha com um erro orientando a flag em vez de travar esperando confirmação:

```bash theme={null}
repass conversions void conv_xxx --data '{"reason":"chargeback confirmado"}' --yes
```

<Warning>
  `--yes` pula a confirmação interativa: a ação executa imediatamente, sem chance de cancelar. Use apenas em automação que você já validou (idealmente testada primeiro em modo leitura/dry-run), nunca como padrão para "destravar" um comando que falhou sem entender o motivo.
</Warning>

## `--json` para parsear a saída

Toda automação que precisa ler o resultado deve usar `--json`. A tabela humana trunca valores e não tem formato estável para parsing:

```bash theme={null}
repass payouts run --program-id prog_xxx --live --yes --json | jq -r '.payouts[].id'
```

## Exit codes para controlar o fluxo

`0` indica sucesso; qualquer outra coisa (`1`) indica falha. Use isso para decidir o próximo passo do pipeline, sem depender do texto da mensagem de erro:

```bash theme={null}
if ! repass payouts run --program-id "$PROGRAM_ID" --live --yes --json > result.json; then
  echo "Falha ao rodar o payout. Abortando pipeline."
  exit 1
fi
```

## Exemplo: step de GitHub Actions

```yaml .github/workflows/payout.yml theme={null}
- name: Rodar payout do ciclo
  env:
    REPASS_API_KEY: ${{ secrets.REPASS_ORG_API_KEY }}
  run: |
    npm install -g @repass/cli
    # preview não muta nada; --yes só pula a confirmação exigida fora de TTY
    repass payouts preview --program-id "$PROGRAM_ID" --json --yes
    repass payouts run --program-id "$PROGRAM_ID" --live --yes --json
```

## Exemplo: script bash com jq

```bash audita-comissoes-pendentes.sh theme={null}
#!/usr/bin/env bash
set -euo pipefail

export REPASS_API_KEY="$REPASS_ORG_API_KEY"

total=$(repass commissions list --status pending --all --json | jq '[.[].amountCents] | add')
echo "Total pendente: ${total} centavos"

if [ "$total" -gt 1000000 ]; then
  echo "Acima do limite esperado. Revisar antes do próximo payout."
  exit 1
fi
```

## Próximos passos

<CardGroup cols={2}>
  <Card title="Convenções" icon="book" href="/docs/cli/convencoes">
    Modelo de risco, exit codes e formato de erros em detalhe.
  </Card>

  <Card title="Uso com agentes" icon="robot" href="/docs/cli/agentes">
    A skill `repass-cli`, para quando a "automação" é um agente de IA.
  </Card>
</CardGroup>
