Simulacao realista da API Recintos (RCNT) da Receita Federal para staging e testes
Por padrao a auth esta desligada. Se ativada (SIMULACRO_ENFORCE_AUTH=true):
curl -c cookies.txt -X POST /autenticar \
-H "Content-Type: application/json" \
-d '{"cpf":"12345678909","senha":"qualquer-chave"}'
# Resposta inclui csrfToken e cookie set-token
curl -X POST /ext/acesso-pessoas \
-H "Content-Type: application/json" \
-d '{
"tipoOperacao": "I",
"idEvento": "evt-001",
"dataHoraOcorrencia": "2026-03-20T10:00:00.000-0300",
"dataHoraRegistro": "2026-03-20T10:00:01.000-0300",
"cpfOperadorOcorrencia": "12345678909",
"cpfOperadorRegistro": "12345678909",
"codigoRecinto": "1234567",
"contingencia": false,
"identificacao": "12345678909",
"nome": "Fulano de Tal",
"direcao": "E",
"catraca": "CAT-01"
}'
# Resposta: 201 com protocolo (UUID v4)
Controle o comportamento via header ou admin:
# Via header em qualquer request:
curl -H "X-Simulacro-Mode: timeout" ...
curl -H "X-Simulacro-Mode: business_error" ...
# Via admin (persistente):
curl -X PUT /simulacro/scenarios/global \
-H "Content-Type: application/json" \
-d '{"mode": "technical_error", "statusCode": 503}'
| Metodo | Path | Descricao |
|---|---|---|
| POST | /autenticar | Autenticacao (cookie set-token + CSRF) |
| POST | /ext/* | 22 endpoints RCNT (Anexo III) |
| GET | /simulacro/health | Saude e configuracao |
| GET | /simulacro/endpoints | Lista dos 22 endpoints |
| GET | /simulacro/events | Consulta event store |
| GET | /simulacro/stats | Estatisticas |
| POST | /simulacro/auth/token | Gera token direto (admin) |
| PUT | /simulacro/scenarios/global | Define cenario global |
| GET | /docs | Swagger UI |
| Modo | Comportamento |
|---|---|
| success | Aceita evento, retorna 201 com protocolo (padrao) |
| business_error | Erro de validacao de negocio (422) |
| technical_error | Erro interno simulado (500) |
| auth_error | Autenticacao invalida (401) |
| forbidden | Acesso negado (403) |
| timeout | Sem resposta (simula timeout do cliente) |
| random_error | 50% chance de erro (503) |