Saltar al contenido principal

Webhooks

No disponible en producción

La versión productiva actual no expone rutas /api/webhooks ni una consola para registrar webhooks. Esta página queda como referencia de diseño futuro; no debe usarse como guía de integración vigente.

¿Qué son los Webhooks?​

Los webhooks permiten que el sistema CECOM envíe notificaciones automáticas a sistemas externos cuando ocurren eventos importantes.


sequenceDiagram
  participant CECOM as CECOM API
  participant WH as Webhook Endpoint
  participant EXT as Sistema Externo

  Note over CECOM: Evento ocurre
  CECOM->>WH: POST /su-endpoint
  WH->>EXT: Procesar evento
  EXT->>WH: OK
  WH->>CECOM: 200 OK

Eventos Propuestos (No Disponibles)​

EventoDescripción
emergency.createdNueva emergencia creada
emergency.updatedEmergencia actualizada
emergency.closedEmergencia cerrada
resource.dispatchedRecurso despachado
resource.status_changedCambio de estado de recurso
shift_handover.completedEntrega de turno completada
alert.createdNueva alerta de despacho

Formato del Payload​

Estructura General​

{
"event": "emergency.created",
"timestamp": "2024-01-15T10:30:00.000Z",
"tenantId": "uuid-del-tenant",
"data": {
// Datos específicos del evento
}
}

Ejemplo: Nueva Emergencia​

{
"event": "emergency.created",
"timestamp": "2024-01-15T10:30:00.000Z",
"tenantId": "abc123",
"data": {
"id": "em-456",
"type": "10-1",
"description": "Incendio forestal sector norte",
"location": {
"lat": -33.4489,
"lng": -70.6693,
"address": "Sector Norte"
},
"status": "ACTIVE",
"createdBy": "usuario@brysa.cl"
}
}

Configuración Propuesta (No Disponible)​

Registrar Webhook​

POST /api/webhooks
Authorization: Bearer <token>
Content-Type: application/json
{
"url": "https://su-sistema.com/webhooks/cecom",
"events": ["emergency.created", "emergency.closed"],
"secret": "clave-para-firma"
}

Respuesta​

{
"success": true,
"data": {
"id": "wh-789",
"url": "https://su-sistema.com/webhooks/cecom",
"events": ["emergency.created", "emergency.closed"],
"active": true,
"createdAt": "2024-01-15T10:30:00.000Z"
}
}

Seguridad​

Verificación de Firma​

Cada request incluirá un header de firma:

X-CECOM-Signature: sha256=abc123def456...

Validar Firma​

const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');

return `sha256=${expected}` === signature;
}

Reintentos​

Si el endpoint no responde con 2xx, el sistema reintentará:

IntentoDelay
1Inmediato
21 minuto
35 minutos
430 minutos
52 horas

Después de 5 intentos fallidos, el webhook se marca como inactivo.

WebSocket Alternativo​

Mientras los webhooks están en desarrollo, puede usar WebSocket para recibir actualizaciones en tiempo real:

const socket = io('wss://api.cecom-brysa.cl', {
auth: {
token: 'su-jwt-token'
}
});

socket.on('emergency:created', (data) => {
console.log('Nueva emergencia:', data);
});

socket.on('resource:updated', (data) => {
console.log('Recurso actualizado:', data);
});

Eventos WebSocket Actuales​

EventoDescripción
emergency:createdNueva emergencia
emergency:messageNuevo mensaje en bitácora
resource:updatedCambio de estado de recurso
attendance:markedAsistencia registrada

Solicitar Acceso

Para participar en el programa beta de webhooks, contacte a contacto@nfr-innovacionesweb.cl