Como consumir API de CPF em Azure Functions com C#

Aprenda a consumir uma API de consulta de CPF em Azure Functions usando C# e HttpClient. Exemplos com HTTP Trigger, Key Vault e boas práticas.

Redação CPFHub.io
Redação CPFHub.io
··7 min de leitura
Como consumir API de CPF em Azure Functions com C#

Integrar a API de CPF da CPFHub.io em Azure Functions com C# é uma escolha natural para equipes que já operam no ecossistema Microsoft: a função escala automaticamente, o segredo da API key fica protegido no Azure Key Vault e o monitoramento ocorre pelo Application Insights. Com latência de ~900ms e plano gratuito de 50 consultas mensais sem cartão de crédito, você pode validar CPFs em produção sem custo inicial.

Introdução

O Azure Functions é a plataforma serverless da Microsoft, integrada ao ecossistema Azure e com suporte nativo a C# e .NET. Para empresas que já utilizam o stack Microsoft, criar funções de validação de CPF no Azure Functions é uma escolha natural, oferecendo escalabilidade automática, integração com Azure Key Vault para gerenciamento de segredos e monitoramento via Application Insights.


1. Pré-requisitos

  • Azure CLI ou Visual Studio 2022 -- Para criar e publicar a função.

  • .NET 8 SDK -- Runtime suportado pelo Azure Functions v4.

  • Azure Functions Core Tools -- Para desenvolvimento e testes locais.

  • Conta na CPFHub.io -- Cadastre-se em CPFHub.io e gere sua API key gratuitamente no painel, sem necessidade de cartão de crédito.

Criando o projeto

func init CpfValidation --dotnet
cd CpfValidation
func new --name ValidarCpf --template "HTTP trigger" --authlevel anonymous

2. Implementação da função

Modelo de dados

Crie as classes para deserializar a resposta da API:

// Models/CpfResponse.cs
namespace CpfValidation.Models;

public class CpfResponse
{
    public bool Success { get; set; }
    public CpfData? Data { get; set; }
}

public class CpfData
{
    public string Cpf { get; set; } = string.Empty;
    public string Name { get; set; } = string.Empty;
    public string NameUpper { get; set; } = string.Empty;
    public string Gender { get; set; } = string.Empty;
    public string BirthDate { get; set; } = string.Empty;
    public int Day { get; set; }
    public int Month { get; set; }
    public int Year { get; set; }
}

Serviço de consulta

// Services/CpfHubService.cs
using System.Net.Http.Json;
using CpfValidation.Models;
using Microsoft.Extensions.Logging;

namespace CpfValidation.Services;

public class CpfHubService
{
    private readonly HttpClient _httpClient;
    private readonly ILogger<CpfHubService> _logger;

    public CpfHubService(HttpClient httpClient, ILogger<CpfHubService> logger)
    {
    _httpClient = httpClient;
    _logger = logger;
    }

    public async Task<CpfData?> ConsultarAsync(string cpf)
    {
    var cpfLimpo = new string(cpf.Where(char.IsDigit).ToArray());

    try
    {
    var response = await _httpClient.GetAsync($"cpf/{cpfLimpo}");

    if (response.IsSuccessStatusCode)
    {
    var result = await response.Content.ReadFromJsonAsync<CpfResponse>();
    if (result?.Success == true)
    {
    return result.Data;
    }
    }

    _logger.LogWarning("CPFHub retornou status {Status} para CPF {Cpf}",
    response.StatusCode, cpfLimpo);

    return null;
    }
    catch (TaskCanceledException)
    {
    _logger.LogError("Timeout ao consultar CPF {Cpf}", cpfLimpo);
    return null;
    }
    catch (Exception ex)
    {
    _logger.LogError(ex, "Erro ao consultar CPF {Cpf}", cpfLimpo);
    return null;
    }
    }
}

Função HTTP Trigger

// Functions/ValidarCpf.cs
using System.Text.RegularExpressions;
using CpfValidation.Services;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;

namespace CpfValidation.Functions;

public class ValidarCpf
{
    private readonly CpfHubService _cpfHubService;
    private readonly ILogger<ValidarCpf> _logger;

    public ValidarCpf(CpfHubService cpfHubService, ILogger<ValidarCpf> logger)
    {
    _cpfHubService = cpfHubService;
    _logger = logger;
    }

    [Function("ValidarCpf")]
    public async Task<HttpResponseData> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "cpf/{cpf}")] HttpRequestData req,
    string cpf)
    {
    _logger.LogInformation("Consulta de CPF recebida: {Cpf}", cpf);

    if (!Regex.IsMatch(cpf, @"^\d{11}$"))
    {
    var badRequest = req.CreateResponse(System.Net.HttpStatusCode.BadRequest);
    await badRequest.WriteAsJsonAsync(new { error = "CPF deve conter 11 digitos numericos." });
    return badRequest;
    }

    var dados = await _cpfHubService.ConsultarAsync(cpf);

    if (dados != null)
    {
    var okResponse = req.CreateResponse(System.Net.HttpStatusCode.OK);
    await okResponse.WriteAsJsonAsync(new { success = true, data = dados });
    return okResponse;
    }

    var notFound = req.CreateResponse(System.Net.HttpStatusCode.NotFound);
    await notFound.WriteAsJsonAsync(new { error = "CPF nao encontrado." });
    return notFound;
    }
}

3. Configuração de injeção de dependência

Configure o HttpClient com as credenciais da API no Program.cs:

// Program.cs
using CpfValidation.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureServices(services =>
    {
    services.AddHttpClient<CpfHubService>(client =>
    {
    client.BaseAddress = new Uri("https://api.cpfhub.io/");
    client.DefaultRequestHeaders.Add("x-api-key",
    Environment.GetEnvironmentVariable("CPFHUB_API_KEY"));
    client.DefaultRequestHeaders.Add("Accept", "application/json");
    client.Timeout = TimeSpan.FromSeconds(30);
    });
    })
    .Build();

host.Run();

4. Exemplo de resposta da API

A API da CPFHub.io retorna um JSON estruturado com os dados cadastrais do titular:

{
    "success": true,
    "data": {
    "cpf": "12345678900",
    "name": "Joao da Silva",
    "nameUpper": "JOAO DA SILVA",
    "gender": "M",
    "birthDate": "15/06/1990",
    "day": 15,
    "month": 6,
    "year": 1990
    }
}
  • success -- Indica se a consulta foi bem-sucedida.
  • name / nameUpper -- Nome completo do titular.
  • gender -- Gênero (M ou F).
  • birthDate -- Data de nascimento no formato dd/mm/aaaa.
  • day, month, year -- Componentes da data separados.

5. Configurações de aplicação

Adicione a chave de API nas configurações locais e no Azure:

// local.settings.json
{
    "IsEncrypted": false,
    "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "CPFHUB_API_KEY": "SUA_CHAVE_DE_API"
    }
}

Para produção, utilize o Azure Key Vault com referências de configuração:

# Criar segredo no Key Vault
az keyvault secret set --vault-name meu-vault --name CpfHubApiKey --value "SUA_CHAVE_DE_API"

# Configurar referência na Function App
az functionapp config appsettings set \
    --name minha-function \
    --resource-group meu-grupo \
    --settings "CPFHUB_API_KEY=@Microsoft.KeyVault(VaultName=meu-vault;SecretName=CpfHubApiKey)"

6. Testando localmente

func start

Em outro terminal:

curl -X GET "http://localhost:7071/api/cpf/12345678900" \
    -H "Accept: application/json" \
    --max-time 30

7. Deploy para o Azure

func azure functionapp publish minha-function-app

8. Boas práticas

  • Use IHttpClientFactory -- A injeção de HttpClient via DI evita problemas de socket exhaustion comuns em aplicações serverless.

  • Configure timeout -- O timeout de 30 segundos no HttpClient garante que a função não fique presa em requisições lentas.

  • Armazene segredos no Key Vault -- Nunca coloque chaves de API diretamente no código ou em arquivos de configuração versionados.

  • Monitore com Application Insights -- Configure alertas para erros e latência elevada.

  • Gerencie cotas com consciência -- O plano gratuito oferece 50 consultas/mês; ao ultrapassar, a API cobra R$0,15 por consulta adicional sem bloquear o serviço. O plano Pro (R$149/mês) inclui 1.000 consultas mensais.


Perguntas frequentes

O que é necessário para implementar validação de CPF neste contexto?

A validação de CPF exige uma chamada à API com o número do documento e a chave de autenticação. A CPFHub.io retorna o status do CPF, nome do titular e data de nascimento em menos de 200ms, permitindo a verificação em tempo real durante o cadastro ou transação.

A API CPFHub.io funciona para todos os volumes de consulta?

Sim. O plano gratuito oferece 50 consultas por mês sem cartão de crédito — ideal para testes e projetos pequenos. Para volumes maiores, o plano Pro inclui 1.000 consultas mensais por R$149. Se o limite for ultrapassado, a API não bloqueia: cobra R$0,15 por consulta adicional.

Como garantir conformidade com a LGPD ao usar uma API de CPF?

Use o CPF apenas para a finalidade declarada ao titular, armazene apenas o necessário (não guarde o CPF cru se um token bastar), implemente controle de acesso aos logs de consulta e documente a base legal para o tratamento. A ANPD orienta que dados de identificação devem ser tratados com o princípio da necessidade.

Quanto tempo leva para integrar a API CPFHub.io?

A integração básica leva menos de 30 minutos: crie uma conta em cpfhub.io, gere a API key no painel e faça uma chamada GET para https://api.cpfhub.io/cpf/{CPF} com o header x-api-key. A documentação inclui exemplos em Python, Node.js, PHP, Java e outras linguagens.


Conclusão

O Azure Functions com C# oferece uma plataforma serverless robusta para validação de CPF, com integração nativa ao ecossistema Azure. A combinação de HttpClient com injeção de dependência e Azure Key Vault garante uma implementação segura e escalável.

A CPFHub.io complementa essa arquitetura com uma API simples, latência de ~900ms e plano gratuito de 50 consultas mensais — ideal para validar a integração antes de escalar para produção.

Cadastre-se em cpfhub.io — 50 consultas mensais gratuitas, sem cartão de crédito — e comece hoje mesmo.

CPFHub.io

Pronto para integrar a API?

50 consultas gratuitas para testar agora. Sem cartão de crédito. Acesso imediato à documentação.

Redação CPFHub.io

Sobre a redação

Redação CPFHub.io

Time editorial especializado em APIs de CPF, identidade digital e compliance no mercado brasileiro. Produzimos guias técnicos, análises regulatórias e tutoriais sobre LGPD e KYC para desenvolvedores e líderes de produto.

WhatsAppFale conosco via WhatsApp