Bridge - Utilidades
Endpoints auxiliares para configuración y monitoreo de Bridge.
1. Obtener Webhooks de Bridge
GET /bridge/webhooks
Obtiene la configuración de webhooks de Bridge.
Headers:
Authorization: Bearer <JWT_TOKEN>
Respuesta Exitosa (200):
{
"success": true,
"data": {
"webhooks": [
{
"id": "wh_123",
"url": "https://swapbits.site/api/bank/bridge/webhook",
"event_categories": ["customer", "virtual_account"],
"status": "active"
}
]
},
"message": "Webhooks de Bridge obtenidos exitosamente"
}
🔧 Configuración de Webhooks
Eventos Soportados
Customer Events
customer.created- Customer creadocustomer.updated- Customer actualizadocustomer.verified- Customer verificadocustomer.rejected- Customer rechazado
Virtual Account Events
virtual_account.created- Cuenta virtual creadavirtual_account.credited- Fondos recibidosvirtual_account.debited- Fondos enviados
External Account Events
external_account.created- Cuenta externa creadaexternal_account.updated- Cuenta externa actualizada
📋 Estructura de Webhook
Headers
Content-Type: application/json
X-Bridge-Signature: <signature>
X-Bridge-Timestamp: <timestamp>
Body Base
{
"event_category": "customer",
"event_type": "customer.updated",
"event_object_id": "bridge_customer_123",
"event_object": {
// Objeto específico del evento
},
"timestamp": "2024-01-15T10:30:00Z"
}
🔒 Verificación de Webhooks
Validación de Signature
const crypto = require('crypto');
function verifyWebhook(payload, signature, secret) {
const computedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return signature === `sha256=${computedSignature}`;
}
Headers de Seguridad
- X-Bridge-Signature: Firma HMAC SHA-256
- X-Bridge-Timestamp: Timestamp Unix
- User-Agent: Bridge-Webhooks/1.0
📊 Monitoreo y Logs
Estados de Webhook
- active - Funcionando correctamente
- inactive - Desactivado temporalmente
- failed - Múltiples fallos consecutivos
- paused - Pausado manualmente
Reintentos
- Máximo: 5 intentos
- Intervalo: Exponencial (1s, 2s, 4s, 8s, 16s)
- Timeout: 30 segundos por intento
🛠️ Configuración de Desarrollo
URLs de Webhook
- Producción:
https://api.swapbits.com/bank/bridge/webhook - Staging:
https://staging-api.swapbits.com/bank/bridge/webhook - Desarrollo:
https://ngrok.io/your-tunnel/bridge/webhook
Testing con ngrok
# Instalar ngrok
npm install -g ngrok
# Exponer puerto local
ngrok http 3000
# URL resultante
https://abc123.ngrok.io/bridge/webhook
🔍 Debugging
Logs de Webhook
{
"webhook_id": "wh_123",
"event_type": "customer.updated",
"delivery_id": "del_456",
"status": "delivered",
"response_code": 200,
"response_time_ms": 150,
"attempts": 1,
"timestamp": "2024-01-15T10:30:00Z"
}
Códigos de Estado
- 200-299: Éxito (no se reintenta)
- 300-399: Redirección (se reintenta)
- 400-499: Error cliente (no se reintenta)
- 500-599: Error servidor (se reintenta)
📈 Métricas
Disponibilidad
- Target: 99.9% uptime
- SLA: Respuesta < 30s
- Monitoring: 24/7
Volumetría
- Rate Limit: 1000 webhooks/min
- Batch Size: 1 evento por webhook
- Retention: 30 días de logs
⚠️ Errores Comunes
Webhook Failures
- Timeout: Endpoint no responde en 30s
- Invalid Response: Código HTTP no 2xx
- Connection Error: DNS/Red no disponible
- SSL Error: Certificado inválido
Debugging Steps
- Verificar URL del webhook
- Validar certificado SSL
- Comprobar firewall/rate limiting
- Revisar logs del servidor
- Validar formato de respuesta
📝 Notas Importantes
- Los webhooks son la forma principal de recibir actualizaciones en tiempo real
- Siempre validar la firma para seguridad
- Implementar idempotencia para manejar duplicados
- Responder rápidamente (< 30s) para evitar reintentos
- Usar HTTPS siempre en producción