Pular para o conteúdo principal

Visão Geral

O endpoint de Reenvio de Webhook permite que você solicite o reenvio manual de notificações de transações específicas. Isso é útil em cenários onde:
  • Seu servidor estava indisponível quando o webhook original foi enviado
  • Você precisa reprocessar uma transação específica
  • Deseja testar a integração com uma URL diferente temporariamente
Este endpoint não altera a configuração de webhook da sua conta. A URL fornecida é usada apenas para o reenvio específico.

Funcionamento

Identificação da Transação

O endpoint aceita dois tipos de identificadores:
TipoDescriçãoEscopo
ID ExternoIdentificador que você forneceu ao criar a transação (seu código de referência)Único por conta
ID InternoIdentificador gerado pela Fire Banking para a transaçãoGlobal na plataforma
O sistema primeiro busca pelo ID externo na sua conta. Se não encontrar, busca pelo ID interno globalmente e valida se a transação pertence à sua conta.
Qual identificador usar? Se você armazena o ID que forneceu na criação da transação, use-o. Caso contrário, utilize o ID retornado pela Fire Banking nas respostas de criação ou nos webhooks recebidos.

Processamento Síncrono

O reenvio de webhook é processado de forma síncrona. Isso significa que:
  • A requisição aguarda o envio do webhook ser concluído
  • O resultado é comunicado via HTTP status code (200, 502, 504)
  • O tempo de resposta depende da latência do seu servidor (timeout: 10s)
Diferentemente dos webhooks automáticos (que utilizam filas com retry), o reenvio manual é executado imediatamente e retorna o resultado na mesma requisição.

Casos de Uso

1. Reenvio para URL Configurada

Se você já tem um webhook configurado na sua conta, basta chamar o endpoint sem body:
curl -X POST https://api.public.firebanking.com.br/api/resend-webhook/external-teste-001 \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Content-Type: application/json"

2. Reenvio com URL Temporária

Para testar com uma URL diferente ou reenviar para um endpoint de contingência:
curl -X POST https://api.public.firebanking.com.br/api/resend-webhook/external-teste-001 \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://meu-servidor-backup.com/webhooks/firebanking"
  }'
A URL temporária não é persistida. O próximo webhook automático será enviado para a URL configurada na conta.

Resposta

Sucesso (200)

Webhook enviado com sucesso para a URL de destino.
{
  "message": "Webhook resent successfully",
  "webhookLogId": 12345,
  "sentAt": "2024-01-15T10:30:00.000Z",
  "statusCode": 200
}

Erro: Sem URL Configurada (400)

{
  "statusCode": 400,
  "message": "No webhook configured and no override URL provided",
  "error": "Bad Request"
}

Erro: Transação Não Encontrada (404)

{
  "statusCode": 404,
  "message": "Transaction not found",
  "error": "Not Found"
}

Erro: Destino Retornou Erro (502)

O servidor de destino retornou um erro (4xx ou 5xx) ou houve falha de conexão.
{
  "statusCode": 502,
  "message": "Webhook failed with status 500",
  "webhookLogId": 12345,
  "sentAt": "2024-01-15T10:30:00.000Z"
}
Mesmo em caso de erro, o webhook é registrado no log de auditoria. Use o webhookLogId para rastreamento.

Erro: Timeout (504)

O servidor de destino não respondeu dentro do tempo limite (10 segundos).
{
  "statusCode": 504,
  "message": "Timeout after 10000ms",
  "webhookLogId": 12345,
  "sentAt": "2024-01-15T10:30:00.000Z"
}
Se você está recebendo timeouts frequentes, verifique se seu servidor está respondendo em menos de 10 segundos.

Rate Limiting

Este endpoint possui rate limiting de 60 requisições por minuto por conta para evitar abusos.
Se o limite for excedido, você receberá um erro 429 Too Many Requests:
{
  "statusCode": 429,
  "message": "Too Many Requests"
}

Auditoria

Todos os reenvios manuais são registrados para fins de auditoria e rastreabilidade:
InformaçãoDescrição
Tipo de envioMarcado como reenvio manual
URL utilizadaRegistra se foi usada URL temporária ou configurada
ResultadoStatus HTTP e tempo de resposta
IdentificadorID único do log para rastreamento
Use o webhookLogId retornado na resposta para correlacionar com logs de suporte se necessário.

Exemplos de Integração

const axios = require('axios');

async function resendWebhook(transactionId, overrideUrl = null) {
  const config = {
    headers: {
      'Authorization': `Bearer ${process.env.FIREBANKING_TOKEN}`,
      'Content-Type': 'application/json'
    }
  };

  const body = overrideUrl ? { url: overrideUrl } : {};

  try {
    const response = await axios.post(
      `https://api.public.firebanking.com.br/api/resend-webhook/${transactionId}`,
      body,
      config
    );

    console.log('Webhook reenviado:', response.data);
    return response.data;
  } catch (error) {
    console.error('Erro ao reenviar webhook:', error.response?.data);
    throw error;
  }
}

// Uso
resendWebhook('external-teste-001');
resendWebhook('external-teste-001', 'https://backup.meusite.com/webhook'); // Com URL temporária

Próximos Passos