Validation Utilities
Os utilitários de validação fornecem funcionalidades essenciais para verificação, validação e controle de qualidade de dados no n8n. Esses nodes são fundamentais para workflows que lidam com formulários, integrações de dados, compliance e garantia de integridade de informações.
Quando usar Validation Utilities
Casos de Uso Principais
- Validação de formulários e dados de entrada
- Verificação de documentos (CPF, CNPJ, RG)
- Controle de qualidade de dados
- Compliance com regras de negócio
- Prevenção de erros em workflows
- Garantia de integridade de dados
Cenários Aplicáveis
- Sistemas de CRM com validação de clientes
- Processamento de pedidos com validação de dados
- Integração com APIs com verificação de respostas
- Workflows de compliance com validação de documentos
- Automações de marketing com validação de leads
- Sistemas financeiros com validação de transações
Tipos de Validações
Validação de Documentos
// Exemplo: Validação de CPF
{
"cpf_entrada": "123.456.789-00",
"validacao_cpf": {
"formato_valido": true,
"digitos_verificadores": true,
"cpf_valido": true,
"mensagem": "CPF válido"
}
}
Validação de Email
// Exemplo: Validação de email
{
"email_entrada": "joao@exemplo.com",
"validacao_email": {
"formato_valido": true,
"dominio_valido": true,
"mx_record": true,
"email_valido": true
}
}
Validação de Telefone
// Exemplo: Validação de telefone
{
"telefone_entrada": "(11) 99999-9999",
"validacao_telefone": {
"formato_valido": true,
"ddd_valido": true,
"numero_valido": true,
"telefone_valido": true
}
}
Configuração Básica
Estrutura de Configuração
{
"operation": "validate", // validate, verify, check, format
"input": {
"data": "{{$json.dados_entrada}}",
"type": "cpf",
"rules": {
"required": true,
"format": "strict",
"custom_rules": []
}
},
"options": {
"strict": true,
"allow_empty": false,
"custom_validators": []
}
}
Parâmetros Principais
Tipos de Validação Disponíveis:
- Validação de CPF brasileirocpf
- Validação de CNPJ brasileirocnpj
- Validação de emailemail
- Validação de telefonetelefone
- Validação de CEPcep
- Validação customizadacustom
Regras de Validação:
- Campo obrigatóriorequired
- Formato específicoformat
- Comprimento mínimo/máximolength
- Faixa de valoresrange
- Padrão regexpattern
Exemplos Práticos
Exemplo 1: Validação de Cliente
// Validação completa de dados de cliente
{
"dados_cliente": {
"nome": "João Silva",
"email": "joao@exemplo.com",
"cpf": "123.456.789-00",
"telefone": "(11) 99999-9999"
},
"resultado_validacao": {
"nome_valido": true,
"email_valido": true,
"cpf_valido": true,
"telefone_valido": true,
"cliente_valido": true,
"erros": []
}
}
Exemplo 2: Validação de Pedido
// Validação de dados de pedido
{
"dados_pedido": {
"numero": "PED-2024-001",
"cliente_id": "12345",
"valor": 150.00,
"itens": [
{"produto": "Produto A", "quantidade": 2, "preco": 75.00}
]
},
"validacao_pedido": {
"numero_valido": true,
"cliente_existe": true,
"valor_positivo": true,
"itens_validos": true,
"pedido_valido": true
}
}
Exemplo 3: Validação de Configuração
// Validação de configuração de API
{
"config_api": {
"url": "https://api.exemplo.com",
"timeout": 30000,
"retry_attempts": 3,
"headers": {
"Authorization": "Bearer SEU_TOKEN_AQUI"
}
},
"validacao_config": {
"url_valida": true,
"timeout_valido": true,
"retry_valido": true,
"headers_validos": true,
"config_valida": true
}
}
Casos de Uso Avançados
Workflow de Onboarding
Sistema de Compliance
Expressões e Data Mapping
Expressões Comuns
// Validação de campo obrigatório
"{{$json.campo !== null && $json.campo !== ''}}"
// Validação de formato
"{{/^\d{3}\.\d{3}\.\d{3}-\d{2}$/.test($json.cpf)}}"
// Validação de comprimento
"{{$json.texto.length >= 3 && $json.texto.length <= 100}}"
// Validação de faixa
"{{$json.valor >= 0 && $json.valor <= 1000}}"
Mapeamento de Dados
// Exemplo: Mapeamento com validação
{
"dados_entrada": "{{$json.dados_originais}}",
"dados_validados": "{{validarDados($json.dados_entrada)}}",
"status_validacao": "{{$json.dados_validados.valido}}",
"erros": "{{$json.dados_validados.erros}}"
}
Tratamento de Erros
Validação Segura
// Função de validação segura
function validarSeguro(dados, regras) {
try {
const resultado = {
valido: true,
erros: [],
dados_validados: {}
};
for (const [campo, regra] of Object.entries(regras)) {
const valor = dados[campo];
const validacao = aplicarRegra(valor, regra);
if (!validacao.valido) {
resultado.valido = false;
resultado.erros.push(validacao.erro);
} else {
resultado.dados_validados[campo] = valor;
}
}
return resultado;
} catch (erro) {
return {
valido: false,
erros: [erro.message],
dados_validados: {}
};
}
}
Tratamento de Validações Complexas
// Função de validação de CPF
function validarCPF(cpf) {
try {
// Remove caracteres não numéricos
const numeros = cpf.replace(/\D/g, '');
// Verifica se tem 11 dígitos
if (numeros.length !== 11) {
return { valido: false, erro: 'CPF deve ter 11 dígitos' };
}
// Verifica se todos os dígitos são iguais
if (/^(\d)\1{10}$/.test(numeros)) {
return { valido: false, erro: 'CPF inválido' };
}
// Calcula dígitos verificadores
let soma = 0;
for (let i = 0; i < 9; i++) {
soma += parseInt(numeros[i]) * (10 - i);
}
let resto = 11 - (soma % 11);
const digito1 = resto < 2 ? 0 : resto;
soma = 0;
for (let i = 0; i < 10; i++) {
soma += parseInt(numeros[i]) * (11 - i);
}
resto = 11 - (soma % 11);
const digito2 = resto < 2 ? 0 : resto;
// Verifica dígitos verificadores
if (parseInt(numeros[9]) !== digito1 || parseInt(numeros[10]) !== digito2) {
return { valido: false, erro: 'CPF inválido' };
}
return { valido: true, erro: null };
} catch (erro) {
return { valido: false, erro: 'Erro na validação do CPF' };
}
}
Performance e Otimização
Boas Práticas
- Validação precoce de dados críticos
- Cache de validações para dados repetitivos
- Validação em lote para grandes volumes
- Validação progressiva em formulários
- Tratamento de timeouts para validações externas
Otimizações Específicas
// Cache de validações
const validationCache = new Map();
function getCachedValidation(input, type) {
const key = `${input}_${type}`;
if (!validationCache.has(key)) {
validationCache.set(key, performValidation(input, type));
}
return validationCache.get(key);
}
Troubleshooting
Problemas Comuns
Validação falha
- Verifique formato dos dados de entrada
- Confirme regras de validação
- Teste com dados conhecidos
- Verifique logs de erro
Performance lenta
- Implemente cache de validações
- Otimize expressões regulares
- Use validação em lote
- Monitore tempo de execução
Falsos positivos/negativos
- Revise regras de validação
- Teste casos extremos
- Valide dados de exemplo
- Ajuste sensibilidade
Dicas de Debug
// Função de debug para validações
function debugValidacao(dados, tipo) {
console.log(`Debug validação ${tipo}:`, {
dados_entrada: dados,
tipo_validacao: tipo,
resultado: performValidation(dados, tipo),
timestamp: new Date().toISOString()
});
}
Integração com Outros Nós
Com HTTP Request
Com Code Node
// Validação no Code Node
const dadosEntrada = $input.first().json.dados;
const resultadoValidacao = validarDados(dadosEntrada);
if (resultadoValidacao.valido) {
return [{json: {dados_validados: resultadoValidacao.dados}}];
} else {
throw new Error(`Dados inválidos: ${resultadoValidacao.erros.join(', ')}`);
}
Com If Node
// Condição baseada em validação
{
"condition": "{{$json.validacao.valido}}",
"true": "Dados Válidos",
"false": "Dados Inválidos"
}
Próximos Passos
- Date/Time Utilities - Manipulação de datas
- Text Utilities - Processamento de texto
- Conversion Utilities - Conversões de formato
- Math Utilities - Transformações matemáticas
- Core Nodes - Funcionalidades básicas
- Expressões n8n - Usar expressões com validações