Skip to content

andreLuizSB/cnpj-api-csharp

Repository files navigation

CNPJ API

.NET License: MIT Docker Azure

API mínima em .NET 8 para consulta de razão social de empresas utilizando a API pública do CNPJA.

🎯 Funcionalidades

  • ✅ 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

Endpoints

GET /cnpj/{cnpj}/razao-social

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 formatado
  • 404 Not Found: CNPJ não encontrado na base de dados ou razão social não encontrada
  • 429 Too Many Requests: Limite de consultas excedido na API externa
  • 500 Internal Server Error: Erro interno do servidor

GET /health

Endpoint de verificação de saúde da API.

Resposta:

{
  "status": "OK",
  "timestamp": "2025-07-14T10:30:00Z"
}

Como executar

Desenvolvimento Local

  1. Certifique-se de ter o .NET 8 SDK instalado
  2. Navegue até o diretório do projeto
  3. Execute o comando:
    dotnet run
  4. Acesse a documentação Swagger em: https://localhost:7000/swagger (HTTPS) ou http://localhost:5000/swagger (HTTP)

Testes Automatizados

Execute o script de testes PowerShell:

.\test-api.ps1

Docker

  1. Build da imagem:

    docker build -t cnpj-api .
  2. Executar container:

    docker run -p 8080:8080 cnpj-api
  3. Acessar a API:

    • Swagger: http://localhost:8080/swagger
    • Health Check: http://localhost:8080/health

Deploy no Azure

Azure Container Apps (Recomendado)

  1. Build e push para Azure Container Registry:

    az acr build --registry <registry-name> --image cnpj-api .
  2. 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

Azure App Service

  1. Deploy direto do código:
    az webapp up --name <app-name> --resource-group <resource-group> --runtime "DOTNETCORE:8.0"

Configurações

Ambiente de Desenvolvimento

  • Logging detalhado habilitado
  • Swagger UI habilitado
  • CORS configurado para desenvolvimento

Ambiente de Produção

  • Logging reduzido (apenas warnings e erros)
  • Porta 8080 para containers
  • Configuração otimizada para performance

Limitações

  • 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.

Tecnologias Utilizadas

  • .NET 8
  • ASP.NET Core Minimal APIs
  • System.Text.Json
  • Swagger/OpenAPI
  • HttpClient
  • Docker

Estrutura do Projeto

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

Monitoramento e Logs

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

Segurança

  • 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

🤝 Contribuindo

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.

Desenvolvimento Local

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -am 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

🆘 Suporte

🙏 Agradecimentos

  • CNPJA pela API pública
  • Comunidade .NET
  • Contribuidores do projeto

Gostou do projeto? Dê uma estrela!

About

api para busca de cnpj usando dotnet

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors