📘 Tutorial de Integração - API HURU

Aprenda a integrar sua plataforma com o Registro Único Universal

📋 Índice

🔌 Sobre a API HURU

A API do HURU permite que sites e aplicações externas verifiquem a identidade de usuários de forma segura, utilizando o Registro Único Universal.

📌 Base URL: https://huru.forasteyros.org/api/

Endpoints disponíveis:

🔄 Como Funciona

Fluxo de Verificação de Identidade

  1. Seu site pergunta ao usuário o Número de Registro HURU (ex: RUU-2024-XXXXXXXX-XXXX)
  2. Seu site chama a API do HURU para solicitar um código para aquele registro
  3. O usuário recebe uma notificação no site HURU com o código de 6 dígitos
  4. O usuário informa o código no seu site
  5. Seu site chama a API para verificar o código
  6. Se válido, seu site prossegue com a ação (reset de senha, login, etc.)

🚀 Primeiros Passos

⚠️ Antes de começar: Você precisa solicitar uma API Key para seu domínio. Entre em contato com os administradores do HURU através do email: admin@huru.forasteyros.org
✅ O que você receberá:
  • API Key: Identificador único da sua aplicação
  • API Secret: Chave secreta para assinar requisições

📤 Solicitar Código de Verificação

Endpoint para solicitar um código de 6 dígitos para um usuário específico.

POST https://huru.forasteyros.org/api/externa.php?acao=solicitar_codigo

Headers

Content-Type: application/json X-API-Key: SUA_API_KEY_AQUI

Body (JSON)

{ "registro_unico": "RUU-2024-ABCDEF123456-ABCD", "tipo": "recuperacao_senha", "dados": { "motivo": "Recuperação de senha", "ip_usuario": "192.168.1.1" } }

Resposta de Sucesso (200)

{ "sucesso": true, "mensagem": "Código de verificação enviado", "dados": { "codigo_enviado": true, "expira_em": "2024-01-15 14:30:00" } }

Resposta de Erro (400/403/404)

{ "sucesso": false, "mensagem": "Registro não encontrado ou não verificado" }

✅ Verificar Código

Endpoint para validar o código informado pelo usuário.

POST https://huru.forasteyros.org/api/externa.php?acao=verificar_codigo

Headers

Content-Type: application/json X-API-Key: SUA_API_KEY_AQUI

Body (JSON)

{ "registro_unico": "RUU-2024-ABCDEF123456-ABCD", "codigo": "123456" }

Resposta de Sucesso (200)

{ "sucesso": true, "mensagem": "Código válido", "dados": { "valido": true, "tipo": "recuperacao_senha", "dados_extras": {} } }

Resposta de Erro (400)

{ "sucesso": false, "mensagem": "Código inválido ou expirado" }

📊 Consultar Nível do Usuário

Endpoint para consultar o nível de verificação de um usuário (requer autorização prévia do usuário).

POST https://huru.forasteyros.org/api/consultar-nivel.php?acao=consultar

Headers

Content-Type: application/json X-API-Key: SUA_API_KEY_AQUI

Body (JSON)

{ "registro_unico": "RUU-2024-ABCDEF123456-ABCD", "nivel_requerido": 3 }

Resposta de Sucesso (200)

{ "sucesso": true, "mensagem": "Consulta realizada com sucesso", "dados": { "registro": "RUU-2024-ABCDEF123456-ABCD", "valido": true, "nivel_verificacao": 3, "nivel_nome": "Governamental", "trust_score": 75, "status_verificacao": "verificado", "atende_nivel_minimo_aplicacao": true, "nivel_suficiente": true, "nivel_requerido": 3 } }

💻 Exemplo Completo em PHP

solicitar_codigo.php

<?php // solicitar_codigo.php - Solicitar código de verificação function solicitarCodigoHURU($registroUnico, $apiKey) { $url = 'https://huru.forasteyros.org/api/externa.php?acao=solicitar_codigo'; $payload = json_encode([ 'registro_unico' => $registroUnico, 'tipo' => 'recuperacao_senha', 'dados' => [ 'motivo' => 'Recuperação de senha', 'ip_usuario' => $_SERVER['REMOTE_ADDR'] ] ]); $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'X-API-Key: ' . $apiKey ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); $resposta = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return json_decode($resposta, true); } // Uso no seu site $apiKey = 'SUA_API_KEY_AQUI'; $registro = $_POST['registro_ruu'] ?? ''; if ($registro) { $resultado = solicitarCodigoHURU($registro, $apiKey); if ($resultado['sucesso']) { $_SESSION['ruu_pendente'] = true; $_SESSION['ruu_registro'] = $registro; echo "<p>✅ Código enviado! Verifique suas notificações no site HURU.</p>"; } else { echo "<p>❌ Erro: " . $resultado['mensagem'] . "</p>"; } } ?>

