Como integrar validação de CPF em Google Cloud Functions com Python

Aprenda a integrar validação de CPF em Google Cloud Functions usando Python e requests. Exemplos com HTTP trigger, Secret Manager e deploy.

Redação CPFHub.io
Redação CPFHub.io
··7 min de leitura
Como integrar validação de CPF em Google Cloud Functions com Python

Integrar validação de CPF em Google Cloud Functions com Python é direto: basta criar uma função HTTP trigger que chama GET https://api.cpfhub.io/cpf/{CPF} com o header x-api-key e retorna os dados estruturados do titular. A CPFHub.io entrega resposta em aproximadamente 900ms, com conformidade LGPD e 99,9% de uptime — e você pode começar com 50 consultas gratuitas por mês, sem cartão de crédito.

Introdução

O Google Cloud Functions é a plataforma serverless do Google Cloud, ideal para executar funções isoladas em resposta a eventos HTTP, mensagens do Pub/Sub ou alterações no Cloud Storage. Combinado com Python -- uma das linguagens mais populares para desenvolvimento de APIs e automação --, o Cloud Functions oferece uma forma rápida e escalável de implementar validação de CPF.


1. Pré-requisitos

  • Conta no Google Cloud -- Com um projeto ativo e billing habilitado.

  • gcloud CLI instalado -- Para deploy e gerenciamento das funções.

  • Python 3.11 ou superior -- Runtime suportado pelo Cloud Functions (2nd gen).

  • Conta na CPFHub.io -- Cadastre-se em cpfhub.io e gere sua API key no painel para usar nos exemplos abaixo.


2. Estrutura do projeto

cpf-validation/
├── main.py
├── requirements.txt
└── .gcloudignore

requirements.txt

functions-framework==3.*
requests>=2.31.0
google-cloud-secret-manager>=2.16.0

3. Implementação da função

Versão básica com variável de ambiente

# main.py
import os
import re
import requests
import functions_framework

CPFHUB_API_KEY = os.environ.get('CPFHUB_API_KEY')
CPFHUB_BASE_URL = 'https://api.cpfhub.io/cpf'
TIMEOUT = 30

def consultar_cpf(cpf: str) -> dict | None:
    """Consulta um CPF na API da CPFHub.io."""
    cpf_limpo = re.sub(r'\D', '', cpf)

    headers = {
    'x-api-key': CPFHUB_API_KEY,
    'Accept': 'application/json',
    }

    try:
    response = requests.get(
    f'{CPFHUB_BASE_URL}/{cpf_limpo}',
    headers=headers,
    timeout=TIMEOUT,
    )

    if response.status_code == 200:
    data = response.json()
    if data.get('success'):
    return data['data']

    return None

    except requests.exceptions.Timeout:
    print(f'Timeout ao consultar CPF {cpf_limpo}')
    return None
    except requests.exceptions.RequestException as e:
    print(f'Erro ao consultar CPF {cpf_limpo}: {e}')
    return None

@functions_framework.http
def validar_cpf(request):
    """HTTP Cloud Function para validação de CPF."""
    # Permitir CORS
    if request.method == 'OPTIONS':
    headers = {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'GET',
    'Access-Control-Allow-Headers': 'Content-Type',
    }
    return ('', 204, headers)

    cors_headers = {'Access-Control-Allow-Origin': '*'}

    # Extrair CPF da URL ou query string
    cpf = request.args.get('cpf', '')

    if not cpf:
    # Tentar extrair do path
    path = request.path.strip('/')
    parts = path.split('/')
    if parts:
    cpf = parts[-1]

    cpf_limpo = re.sub(r'\D', '', cpf)

    if len(cpf_limpo) != 11:
    return (
    {'error': 'CPF deve conter 11 digitos numericos.'},
    400,
    cors_headers,
    )

    dados = consultar_cpf(cpf_limpo)

    if dados:
    return (
    {
    'success': True,
    'data': {
    'cpf': dados['cpf'],
    'name': dados['name'],
    'nameUpper': dados['nameUpper'],
    'gender': dados['gender'],
    'birthDate': dados['birthDate'],
    'day': dados['day'],
    'month': dados['month'],
    'year': dados['year'],
    },
    },
    200,
    cors_headers,
    )

    return (
    {'error': 'CPF nao encontrado ou invalido.'},
    404,
    cors_headers,
    )

