Skip to content

feat(cnpj): atualiza documentação OpenAPI para suportar CNPJ alfanumérico#792

Open
gusvasconcelos wants to merge 3 commits intoBrasilAPI:mainfrom
gusvasconcelos:feat/cnpj-alfanumerico-789
Open

feat(cnpj): atualiza documentação OpenAPI para suportar CNPJ alfanumérico#792
gusvasconcelos wants to merge 3 commits intoBrasilAPI:mainfrom
gusvasconcelos:feat/cnpj-alfanumerico-789

Conversation

@gusvasconcelos
Copy link
Copy Markdown

📋 Descrição

Atualiza a documentação OpenAPI do endpoint CNPJ para refletir o novo padrão alfanumérico da Receita Federal, que passa a aceitar letras de A a Z além de dígitos nos 14 caracteres do CNPJ.

Alterações realizadas:

  • Atualiza descrição do parâmetro cnpj para mencionar "14 caracteres alfanuméricos (dígitos e letras de A a Z)"
  • Atualiza o pattern do schema de ^[0-9]{14}$ para ^[0-9A-Z]{14}$ (e equivalente formatado)
  • Corrige mensagem de erro de exemplo no BadRequestError ("11 dígitos" → "14 caracteres")

🎯 Tipo de Mudança

  • 🐛 Correção de bug (mudança que corrige um problema)
  • ✨ Nova funcionalidade (mudança que adiciona funcionalidade)
  • 💥 Breaking change (correção ou funcionalidade que causa quebra de compatibilidade)
  • 📝 Documentação (mudanças apenas em documentação)
  • ♻️ Refatoração (mudança que não corrige bug nem adiciona funcionalidade)
  • ⚡ Performance (mudança que melhora performance)
  • ✅ Testes (adiciona ou corrige testes)
  • 🔧 Configuração (mudanças em configuração ou build)

⚠️ Checklist de Compatibilidade (CRÍTICO)

  • ✅ Não remove campos de respostas de API existentes
  • ✅ Não renomeia campos de respostas de API existentes
  • ✅ Não muda tipos de dados de campos existentes (string → number, etc.)
  • ✅ Não muda o formato de URLs de endpoints existentes
  • ✅ Não muda códigos de status HTTP de endpoints existentes
  • ✅ Se fez mudanças incompatíveis, criei uma nova versão (v2, v3, etc.)

📚 Checklist de Documentação

  • ✅ Atualizei ou criei documentação OpenAPI em /pages/docs/doc/
  • ✅ Documentação inclui exemplos de requisição e resposta
  • ✅ Documentação está em português
  • ✅ Atualizei README.md se necessário
  • ✅ N/A - Mudanças não requerem documentação

🧪 Checklist de Testes

  • ✅ Criei ou atualizei testes E2E
  • ✅ Todos os testes passam localmente (npm test)
  • ✅ Teste de CORS funciona corretamente
  • ✅ Testei casos de erro (404, 400, 500, etc.)
  • ✅ Testei casos de sucesso
  • ✅ N/A - Mudanças não requerem testes (apenas documentação OpenAPI)

💻 Checklist de Código

  • ✅ Código segue os padrões do projeto (ESLint + Prettier)
  • ✅ Executei npm run fix antes de commitar
  • ✅ Não adicionei dependências desnecessárias ou pesadas
  • ✅ Código não expõe credenciais ou informações sensíveis
  • ✅ Validei todos os inputs de usuário
  • ✅ Tratei erros apropriadamente
  • ✅ Usei Conventional Commits

🚀 Checklist de Performance e Custos

  • ✅ Não adicionei processamento pesado que aumenta custos
  • ✅ Usei cache quando apropriado
  • ✅ Minimizei chamadas a APIs externas
  • ✅ Considerei impacto em rate limits de APIs externas
  • ✅ Testei performance em casos de alto volume

🔍 Como Testar

  1. Acesse a documentação OpenAPI do endpoint CNPJ
  2. Verifique que o parâmetro cnpj agora aceita caracteres alfanuméricos (0-9 e A-Z)
  3. Valide que o pattern regex reflete [0-9A-Z] em vez de apenas [0-9]

📎 Issues Relacionadas

