Skip to main content

O que são Eventos?

Eventos representam ações de usuários e atividades do sistema que ocorrem dentro de sua aplicação. Cada evento captura quem realizou a ação, o que foi feito, quando aconteceu e de qual dispositivo e localização. Eventos são a base da detecção de fraudes, monitoramento de conformidade, trilhas de auditoria e análises comportamentais.

Recursos Principais

🔍 Detecção de Fraudes

Detecte padrões suspeitos como localizações de login incomuns, múltiplas tentativas de autenticação falhas, mudanças rápidas de credenciais ou comportamentos de transação anormais.

📊 Análises Comportamentais

Construa perfis de comportamento de usuários, identifique anomalias e detecte apropriações de contas analisando sequências e padrões de eventos.

✅ Conformidade e Trilhas de Auditoria

Mantenha registros detalhados de auditoria de todas as atividades de usuários para conformidade regulatória (GDPR, SOC 2, PCI-DSS) e investigações internas.

🤖 Criação Automática de Entidades

Crie automaticamente entidades de pessoas ou empresas quando eventos são recebidos com informações de ID fiscal, otimizando fluxos de onboarding.

📱 Integração com Dispositivos

Registre e rastreie dispositivos automaticamente quando eventos incluem informações de dispositivo, habilitando regras de fraude baseadas em dispositivos.

Esquema de Evento

Cada registro de evento contém:

Campos Principais

  • eventType - Tipo de evento (veja Tipos de Eventos abaixo)
  • userId - Seu identificador de usuário
  • entityId - UUID da entidade gu1
  • entityExternalId - Seu ID externo de entidade
  • taxId - Número de identificação fiscal (CPF, CNPJ, etc.)
  • timestamp - Quando o evento ocorreu (ISO 8601)

Informações do Dispositivo

  • deviceId - Identificador único do dispositivo
  • deviceDetails - Especificações completas do dispositivo (plataforma, SO, fabricante, modelo, etc.)

Localização e Rede

  • ipAddress - Endereço IP da requisição
  • country - Código de país ISO 3166-1
  • isVpn - Flag de detecção de VPN
  • isProxy - Flag de detecção de proxy
  • isNewDevice - Se é a primeira vez que este dispositivo é visto

Dados Específicos do Evento

  • failedAttemptsCount - Tentativas de autenticação falhas
  • destinationAccountId - Conta de destino para transferências
  • destinationCuit - CUIT de destino para transferências
  • previousValue - Valor anterior (para eventos de mudança, com hash)
  • metadata - Dados adicionais específicos do evento

Metadados

  • userAgent - String de user agent do navegador
  • metadata - Objeto flexível para dados personalizados

Tipos de Eventos

Suportamos 41 tipos de eventos diferentes em 11 categorias:

Autenticação (4 tipos)

  • LOGIN_SUCCESS - Login bem-sucedido
  • LOGIN_FAILED - Tentativa de login falha
  • LOGOUT - Logout do usuário
  • TOKEN_GENERATED - Token de autenticação gerado

Mudanças de Credenciais (5 tipos)

  • PASSWORD_CHANGE - Senha alterada com sucesso
  • PASSWORD_CHANGE_FAILED - Mudança de senha falhou
  • EMAIL_CHANGE - Endereço de email alterado
  • PHONE_CHANGE - Número de telefone alterado
  • PIN_CHANGE - PIN alterado

Gerenciamento de Conta (5 tipos)

  • ACCOUNT_LINKED - Conta bancária vinculada
  • CONTACT_CREATED - Contato criado
  • CONTACT_DELETED - Contato excluído
  • ADDRESS_CHANGED - Endereço atualizado
  • DEVICE_ADDED - Novo dispositivo adicionado
  • DEVICE_DELETED - Dispositivo removido

Gerenciamento de Email (2 tipos)

  • EMAIL_CREATED - Email criado
  • EMAIL_ELIMINATED - Email eliminado
  • NAVIGATION - Navegação de página/tela

