API mínima em .NET 8 para consulta de razão social de empresas utilizando a API pública do CNPJA.
- ✅ Consulta razão social por CNPJ
- ✅ Validação de formato do CNPJ
- ✅ Tratamento de erros abrangente
- ✅ Logging estruturado
- ✅ Documentação Swagger/OpenAPI
- ✅ Health check endpoint
- ✅ Containerização com Docker
- ✅ Configuração para Azure
Consulta a razão social de uma empresa pelo CNPJ.
URL da API externa: https://open.cnpja.com/office/{cnpj}
Parâmetros:
cnpj
: CNPJ da empresa (pode conter ou não formatação)
Exemplo de uso:
GET /cnpj/11222333000181/razao-social
GET /cnpj/11.222.333/0001-81/razao-social
Resposta de sucesso (200):
{
"cnpj": "11222333000181",
"razao_social": "CAIXA ESCOLAR DA ESCOLA ESTADUAL DE ENSINO FUNDAMENTAL JOSEFINA JACQUES NORONHA",
"consultado_em": "2025-07-14T23:03:39.6426861Z"
}
Possíveis erros:
400 Bad Request
: CNPJ inválido ou mal formatado404 Not Found
: CNPJ não encontrado na base de dados ou razão social não encontrada429 Too Many Requests
: Limite de consultas excedido na API externa500 Internal Server Error
: Erro interno do servidor
Endpoint de verificação de saúde da API.
Resposta:
{
"status": "OK",
"timestamp": "2025-07-14T10:30:00Z"
}
- Certifique-se de ter o .NET 8 SDK instalado
- Navegue até o diretório do projeto
- Execute o comando:
dotnet run
- Acesse a documentação Swagger em:
https://localhost:7000/swagger
(HTTPS) ouhttp://localhost:5000/swagger
(HTTP)
Execute o script de testes PowerShell:
.\test-api.ps1
-
Build da imagem:
docker build -t cnpj-api .
-
Executar container:
docker run -p 8080:8080 cnpj-api
-
Acessar a API:
- Swagger:
http://localhost:8080/swagger
- Health Check:
http://localhost:8080/health
- Swagger:
-
Build e push para Azure Container Registry:
az acr build --registry <registry-name> --image cnpj-api .
-
Deploy para Container Apps:
az containerapp create \ --name cnpj-api \ --resource-group <resource-group> \ --environment <environment-name> \ --image <registry-name>.azurecr.io/cnpj-api \ --target-port 8080 \ --ingress external
- Deploy direto do código:
az webapp up --name <app-name> --resource-group <resource-group> --runtime "DOTNETCORE:8.0"
- Logging detalhado habilitado
- Swagger UI habilitado
- CORS configurado para desenvolvimento
- Logging reduzido (apenas warnings e erros)
- Porta 8080 para containers
- Configuração otimizada para performance
- API Externa: A API do CNPJA possui limite de taxa. Em caso de erro 429, aguarde alguns minutos antes de tentar novamente.
- Dados: Os dados retornados dependem da disponibilidade na base do CNPJA.
- .NET 8
- ASP.NET Core Minimal APIs
- System.Text.Json
- Swagger/OpenAPI
- HttpClient
- Docker
CnpjApiDotnet/
├── Program.cs # Arquivo principal da API
├── CnpjApi.csproj # Configuração do projeto
├── Dockerfile # Containerização
├── .dockerignore # Arquivos ignorados no build
├── Properties/
│ └── launchSettings.json # Configurações de inicialização
├── appsettings.json # Configurações gerais
├── appsettings.Development.json # Configurações de desenvolvimento
├── appsettings.Production.json # Configurações de produção
├── test-api.ps1 # Script de testes
└── README.md # Esta documentação
A API implementa logging estruturado com diferentes níveis:
- Information: Operações normais e consultas realizadas
- Warning: CNPJs inválidos e limites de taxa
- Error: Erros de conectividade e problemas internos
Para monitoramento em produção, recomenda-se integrar com:
- Azure Application Insights
- Azure Monitor
- Logs centralizados
- Validação rigorosa de entrada
- Timeout configurado para requisições externas
- Container executado com usuário não-root
- Logs não expostos informações sensíveis
- CORS configurado adequadamente para cada ambiente
Contribuições são bem-vindas! Por favor, leia CONTRIBUTING.md para detalhes sobre nosso código de conduta e processo de submissão de pull requests.
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade
) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade'
) - Push para a branch (
git push origin feature/nova-funcionalidade
) - Abra um Pull Request
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
- 📧 Issues: GitHub Issues
- 💬 Discussões: GitHub Discussions
- 📖 Documentação: Consulte este README
- CNPJA pela API pública
- Comunidade .NET
- Contribuidores do projeto
⭐ Gostou do projeto? Dê uma estrela! ⭐