Webhooks de CapData

CapData puede notificar a tu sistema en tiempo real sobre eventos importantes, como la creación de una nueva reserva, enviando una petición POST a una URL que tú especifiques. Esto te permite reaccionar instantáneamente a los datos extraídos.

1. Cómo Configurar tu URL de Webhook

Para recibir webhooks, debes configurar tu "Endpoint de Webhook" en el portal de CapData:

  1. Inicia sesión en tu Portal CapData.
  2. Navega a la sección Integraciones en el menú lateral.
  3. Selecciona la opción Webhook General.
  4. Introduce la URL de tu servidor que recibirá las peticiones POST (ej: https://miservidor.com/recibir-capdata-webhook).
  5. Guarda los cambios. A partir de ese momento, CapData comenzará a enviar eventos a esa URL.
Nota: Tu endpoint debe ser una URL pública y accesible desde internet. Para pruebas locales, puedes usar herramientas como ngrok para exponer tu servidor local.

2. Estructura del Payload del Webhook

Cuando ocurre un evento, enviaremos una petición POST a tu URL con un cuerpo JSON. La estructura del payload siempre contiene información sobre el evento, el contexto de la cuenta y quién originó la acción.

Ejemplo: Evento new_flight_reservation_from_extension

Este evento se dispara cuando se extrae una nueva reserva a través de la API General (ej. extensión de Chrome).

Ejemplo de Payload JSON
{
    "event_type": "new_flight_reservation_from_extension",
    "reservation_data": [
        {
            "codigo_reserva": "XYZ123",
            "nombre_pasajero": "MARIA LOPEZ",
            "fecha_ida": "25/12/2025",
            "aerolinea": "Vueling"
            // ... otros datos de la reserva
        }
    ],
    "webhook_account_context": {
        "propietario_id": 1,
        "propietario_name": "Propietario Principal",
        "propietario_email": "propietario@email.com",
        "propietario_slug": "propietario-principal"
    },
    "action_originator": {
        "actor_type": "agent",
        "actor_id": 101,
        "actor_name": "Agente de Soporte",
        "actor_username": "agente.soporte",
        "actor_token_used": "el_token_del_agente_usado",
        "agent_belongs_to_client_id": 15,
        "agent_belongs_to_client_name": "Agencia de Viajes Demo",
        "agent_belongs_to_client_type": "agencia"
    }
}

Ejemplo: Evento flight_reservation_updated

Este evento se envía cuando se actualiza una reserva existente mediante /api/update_reservation. Incluye un sello temporal updated_at en formato ISO 8601.

Ejemplo de Payload JSON – actualización de reserva
{
  "event_type": "flight_reservation_updated",
  "reservation_data": {
    "codigo_reserva": "ABCDEF",
    "nombre_pasajero": "Juan Pérez García",
    "fecha_ida": "2025-10-15",
    "fecha_vuelta": "2025-10-22",
    "aerolinea": "Iberia",
    "precio": "250.50"
    // ... resto de campos según tu modelo de reserva
  },
  "updated_at": "2025-05-12T10:15:30Z",
  "webhook_account_context": {
    "propietario_id": 1,
    "propietario_name": "Propietario Principal",
    "propietario_email": "propietario@email.com",
    "propietario_slug": "propietario-principal"
  },
  "action_originator": {
    "actor_type": "owner",
    "actor_id": 1,
    "actor_name": "Propietario Principal"
    // o "agent"/"agency" si aplica
  }
}

Claves del Payload

3. Buenas Prácticas y Seguridad

4. Cabeceras recomendadas (para tu endpoint)

Aunque CapData envía un Content-Type: application/json, te recomendamos que tu endpoint también:

Importante: Si decides exigir un token o firma, configúralo en tu servidor. CapData incluirá lo que indiques en la URL (por ejemplo, ?token=...) o podrá enviar cabeceras de firma si se habilitan para tu cuenta.

5. Idempotencia y Reintentos

Diseña tu manejador para que sea idempotente: