Checklist de produção
O que conferir antes de virar a chave zc_live_: segurança, testes, limites, monitoramento e suporte.
Antes de trocar a chave zc_test_ pela zc_live_, confira cada item. A lista é para você marcar no seu processo de homologação; nada aqui é enviado à ZapCar.
Segurança das credenciais
- A chave
zc_live_está numa variável de ambiente ou cofre de segredos do servidor, fora do repositório. - Nenhuma chamada à API sai do navegador ou do app mobile: tudo passa pelo seu backend.
- A chave não aparece em URL, query string, log de aplicação nem ferramenta de monitoramento.
- O secret do webhook (
whsec_…) também está fora do código. - Você sabe quem na empresa pode gerar e revogar chaves e tem um procedimento de rotação.
Testes realizados
- O fluxo completo rodou no sandbox com
TST0001(sucesso),TST0404(erro definitivo),TST0503(erro retentável) eTST9999(nunca conclui). - A tela trata
TST0002(gravame),TST0004(débito sem valor informado) eTST0005(sinistro e leilão) sem mostrar “nada consta” onde hánull. - Os testes automatizados conferem
ambiente: "test"nas respostas do sandbox (e a ausência dele em produção). - Uma consulta real de cada serviço usado foi feita e guardada como fixture do campo dados.
- Pedidos inválidos (placa errada, campo faltando, UF fora da lista) são recusados com a mensagem certa ao usuário.
Limites de requisições
- O volume esperado cabe em 120 requisições por minuto, somando criação e polling. Se não couber, a equipe comercial foi avisada antes.
- O
429é tratado esperando oRetry-After, sem laço apertado. - O polling tem intervalo de 3 a 5 s, teto de 5 minutos e concorrência limitada.
Tratamento de erros
- O código decide pelo
codigo/erro_codigoe peloretryable, nunca pelo texto deerro. status: "erro"é tratado como terminal: nova tentativa é um POST novo, com teto de 3.retryableausente é tratado como “não repetir automaticamente”.- O
request_iddas respostas de erro é registrado para o suporte. - Campos desconhecidos na resposta são ignorados (nada quebra quando a API acrescenta um campo).
Idempotência e cobrança
- Todo POST que cobra envia
Idempotency-Keyderivada do pedido e da tentativa, gravada antes da chamada. - Timeout de rede no POST é repetido com a mesma chave; consulta que falhou ganha chave nova.
- O saldo é monitorado com
GET /v1/saldoe há alerta antes de acabar. - Há conferência periódica entre os
valor_cobradoregistrados e o extrato da carteira (débitos e estornos).
Webhooks
- A assinatura é validada sobre o corpo bruto, em tempo constante, com tolerância de 5 minutos.
- Eventos são deduplicados pelo id e processados fora da requisição (resposta 2xx em menos de 10 s).
- Eventos de consultas que o seu sistema não criou (portal, Telegram) são ignorados sem erro.
- Há reconciliação por polling para consultas que ficaram em processando além do esperado.
Monitoramento e logs
- Você mede taxa de sucesso, de erro por erro_codigo e tempo até a conclusão, por serviço.
- Há alarme para
401(chave revogada),402(saldo) e pico dePROVIDER_UNAVAILABLE. - Logs registram id da consulta, serviço, status e request_id, sem o resultado inteiro nem dado pessoal.
- Alguém acompanha o changelog e a página de status.
Dados pessoais (LGPD)
- Você guarda só o que usa e tem prazo de retenção definido.
- Os serviços de pessoa enviam
finalidadeedeclaracao_finalidadeverdadeiras para o uso real. - O acesso ao resultado e ao PDF no seu sistema é restrito a quem tem direito ao pedido.
Fluxo de suporte
- Existe um caminho interno para levar um problema à ZapCar com
request_idouidda consulta, horário e endpoint. - O contato da equipe de integração é conhecido: Fale conosco › API e integrações.
Dica:
Pronto para produção? A primeira consulta real de cada serviço é a melhor última verificação: confira o débito no extrato e o resultado na sua tela.