verificar_codigo.php

<?php // verificar_codigo.php - Verificar código informado pelo usuário function verificarCodigoHURU($registroUnico, $codigo, $apiKey) { $url = 'https://huru.forasteyros.org/api/externa.php?acao=verificar_codigo'; $payload = json_encode([ 'registro_unico' => $registroUnico, 'codigo' => $codigo ]); $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'X-API-Key: ' . $apiKey ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); $resposta = curl_exec($ch); curl_close($ch); return json_decode($resposta, true); } // Processar formulário $apiKey = 'SUA_API_KEY_AQUI'; $codigo = $_POST['codigo'] ?? ''; $registro = $_SESSION['ruu_registro'] ?? ''; if ($codigo && $registro) { $resultado = verificarCodigoHURU($registro, $codigo, $apiKey); if ($resultado['sucesso'] && $resultado['dados']['valido']) { // Código válido! $_SESSION['ruu_verificado'] = true; header("Location: redefinir_senha.php"); exit; } else { echo "<p>❌ Código inválido ou expirado. Tente novamente.</p>"; } } ?>

🌐 Exemplo em JavaScript (Fetch API)

// solicitar_codigo.js - Solicitar código de verificação const API_KEY = 'SUA_API_KEY_AQUI'; const BASE_URL = 'https://huru.forasteyros.org/api/'; async function solicitarCodigoHURU(registroUnico) { const response = await fetch(BASE_URL + 'externa.php?acao=solicitar_codigo', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': API_KEY }, body: JSON.stringify({ registro_unico: registroUnico, tipo: 'recuperacao_senha', dados: { motivo: 'Recuperação de senha', user_agent: navigator.userAgent } }) }); return await response.json(); } async function verificarCodigoHURU(registroUnico, codigo) { const response = await fetch(BASE_URL + 'externa.php?acao=verificar_codigo', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': API_KEY }, body: JSON.stringify({ registro_unico: registroUnico, codigo: codigo }) }); return await response.json(); } // Uso no frontend document.getElementById('btnSolicitar').addEventListener('click', async () => { const registro = document.getElementById('registro_ruu').value; const resultado = await solicitarCodigoHURU(registro); if (resultado.sucesso) { alert('✅ Código enviado! Verifique suas notificações no site HURU.'); document.getElementById('divCodigo').style.display = 'block'; } else { alert('❌ Erro: ' + resultado.mensagem); } }); document.getElementById('btnVerificar').addEventListener('click', async () => { const registro = document.getElementById('registro_ruu').value; const codigo = document.getElementById('codigo').value; const resultado = await verificarCodigoHURU(registro, codigo); if (resultado.sucesso && resultado.dados.valido) { alert('✅ Código válido! Redirecionando...'); window.location.href = '/redefinir-senha'; } else { alert('❌ Código inválido ou expirado'); } });

🔔 Webhooks

Registre um webhook para ser notificado quando o nível de um usuário mudar.

POST https://huru.forasteyros.org/api/consultar-nivel.php?acao=registrar-webhook
{ "webhook_url": "https://seudominio.com/webhook-huru.php", "evento": "nivel_mudou" }

Quando o nível do usuário mudar, enviaremos um POST para sua URL:

{ "evento": "nivel_mudou", "usuario_id": 123, "nivel_anterior": 2, "nivel_novo": 3, "timestamp": "2024-01-15T10:30:00-03:00" }

📊 Tabela de Níveis de Verificação

Nível Nome Verificações Necessárias Indicado para
0BásicoEmail + TelefoneFóruns, comentários
1DocumentalSelfie + Documento + FacialRedes sociais, e-commerce
2FinanceiroPIX + CartãoMarketplaces, fintechs
3GovernamentalGov.br + ReceitaServiços bancários
4Biometria DigitalFingerprintAcesso sistemas críticos
5Íris (Máximo)Biometria de írisBancos, identidade oficial

⚠️ Códigos de Erro

Código Significado Solução
200Sucesso-
400Requisição inválidaVerifique os parâmetros enviados
401Não autorizadoVerifique sua API Key
403Permissão negadaUsuário não autorizou o acesso
404Registro não encontradoVerifique o número de registro
429Muitas requisiçõesAguarde e tente novamente
500Erro internoContate o suporte do HURU

🔒 Boas Práticas de Segurança

✅ Pronto para integrar!
Após seguir este tutorial, sua plataforma estará pronta para verificar usuários através do HURU.
← Voltar para página inicial