Transferências (3 tipos)

  • TRANSFER_SUCCESS - Transferência bem-sucedida
  • TRANSFER_FAILED - Tentativa de transferência falhou
  • TRANSFER_SCHEDULED - Transferência agendada

Saldo de Conta (2 tipos)

  • BALANCE_CHECK - Saldo verificado
  • BALANCE_CHECK_FAILED - Verificação de saldo falhou

Acesso à Conta (2 tipos)

  • ACCOUNTS_VIEW - Contas visualizadas
  • ACCOUNTS_VIEW_FAILED - Visualização de contas falhou

Histórico de Transações (2 tipos)

  • TRANSACTIONS_VIEW - Transações visualizadas
  • TRANSACTIONS_VIEW_FAILED - Visualização de transações falhou

Destinatários (3 tipos)

  • SEARCH_RECIPIENTS - Destinatários pesquisados
  • SEARCH_RECIPIENTS_FAILED - Pesquisa de destinatários falhou
  • SCHEDULE_RECIPIENT_FAILED - Agendamento de destinatário falhou

Gerenciamento de Perfil (2 tipos)

  • PROFILE_VIEW - Perfil visualizado
  • PROFILE_UPDATED - Perfil atualizado

Mensagens (2 tipos)

  • MESSAGES_VIEW - Mensagens visualizadas
  • MESSAGES_VIEW_FAILED - Visualização de mensagens falhou

Titulares de Conta (2 tipos)

  • ACCOUNT_HOLDERS_VIEW - Titulares de conta visualizados
  • ACCOUNT_HOLDERS_VIEW_FAILED - Visualização de titulares falhou

Gerenciamento de Alias (4 tipos)

  • ALIAS_VIEW - Alias visualizado
  • ALIAS_VIEW_FAILED - Visualização de alias falhou
  • ALIAS_CHANGE - Alias alterado
  • ALIAS_CHANGE_FAILED - Mudança de alias falhou

Outros (1 tipo)

  • OTHER_EVENT - Evento personalizado/genérico

Criação Automática de Entidades

Eventos podem criar automaticamente entidades de pessoas ou empresas quando:
  1. Você inclui taxId no evento
  2. Você adiciona o parâmetro de consulta ?withAutoEntity=true
  3. A entidade ainda não existe
Isso elimina a necessidade de criar entidades separadamente antes de rastrear eventos, simplificando sua integração.
// Entidade criada automaticamente se não existir
POST /events/user?withAutoEntity=true
{
  "eventType": "LOGIN_SUCCESS",
  "taxId": "20242455496",
  "userId": "user_12345"
}

Registro de Dispositivos

Quando eventos incluem deviceId e deviceDetails, dispositivos são automaticamente registrados e associados à entidade. Isso habilita:
  • Impressão digital de dispositivos
  • Detecção de múltiplos dispositivos
  • Regras de fraude baseadas em localização
  • Análise de comportamento de dispositivos

Início Rápido

1. Rastrear Evento de Login

const response = await fetch('https://api.gu1.ai/events/user', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    eventType: 'LOGIN_SUCCESS',
    entityExternalId: 'user_12345',
    deviceId: '840e89e4d46efd67',
    ipAddress: '10.40.64.231',
    country: 'AR',
    deviceDetails: {
      platform: 'android',
      manufacturer: 'samsung',
      model: 'SM-A156M'
    }
  })
});

2. Rastrear Evento de Transferência

const response = await fetch('https://api.gu1.ai/events/user', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    eventType: 'TRANSFER_SUCCESS',
    entityExternalId: 'user_12345',
    destinationAccountId: '0170042640000004234411',
    destinationCuit: '27281455496',
    metadata: {
      amount: 5000,
      currency: 'ARS',
      concept: 'Payment'
    }
  })
});

3. Consultar Eventos

const response = await fetch(
  'https://api.gu1.ai/events/user?entity_external_id=user_12345&event_type=LOGIN_SUCCESS',
  {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY'
    }
  }
);

Melhores Práticas

Sempre Inclua Identificadores de Entidade

Forneça pelo menos um de: entityId, entityExternalId ou taxId para vincular eventos às entidades.

