cadastral Endpoints
Documentação detalhada para o domínio cadastral. Projetado para redundância extrema.
[ CNDs Consolidadas (Trabalhista + FGTS + Federal) ]
/api/v1/cadastral/cnd/{cnpj}Visão Geral
Emite e valida em paralelo as TRÊS certidões negativas exigidas para habilitação em licitações e contratações públicas: CNDT do TST (Lei 12.440/2011), CRF do FGTS (Caixa Econômica) e Certidão Conjunta PGFN/Receita Federal (Portaria 1.751/2014). Engine roda os três clients simultaneamente via virtual threads em CompletableFuture.supplyAsync — p99 ≈ latência do nó mais lento (~1.6s), não a soma serial (~3.6s). Vantagens arquiteturais decisivas: (1) DEGRADAÇÃO GRACIOSA — se o nó Caixa devolver 503 (cenário recorrente em janelas de pico fiscal), a resposta NÃO quebra com 500: o sub-record fgts vem com status=INDISPONIVEL + motivo, e o cliente recebe trabalhista + federal úteis para tomar decisão parcial. Só quando os três nós caem simultaneamente o gateway lança 503 — não faz sentido devolver um envelope vazio. (2) PARSE ASP.NET VIEWSTATE VIA JSOUP — o portal Caixa Consulta Regularidade é WebForms puro, exige handshake com __VIEWSTATE/__EVENTVALIDATION; nosso FgtsCndClient faz GET inicial parseia os hiddens com Jsoup, captura cookies e replica o POST autenticado em ~1.2s (Selenium custaria ~3s + 250MB residentes). (3) API OCULTA DO TST — engenharia reversa do endpoint POST /certidao/emitir que o frontend React do tst.jus.br consome; resposta JSON estruturada, sem parsing HTML, latência consistente p50 ~800ms. (4) CIRCUIT BREAKERS DEDICADOS POR NÓ (tstCndCB, fgtsCndCB, federalCndCB) — falha de uma certidão não envenena as outras. Resposta carrega certidoesResolvidas (0–3) e degradado:boolean para sinalizar reprocessamento. Casos de uso: due diligence em M&A, habilitação automatizada em pregão eletrônico, score de risco de inadimplência tributária em concessão de crédito.
| Nome | Tipo | Descrição |
|---|---|---|
| cnpj | string | CNPJ com 14 dígitos numéricos, sem pontuação (sanitizado pela camada de validação). |
[ Sintegra / Inscrição Estadual (IE) ]
/api/v1/cadastral/sintegra/{cnpj}/{uf}Visão Geral
Inscrição estadual unificada via hedge entre o Cadastro Centralizado de Contribuintes do SVRS (consolida ~22 UFs sem CAPTCHA severo) e um agregador aberto que cobre SP/MG/RJ — estados que mantêm portais próprios blindados. UF é opcional: rota /api/v1/cadastral/sintegra/{cnpj} varre nacionalmente, /api/v1/cadastral/sintegra/{cnpj}/{uf} faz o recorte direto (mais barato em quota). Decisão arquitetural não-óbvia — HEDGE COM "EMPTY-AS-FAILURE": o hedge clássico retorna o primeiro sucesso, mas se o CCC respondesse rapidamente com 404 para uma empresa de SP (UF que ele não cobre), enterraria o agregador que estaria a milissegundos de devolver o resultado real. Solução: cada provedor que devolve Optional.empty() é interceptado e re-lançado como falha transitória, fazendo o HedgedExecutor esperar pelo outro. Se AMBOS terminarem empty, o service distingue causa "EMPTY:" e devolve 404 (recurso inexistente) ao invés de 503 (indisponível) — preservando a semântica do GlobalExceptionHandler. Trade-off aceito: ambos provedores são sempre chamados em paralelo, pagando banda do agregador (caro) mesmo quando o CCC teria respondido sozinho — aceitável porque cada chamada Sintegra é cacheada por dias e o ganho de cobertura supera o custo bruto. Parser Jsoup ancorado em rótulos (não posição de coluna), tolerante a reordenação no portal SVRS. Casos de uso: validação cadastral fiscal antes de emissão de NF-e (rejeição em SEFAZ-destino), auditoria de cadeia de fornecedores, anti-fraude em onboarding B2B.
| Nome | Tipo | Descrição |
|---|---|---|
| cnpj | string | CNPJ com 14 dígitos numéricos, sem pontuação. |
| uf | string | Sigla da Unidade Federativa (2 letras). OPCIONAL — quando omitida, varre todas as UFs cobertas. Caminho com UF é ~600ms p50 (CCC vence); sem UF, p95 sobe para ~1.4s (agregador domina). |
[ Simples Nacional (Enquadramento + SIMEI) ]
/api/v1/cadastral/simples/{cnpj}Visão Geral
Resolve o enquadramento da PJ nos regimes Simples Nacional e SIMEI consultando o portal oficial Consulta Optantes da Receita Federal via engenharia reversa de JSF — captura cookies de sessão, parseia o input javax.faces.ViewState, monta o POST do form e extrai a tabela de resultado com Jsoup. Estratégia em CASCATA (não hedge): o provedor primário oficial carrega informação EXCLUSIVA que o fallback REST não devolve — data de exclusão do regime para empresas desenquadradas, dado decisivo para due diligence (M&A, abertura de crédito, análise de risco). Disparar os dois em paralelo faria o fallback ReceitaWS (~600ms) vencer sistematicamente sobre o scraper (~1.8s) e descartaríamos a informação rica. Captcha-Aware Fallback: o portal Consulta Optantes liga hCaptcha em janelas de pico (8h–18h dias úteis); ao detectar o marcador .h-captcha na resposta, o SimplesNacionalReceitaClient lança ResourceUnavailableException explicando o motivo e o SimplesNacionalService cascateia imediatamente para o SimplesNacionalFallbackClient, que reutiliza a integração ReceitaWS — agregador que já entrega os campos opcao_pelo_simples, data_opcao_pelo_simples, opcao_pelo_mei e data_opcao_pelo_mei no payload de CNPJ. Circuit Breakers dedicados (simplesReceitaCB + simplesFallbackCB) impedem que rate-limit do agregador (3 req/min no tier gratuito) ou downtime do portal contagiem o caminho crítico. Resposta carrega o campo fonte para auditoria de SLA — BI consegue medir quantos % do tráfego foi resolvido pelo oficial vs. fallback. Casos de uso: cálculo de tributos em emissor de NF-e (alíquota varia por enquadramento), validação de prerrogativa para licitações de ME/EPP, score de risco em concessão de crédito.
| Nome | Tipo | Descrição |
|---|---|---|
| cnpj | string | CNPJ com 14 dígitos numéricos, sem pontuação. |
[ CEP (Endereçamento + Geocodificação) ]
/api/v1/cep/{cep}Visão Geral
Consulta de endereços completos com corrida de provedores e geocodificação opcional integrada — sem necessidade de chamar Google Maps Geocoding na sequência. O endpoint permanece sob /api/v1/cep/{cep} (contrato preservado); o campo location é uma adição backward-compatible, nullable. Engine de Resiliência em DUAS camadas: (1) TIER 1 — endereço base via hedge paralelo entre ViaCEP, BrasilAPI v1 e AwesomeAPI; o primeiro a responder vence, os perdedores são cancelados. AwesomeAPI já devolve lat/lng nativamente para a maioria dos CEPs urbanos — quando vence o hedge, a geo vem grátis no caminho rápido. (2) TIER 2 — backfill de geocodificação em CASCATA (não hedge — Nominatim público é rate-limited 1 req/s e merece parcimônia): BrasilAPI v2 /api/cep/v2/{cep} primeiro (cache do lado deles, latência estável), Nominatim OSM direto como rede de proteção. A filtragem de coordenada replica a heurística da BrasilAPI: postcode exato 8 dígitos → precisão EXATA; prefixo 5 dígitos → precisão APROXIMADA (escala de bairro); sem match → location segue null. DEGRADAÇÃO GRACIOSA: se ambos providers de geo falharem (CB aberto, rate-limit, timeout), a resposta CEP é entregue SEM location ao invés de 503 — endereço é o core do contrato, geo é enriquecimento. Casos de uso típicos: roteirização (cálculo de frete por distância real, não geodésica), mapas em apps de delivery, geofencing de motoristas, anti-fraude (validar se endereço bate com IP/GPS do cliente em onboarding KYC). Resposta enriquecida (endereço + IBGE + geo) entra no cache 30d, então hits subsequentes não pagam Nominatim.
| Nome | Tipo | Descrição |
|---|---|---|
| cep | string | CEP de 8 dígitos numéricos (com ou sem hífen — sanitizado automaticamente). |
[ CEP - Busca (Autocompletar por Endereço) ]
/api/v1/cep/buscaVisão Geral
Consulta o ViaCEP buscando CEPs a partir do endereço textual informado (UF, cidade e logradouro). Retorna uma lista de candidatos — útil para autocompletar campos de endereço ou confirmar o CEP de uma rua antes de cadastrá-lo. O logradouro deve ter no mínimo 3 caracteres e o resultado é limitado a 50 registros pelo upstream.
| Nome | Tipo | Descrição |
|---|---|---|
| uf | string | Sigla da UF em caixa alta (ex: SP). |
| cidade | string | Nome do município (mínimo 2 caracteres). |
| logradouro | string | Nome do logradouro (mínimo 3 caracteres). |
[ CEP - Reverso (Geocodificação Reversa) ]
/api/v1/cep/reversoVisão Geral
Realiza geocodificação reversa via Nominatim/OpenStreetMap: dado um par de coordenadas WGS84 (latitude e longitude), retorna o endereço brasileiro e o CEP correspondentes ao ponto. Caso de uso principal: o usuário clica num mapa (Leaflet, Google Maps, etc.) e a aplicação obtém o CEP sem que o usuário precise digitar nada. Se o ponto estiver em área sem CEP cadastrado, a lista virá vazia (total: 0).
| Nome | Tipo | Descrição |
|---|---|---|
| lat | number | Latitude WGS84 em graus decimais (ex: -23.5505). |
| lon | number | Longitude WGS84 em graus decimais (ex: -46.6333). |
[ CNPJ (Cadastro de Empresas) ]
/v1/cnpj/{cnpj}Visão Geral
Dados cadastrais completos de empresas. Utiliza Refresh-Ahead para garantir que consultas recorrentes no dia útil sejam instantâneas.
| Nome | Tipo | Descrição |
|---|---|---|
| cnpj | string | CNPJ (14 dígitos numéricos). |
[ ISBN (Dados Bibliográficos) ]
Para garantir o fallback direto na CBL em caso de falha dos outros provedores, configure a variável GATEWAY_ISBN_CBL_API_KEY no seu ambiente.
/v1/isbn/{isbn}Visão Geral
Consulta de dados bibliográficos por ISBN-10 ou ISBN-13. Enriquecimento de capas via Open Library e detalhamento local via CBL.
| Nome | Tipo | Descrição |
|---|---|---|
| isbn | string | ISBN-10 ou ISBN-13 (com ou sem hífens). |
[ CNAE (Classificação Econômica) ]
/v1/cadastral/cnae/{codigo}Visão Geral
Descrição oficial CONCLA para subclasses CNAE. Possui snapshot local de ~1.3k registros para garantir resiliência total.
| Nome | Tipo | Descrição |
|---|---|---|
| codigo | string | Código CNAE (7 dígitos). |
[ IBGE - Estados (UFs) ]
/api/v1/cadastral/ibge/ufVisão Geral
Lista as 27 unidades federativas. Prioriza o portal de serviços do IBGE; BrasilAPI entra como fallback automático para garantir disponibilidade em caso de downtime governamental.
| Nome | Tipo | Descrição |
|---|
[ IBGE - Detalhe UF ]
/api/v1/cadastral/ibge/uf/{codeOrSigla}Visão Geral
Detalhes de uma UF com estimativa populacional (best-effort). O fallback BrasilAPI já integra a população na resposta principal, evitando round-trips extras.
| Nome | Tipo | Descrição |
|---|---|---|
| codeOrSigla | string | Sigla (ex: SP) ou código IBGE (ex: 35). |
[ IBGE - Municípios (Por UF) ]
/api/v1/cadastral/ibge/uf/{sigla}/municipiosVisão Geral
Hedge em paralelo entre IBGE-Gov e DadosAbertosBR (Tier 1). Caso ambos falhem, dispara fallback sequencial para BrasilAPI (Tier 2).
| Nome | Tipo | Descrição |
|---|---|---|
| sigla | string | Sigla da UF (2 letras). |
[ IBGE - Busca Global de Municípios ]
/api/v1/cadastral/ibge/municipiosVisão Geral
Super-motor de busca de municípios em memória com latência O(1). Permite busca exata pelo código IBGE (7 dígitos) ou busca textual fonética/substring (ignorando acentos e case). Caso a busca por código falhe localmente, aciona fallback em cascata para a API oficial do IBGE.
| Nome | Tipo | Descrição |
|---|---|---|
| busca | string | Termo de busca numérico (código exato) ou texto (substring flexível). |
[ CBO - Catálogo de Ocupações ]
/api/v1/cadastral/cboVisão Geral
Motor de busca fonética para a Classificação Brasileira de Ocupações (CBO) servido via índice em memória de alta performance. Varre o catálogo canônico de 6 dígitos instantaneamente filtrando profissões por substring, ignorando casing e acentuação.
| Nome | Tipo | Descrição |
|---|---|---|
| busca | string | Parte do título da ocupação (ex: "medico", "operador"). |
[ CBO - Detalhe por Código ]
/api/v1/cadastral/cbo/{codigo}Visão Geral
Traz o título exato de um CBO com base no código de 6 dígitos. Possui malha de resiliência acionável via integrações do CNES/MTE para códigos não listados no catálogo base de 2.562 ocupações.
| Nome | Tipo | Descrição |
|---|---|---|
| codigo | string | Código numérico exato de 6 dígitos (ex: 225125). |
[ DDD (ANATEL) ]
/v1/cadastral/ddd/{ddd}Visão Geral
Consulta oficial DDD -> UF e cidades. BrasilAPI atua como rede de proteção caso o snapshot da ANATEL não consiga ser carregado.
| Nome | Tipo | Descrição |
|---|---|---|
| ddd | string | Código de 2 dígitos (ex: 11). |
Erros & Status Codes
Padrão RFC 7807 para reportar falhas críticas.