4. Usando Google Secret Manager

Para armazenamento seguro da chave de API em produção:

from google.cloud import secretmanager

_cached_api_key = None

def get_api_key() -> str:
    """Recupera a chave de API do Secret Manager com cache."""
    global _cached_api_key

    if _cached_api_key:
    return _cached_api_key

    # Tentar variável de ambiente primeiro (desenvolvimento local)
    env_key = os.environ.get('CPFHUB_API_KEY')
    if env_key:
    _cached_api_key = env_key
    return _cached_api_key

    # Recuperar do Secret Manager
    client = secretmanager.SecretManagerServiceClient()
    project_id = os.environ.get('GCP_PROJECT')
    name = f'projects/{project_id}/secrets/cpfhub-api-key/versions/latest'

    response = client.access_secret_version(request={'name': name})
    _cached_api_key = response.payload.data.decode('UTF-8')

    return _cached_api_key

Crie o segredo no Secret Manager:

echo -n "SUA_CHAVE_DE_API" | gcloud secrets create cpfhub-api-key --data-file=-

5. Exemplo de resposta da API

A API da CPFHub.io retorna um JSON estruturado com todos os dados cadastrais do titular. Veja o formato completo:

{
    "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 completa.
  • day, month, year -- Componentes da data separados.

6. Deploy

Deploy via gcloud CLI

gcloud functions deploy validar-cpf \
    --gen2 \
    --runtime python311 \
    --trigger-http \
    --allow-unauthenticated \
    --region southamerica-east1 \
    --set-env-vars CPFHUB_API_KEY=SUA_CHAVE_DE_API \
    --timeout 30s \
    --memory 256MB \
    --entry-point validar_cpf

Para usar o Secret Manager em vez de variável de ambiente:

gcloud functions deploy validar-cpf \
    --gen2 \
    --runtime python311 \
    --trigger-http \
    --allow-unauthenticated \
    --region southamerica-east1 \
    --set-env-vars GCP_PROJECT=meu-projeto \
    --set-secrets 'CPFHUB_API_KEY=cpfhub-api-key:latest' \
    --timeout 30s \
    --memory 256MB \
    --entry-point validar_cpf

7. Testando localmente

# Instalar o framework de funções
pip install functions-framework

# Executar localmente
CPFHUB_API_KEY=SUA_CHAVE_DE_API functions-framework --target validar_cpf --port 8080

Em outro terminal:

curl -X GET "http://localhost:8080/?cpf=12345678900" \
    --max-time 30

8. Boas práticas

  • Escolha a região adequada -- Para menor latência no Brasil, utilize southamerica-east1 (São Paulo).

  • Configure timeout -- Defina o timeout da função para pelo menos 30 segundos, considerando o tempo de resposta da API (~900ms).

  • Use Secret Manager -- Armazene a chave de API no Secret Manager em vez de variáveis de ambiente para maior segurança.

  • Implemente cache -- Utilize Memorystore (Redis) ou Firestore para armazenar resultados de consultas recentes.

  • Monitore com Cloud Logging -- Configure alertas para erros e latência elevada.

  • Respeite rate limits -- O plano gratuito oferece 50 consultas mensais sem cartão de crédito. O plano Pro (R$ 149/mês) oferece 1.000 consultas com SLA de 99%.


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 Google Cloud Functions com Python oferece uma plataforma serverless eficiente para validação de CPF. A integração com a API da CPFHub.io é direta — poucos minutos de configuração e sua função está pronta para processar validações em escala, com latência de aproximadamente 900ms, 99,9% de uptime e conformidade com a LGPD.

Com suporte a Python como uma das 13+ linguagens documentadas, a integração com Cloud Functions é simples e segura, seja usando variáveis de ambiente para desenvolvimento ou o Secret Manager 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