Closes #789

📝 Notas Adicionais

A Receita Federal publicou a Instrução Normativa RFB nº 2.361/2023 instituindo o CNPJ Alfanumérico, com vigência a partir de julho de 2026. Esta mudança na documentação OpenAPI é o primeiro passo para preparar a API para o novo padrão. A implementação da validação e lógica de negócio no service será feita em follow-up.


⚠️ Para Revisores

Pontos de Atenção Críticos:

  1. Compatibilidade: Verifique se há quebra de contrato de API
  2. Documentação: Confirme que está atualizada e completa
  3. Testes: Valide cobertura de casos de sucesso e erro
  4. Performance: Avalie impacto em custos e velocidade
  5. Segurança: Verifique validação de inputs e exposição de dados

Lembre-se: BrasilAPI serve milhares de desenvolvedores e empresas importantes. Mudanças devem ser cuidadosamente avaliadas para garantir confiabilidade e zero downtime.

…rico

Atualiza a documentação do endpoint CNPJ para refletir o novo padrão
alfanumérico da Receita Federal, que passa a aceitar letras de A a Z
além de dígitos nos 14 caracteres do CNPJ.

- Atualiza descrição do parâmetro para mencionar caracteres alfanuméricos
- Atualiza pattern do schema para aceitar [0-9A-Z] em vez de apenas [0-9]
- Corrige mensagem de erro de exemplo (11 -> 14 caracteres)

Closes BrasilAPI#789
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 13, 2026

@gusvasconcelos is attempting to deploy a commit to the BrasilAPI Team on Vercel.

A member of the Team first needs to authorize it.

@lucianopf
Copy link
Copy Markdown
Member

Olá @gusvasconcelos! Boa iniciativa se antecipar ao CNPJ alfanumérico.

Alguns pontos:

1. Regex pode estar mais permissiva que o necessário
O pattern [0-9A-Z]{2}\.[0-9A-Z]{3}\.[0-9A-Z]{3}/[0-9A-Z]{4}-[0-9A-Z]{2} aceita letras em qualquer posição. Pelo que entendi da IN RFB 2.361/2023, apenas a parte de "ordem" será alfanumérica — os dígitos verificadores continuam numéricos. Você conseguiu confirmar isso na spec oficial? Se sim, o pattern poderia ser mais preciso.

2. Doc à frente da implementação
A API hoje não faz validação própria de CNPJ (delega ao serviço externo), então na prática não vai rejeitar nem aceitar alfanuméricos por conta própria. Mas documentar um pattern que aceita [A-Z] antes de julho/2026 pode confundir consumidores. Que tal adicionar uma nota na descrição tipo "A partir de julho/2026, CNPJs poderão conter caracteres alfanuméricos conforme IN RFB 2.361/2023"?

3. Correção do "11 digitos" → "14 caracteres"
Boa correção — isso era um bug na doc.

O que acha?

@gusvasconcelos
Copy link
Copy Markdown
Author

gusvasconcelos commented Apr 14, 2026

Olá @lucianopf! Obrigado pelo feedback.

  1. Você tem toda razão. Apenas as 12 primeiras posições (raiz + ordem) podem ser alfanuméricas. Os Dígitos Verificadores (DV) permanecem estritamente numéricos devido ao cálculo.

Já atualizei o pattern para:
^[0-9A-Z]{12}[0-9]{2}$|^[0-9A-Z]{2}\.[0-9A-Z]{3}\.[0-9A-Z]{3}/[0-9A-Z]{4}-[0-9]{2}$
(Dessa forma, garantimos que os dois últimos caracteres sejam sempre [0-9]).

  1. Entendo a preocupação com o timing, mas acredito que a atualização é oportuna, porque como mencionou acima, o Brasil API consome o minhareceita.org, que já implementaram a lógica de validação alfanumérica.
  • curl https://minhareceita.org/93.ZB0.VRY/V6KA-67 -> Retorna "não encontrado" (CNPJ Válido).
  • curl https://minhareceita.org/93.ZB0.VRY/V6KA-66 -> Retorna "inválido" (CNPJ Inválido).

@sonarqubecloud
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Novo padrão CNPJ Alfanumérico

2 participants