# Cofre

> Certificado A1, segundo fator e credencial de acesso ao tribunal.

O cofre guarda as **Conexões** da Conta: o certificado A1 ou a credencial (usuário e senha) de
quem acessa o tribunal. O arquivo, a senha e o segredo do autenticador vão direto para o cofre e
**não ficam no Sync**; a API devolve só os metadados (rótulo, titular, validade).

## Certificado A1

```bash
curl -X POST https://sync.lops.com.br/v1/cofre/certificados \
  -H "Authorization: Bearer $SYNC_CHAVE" \
  -F arquivo=@certificado.pfx -F senha='****' -F rotulo='A1 Dra. Fulana'
```

```json
{"id": "5b1e…", "tipo": "certificado", "rotulo": "A1 Dra. Fulana", "criada_em": "2026-09-26T12:00:00+00:00",
 "padrao": false, "titular": "FULANA DE TAL", "valido_ate": "2027-03-01", "autenticacoes": [], "autenticacoes_recusadas": []}
```

- O `.pfx` é conferido no cadastro: senha, chave privada e validade.
- Um certificado ativo por titular: para renovar, revogue o antigo (`DELETE`) e cadastre o novo.
  Se não revogar antes → `409 titular_ja_cadastrado`.

## Segundo fator (código de 6 dígitos)

Tribunal que pede código de autenticação precisa da chave do autenticador (o texto base32 do QR code):

```bash
curl -X PUT https://sync.lops.com.br/v1/cofre/certificados/$CERT/autenticacoes \
  -H "Authorization: Bearer $SYNC_CHAVE" -H 'Content-Type: application/json' \
  -d '{"tribunal": "8.05", "sistema": "PJE", "segredo": "JBSWY3DPEHPK3PXP"}'
```

```json
{"autenticacoes_atualizadas": ["0.00:DOMICILIO", "8.05:PJE", "8.19:PJE"]}
```

No PJe, **o mesmo código vale para todos os tribunais PJe e para o Domicílio Eletrônico**, porque
o autenticador é da conta nacional. Por isso uma chave cadastrada atualiza todos eles de uma vez.

Quando o tribunal recusa o código, o sistema aparece em `autenticacoes_recusadas` e novos pedidos
para ele voltam `409 segundo_fator_invalido` até você cadastrar a chave nova.

Para ver o código atual sem abrir o celular:
`GET /v1/cofre/certificados/{id}/autenticacoes/{tribunal}/{sistema}/codigo` →
`{"codigo": "123456", "expira_em_s": 17}`.

## Credencial (usuário e senha)

Para sistemas que entram por usuário e senha (ex.: Projudi da Bahia):

```bash
curl -X POST https://sync.lops.com.br/v1/cofre/credenciais \
  -H "Authorization: Bearer $SYNC_CHAVE" -H 'Content-Type: application/json' \
  -d '{"usuario": "...", "senha": "...", "rotulo": "Projudi BA"}'
```

## Conexão padrão

Conta que usa sempre o mesmo certificado (ou a mesma credencial) pode marcá-lo como **padrão**:
o pedido sem `certificado_id` (ou `credencial_id`) passa a usar a padrão do tipo que o tribunal
exige. Quem escolhe continua sendo você — uma vez, no Cofre. Só administrador marca.

```bash
curl -X PUT https://sync.lops.com.br/v1/cofre/certificados/$CERT/padrao -H "Authorization: Bearer $SYNC_CHAVE"
```

- Uma padrão por tipo: marcar outro certificado tira a marca do anterior.
- As listagens do Cofre mostram `"padrao": true` na conexão padrão.
- `DELETE .../padrao` tira a marca; revogar a conexão também. Sem padrão, o pedido sem conexão
  volta a receber `422 conexao_obrigatoria`.
- Credencial: `PUT /v1/cofre/credenciais/{id}/padrao`.

## Quais tribunais

`GET /v1/tribunais` lista o tribunal (`8.05`), a sigla, o sistema, se o acesso é por
`certificado` ou `credencial` e se pede segundo fator.

## Erros do cofre

| HTTP | `erro` | O que fazer |
|---|---|---|
| 409 | `titular_ja_cadastrado` | Revogue o certificado antigo antes de cadastrar o novo |
| 413 | `arquivo_grande_demais` | O `.pfx` passa de 1 MB |
| 422 | `dados_invalidos` | O cofre recusou o arquivo ou a senha; a `mensagem` diz o motivo |
| 404 | `nao_encontrado` | A Conexão não existe nesta Conta (ou foi revogada) |
| 502 | `cofre_indisponivel` | O cofre não respondeu agora. Tente de novo em instantes |