Use IDs de Usuário Consistentes

Use o mesmo userId em todos os eventos de um usuário para construir perfis comportamentais precisos.

Inclua Informações de Dispositivo

Sempre envie deviceId e deviceDetails quando disponível para habilitar detecção de fraude baseada em dispositivos.

Precisão de Timestamp

Use timestamps ISO 8601 com informações de fuso horário para ordenação precisa de eventos e análise baseada em tempo.

Metadados Estruturados

Use o campo metadata para informações específicas do evento, mas mantenha-o estruturado e consistente entre tipos de eventos similares.

Seleção de Tipo de Evento

Escolha o tipo de evento mais específico disponível. Use OTHER_EVENT apenas quando nenhum tipo específico corresponder.

Rastreamento de Eventos Falhos

Sempre rastreie eventos bem-sucedidos e falhos (ex: LOGIN_SUCCESS vs LOGIN_FAILED) para detecção de fraude abrangente.

Padrões de Integração

Streaming de Eventos em Tempo Real

// Transmitir eventos conforme ocorrem
async function trackEvent(eventType, userId, details) {
  try {
    const response = await fetch('https://api.gu1.ai/events/user', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        eventType,
        entityExternalId: userId,
        timestamp: new Date().toISOString(),
        ...details
      })
    });

    if (!response.ok) {
      console.error('Event tracking failed:', await response.text());
    }
  } catch (error) {
    console.error('Event tracking error:', error);
  }
}

Upload de Eventos em Lote

// Para migração de dados históricos ou uploads em massa
async function uploadBatchEvents(events) {
  for (const event of events) {
    await trackEvent(
      event.type,
      event.userId,
      {
        timestamp: event.timestamp,
        deviceId: event.deviceId,
        ipAddress: event.ipAddress,
        metadata: event.metadata
      }
    );
    // Adicionar delay para respeitar limites de taxa
    await new Promise(resolve => setTimeout(resolve, 100));
  }
}

Middleware de Eventos

// Centralizar rastreamento de eventos em middleware
function eventTrackingMiddleware(eventType) {
  return async (req, res, next) => {
    // Rastrear evento antes de processar requisição
    await trackEvent(eventType, req.user.id, {
      deviceId: req.deviceId,
      ipAddress: req.ip,
      userAgent: req.headers['user-agent']
    });

    next();
  };
}

app.post('/login', eventTrackingMiddleware('LOGIN_SUCCESS'), loginHandler);

Casos de Uso

Regras de Detecção de Fraude

// Exemplo: Detectar transferências rápidas
const recentTransfers = await fetch(
  'https://api.gu1.ai/events/user?' +
  'entity_external_id=user_12345&' +
  'event_type=TRANSFER_SUCCESS&' +
  `start_date=${new Date(Date.now() - 3600000).toISOString()}`, // Última hora
  { headers: { 'Authorization': `Bearer ${API_KEY}` } }
);

const data = await recentTransfers.json();
if (data.events.length > 5) {
  console.warn('Rapid transfer activity detected!');
}

Trilha de Auditoria de Conformidade

// Gerar relatório de auditoria para uma entidade
const events = await fetch(
  `https://api.gu1.ai/events/user/entity/${entityId}?limit=1000`,
  { headers: { 'Authorization': `Bearer ${API_KEY}` } }
);

const auditReport = data.events.map(event => ({
  timestamp: event.timestamp,
  action: event.eventType,
  user: event.userId,
  device: event.deviceId,
  location: `${event.city}, ${event.country}`
}));

Análise de Comportamento do Usuário

// Analisar padrões de login
const stats = await fetch(
  'https://api.gu1.ai/events/user/stats?user_id=user_12345',
  { headers: { 'Authorization': `Bearer ${API_KEY}` } }
);

const loginEvents = stats.data.stats.find(s => s.event_type === 'LOGIN_SUCCESS');
console.log(`Total logins: ${loginEvents.count}`);
console.log(`Last login: ${loginEvents.last_occurrence}`);

Próximos Passos