Skip to content

Webhooks API ​

Reciba notificaciones en tiempo real de eventos de CyberOrigen.

Professional y Enterprise

Los webhooks están disponibles en los planes Professional y Enterprise.

Descripción General ​

Los webhooks le permiten recibir callbacks HTTP cuando ocurren eventos en CyberOrigen. Configure endpoints para recibir notificaciones sobre escaneos, hallazgos, cambios de cumplimiento y más.

Endpoints ​

MétodoEndpointDescripción
GET/api/v1/webhooksListar webhooks
POST/api/v1/webhooksCrear webhook
GET/api/v1/webhooks/{id}Obtener detalles de webhook
PATCH/api/v1/webhooks/{id}Actualizar webhook
DELETE/api/v1/webhooks/{id}Eliminar webhook
POST/api/v1/webhooks/{id}/testEnviar evento de prueba
GET/api/v1/webhooks/{id}/deliveriesListar historial de entregas

Crear Webhook ​

bash
POST /api/v1/webhooks
Content-Type: application/json

{
  "name": "Security Alerts",
  "url": "https://your-server.com/webhooks/cyberorigen",
  "events": [
    "scan.completed",
    "vulnerability.critical",
    "vulnerability.high"
  ],
  "secret": "your-webhook-secret",
  "active": true
}

Parámetros ​

CampoTipoRequeridoDescripción
namestringSíNombre descriptivo
urlstringSíURL del endpoint HTTPS
eventsarraySíEventos a los que suscribirse
secretstringNoSecreto de firma para verificación
activebooleanNoHabilitar/deshabilitar webhook

Respuesta ​

json
{
  "id": "webhook_abc123",
  "name": "Security Alerts",
  "url": "https://your-server.com/webhooks/cyberorigen",
  "events": ["scan.completed", "vulnerability.critical", "vulnerability.high"],
  "active": true,
  "created_at": "2025-12-21T10:00:00Z"
}

Eventos Disponibles ​

Eventos de Escaneo ​

EventoDescripción
scan.createdNuevo escaneo iniciado
scan.startedEjecución de escaneo iniciada
scan.progressFase de escaneo completada
scan.completedEscaneo finalizado exitosamente
scan.failedEscaneo falló con error

Eventos de Vulnerabilidad ​

EventoDescripción
vulnerability.foundNueva vulnerabilidad descubierta
vulnerability.criticalHallazgo de severidad crítica
vulnerability.highHallazgo de severidad alta
vulnerability.status_changedEstado de hallazgo actualizado
vulnerability.resolvedHallazgo marcado como resuelto

Eventos de Cumplimiento ​

EventoDescripción
control.status_changedEstado de control actualizado
evidence.uploadedNueva evidencia agregada
evidence.expiringEvidencia próxima a expirar
framework.score_changedPuntuación de cumplimiento cambiada
audit.request_createdNueva solicitud de auditor

Eventos de Seguridad ​

EventoDescripción
quarantine.threat_detectedMalware detectado en carga
user.login_failedIntento de inicio de sesión fallido
user.mfa_disabledMFA deshabilitado en cuenta

Carga Útil de Webhook ​

Todas las entregas de webhook incluyen:

json
{
  "id": "delivery_xyz789",
  "event": "scan.completed",
  "timestamp": "2025-12-21T15:30:00Z",
  "data": {
    // Datos específicos del evento
  }
}

Ejemplo: Escaneo Completado ​

json
{
  "id": "delivery_xyz789",
  "event": "scan.completed",
  "timestamp": "2025-12-21T15:30:00Z",
  "data": {
    "scan_id": "scan_abc123",
    "target": "example.com",
    "status": "completed",
    "duration_seconds": 2700,
    "findings": {
      "total": 12,
      "critical": 1,
      "high": 3,
      "medium": 5,
      "low": 3
    }
  }
}

Ejemplo: Vulnerabilidad Crítica ​

json
{
  "id": "delivery_abc456",
  "event": "vulnerability.critical",
  "timestamp": "2025-12-21T15:35:00Z",
  "data": {
    "finding_id": "finding_xyz789",
    "title": "Remote Code Execution",
    "severity": "critical",
    "cvss_score": 9.8,
    "target": "example.com",
    "affected_component": "https://example.com/api/upload",
    "cve_ids": ["CVE-2024-1234"],
    "scan_id": "scan_abc123"
  }
}

Verificación de Firma ​

Si proporciona un secret, CyberOrigen firma cada entrega con HMAC-SHA256.

Headers ​

X-CyberOrigen-Signature: sha256=abc123...
X-CyberOrigen-Event: scan.completed
X-CyberOrigen-Delivery: delivery_xyz789

Ejemplo de Verificación (Node.js) ​

javascript
const crypto = require('crypto');

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

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

// Express middleware
app.post('/webhooks/cyberorigen', (req, res) => {
  const signature = req.headers['x-cyberorigen-signature'];
  const payload = JSON.stringify(req.body);

  if (!verifySignature(payload, signature, process.env.WEBHOOK_SECRET)) {
    return res.status(401).send('Invalid signature');
  }

  // Process webhook...
  res.status(200).send('OK');
});

Ejemplo de Verificación (Python) ​

python
import hmac
import hashlib

def verify_signature(payload: bytes, signature: str, secret: str) -> bool:
    expected = 'sha256=' + hmac.new(
        secret.encode(),
        payload,
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(signature, expected)

# Flask route
@app.route('/webhooks/cyberorigen', methods=['POST'])
def webhook():
    signature = request.headers.get('X-CyberOrigen-Signature')

    if not verify_signature(request.data, signature, WEBHOOK_SECRET):
        return 'Invalid signature', 401

    # Process webhook...
    return 'OK', 200

Probar Webhook ​

Envíe un evento de prueba para verificar su endpoint:

bash
POST /api/v1/webhooks/{webhook_id}/test

Respuesta ​

json
{
  "delivery_id": "delivery_test123",
  "status": "success",
  "response_code": 200,
  "response_time_ms": 145
}

Historial de Entregas ​

Vea los intentos de entrega de webhook:

bash
GET /api/v1/webhooks/{webhook_id}/deliveries

Respuesta ​

json
{
  "items": [
    {
      "id": "delivery_xyz789",
      "event": "scan.completed",
      "status": "success",
      "response_code": 200,
      "response_time_ms": 145,
      "attempts": 1,
      "created_at": "2025-12-21T15:30:00Z",
      "delivered_at": "2025-12-21T15:30:00Z"
    },
    {
      "id": "delivery_abc456",
      "event": "vulnerability.critical",
      "status": "failed",
      "response_code": 500,
      "response_time_ms": 2000,
      "attempts": 3,
      "error": "Connection timeout",
      "created_at": "2025-12-21T15:35:00Z",
      "next_retry": "2025-12-21T16:35:00Z"
    }
  ],
  "total": 156
}

Política de Reintentos ​

Las entregas fallidas se reintentan automáticamente:

IntentoRetraso
1Inmediato
25 minutos
330 minutos
42 horas
58 horas

Después de 5 intentos fallidos, la entrega se marca como fallida y el webhook se deshabilita si las fallas persisten.

Mejores Prácticas ​

  1. Siempre verifique firmas para garantizar autenticidad
  2. Responda rápidamente (dentro de 30 segundos) para evitar timeouts
  3. Devuelva estado 2xx para confirmar recepción
  4. Procese de forma asíncrona para operaciones de larga duración
  5. Implemente idempotencia usando IDs de entrega
  6. Monitoree estado de entrega y corrija endpoints fallidos rápidamente

Límites de Tasa ​

PlanWebhooksEventos/Hora
Professional51,000
EnterpriseIlimitado10,000

Updated at:

Agentic AI-Powered Security & Compliance