Saltar al contenido principal

Consultar eventos de un conductor

🔒
Sólo datos de telemetría externa

Este endpoint devuelve los eventos que llegan a Airbag desde una telemetría externa: los que carga Airbag desde Samsara o Motive, o los que tu empresa envía con el POST. No incluye los eventos que registra la app de Airbag; revisa ¿De dónde salen estos datos? para saber dónde consultarlos.

[ GET ]

Consulta los eventos de seguridad registrados para un conductor específico o para todos los conductores de la compañía en un día determinado o en un rango de fechas. Cada registro resume un día de un conductor: eventos, distancia, duración y puntaje. Es útil para análisis histórico, reportes de seguridad vial y para evaluar el desempeño de los conductores a lo largo del tiempo.

# Consulta para un día específico
https://sync.airbagtech.io/provider-data?driverId={{DRIVER_ID}}&date={{DATE}}

# Consulta para un rango de fechas
https://sync.airbagtech.io/provider-data?driverId={{DRIVER_ID}}&startDate={{START_DATE}}&endDate={{END_DATE}}

# Consulta con paginación
https://sync.airbagtech.io/provider-data?driverId={{DRIVER_ID}}&startDate={{START_DATE}}&endDate={{END_DATE}}&limit=100&page=2

¿De dónde salen estos datos?​

Lo que devuelve este endpoint depende del proveedor de telemetría de tu empresa:

Proveedor de la empresaOrigen de los datos
Samsara o MotiveAirbag los carga automáticamente con un proceso diario.
custom (telemetría propia)Los envía tu empresa con Crear o actualizar información del día.
Sin proveedor externo (telemetría de la app Airbag)Este endpoint siempre devuelve data: []. Los eventos están por viaje en Logs de viaje (POST /trips/logs/:tripId) y resumidos por día en Resumen diario de viajes (GET /trips/daily-summary).

Campos​

Todos los parámetros se envían como query parameters y son opcionales.

NombreTipoRequeridoDescripción
driverIdStringNoID del conductor. Acepta el ID que tu empresa usó al crear el conductor o el airbagId. Si se omite, se devuelven los registros de todos los conductores de la compañía.
dateStringNoFecha específica del registro en formato YYYY-MM-DD. Ejemplo: "2025-10-19".
startDateStringNoFecha inicial del rango en formato YYYY-MM-DD. Debe usarse junto con endDate.
endDateStringNoFecha final del rango en formato YYYY-MM-DD. Debe usarse junto con startDate.
limitNumberNoRegistros por página. Entero entre 1 y 1000. Por defecto 50.
pageNumberNoNúmero de página. Entero mayor o igual a 1. Por defecto 1.

Headers​

Authorization
apikey {{API_KEY}}

Ejemplos​

Consulta para un día específico​

curl --location 'https://sync.airbagtech.io/provider-data?driverId=1234&date=2023-10-01' \
--header 'Authorization: apikey {{API_KEY}}'

Consulta para un rango de fechas​

curl --location 'https://sync.airbagtech.io/provider-data?driverId=1234&startDate=2023-10-01&endDate=2023-10-03' \
--header 'Authorization: apikey {{API_KEY}}'

Consulta con paginación​

curl --location 'https://sync.airbagtech.io/provider-data?startDate=2023-10-01&endDate=2023-10-31&limit=100&page=2' \
--header 'Authorization: apikey {{API_KEY}}'

Respuesta exitosa​

{
"status": true,
"data": [
{
"driverId": "1234",
"distance": 150.5,
"duration": 10.5,
"score": 85.2,
"date": "2023-10-01",
"securityEvents": [
{
"event": "speeding",
"count": 2
}
]
},
{
"driverId": "5678",
"distance": 200.0,
"duration": 5,
"score": null,
"date": "2023-10-01",
"securityEvents": []
}
],
"pagination": {
"total": 32,
"totalPages": 16,
"currentPage": 1,
"hasNext": true,
"remainingItems": 30
}
}

Campos de la respuesta​

NombreTipoDescripción
statusBooleantrue si la consulta se procesó correctamente.
dataArrayRegistros encontrados, uno por conductor y día. Vacío si no hay datos.
data[].driverIdStringID del conductor que tu empresa usó al crearlo (o el airbagId si no tiene uno), aunque la consulta se haya hecho con el airbagId.
data[].distanceNumberDistancia recorrida en el día, en kilómetros.
data[].durationNumberTiempo de conducción del día, en horas.
data[].scoreNumber | nullPuntaje de seguridad del día. Es null cuando el registro se envió sin puntaje.
data[].dateStringFecha del registro (YYYY-MM-DD).
data[].securityEventsArrayEventos del día con su cantidad ({event, count}). Puede venir vacío ([]) si el conductor no tuvo eventos ese día.
pagination.totalNumberTotal de registros que cumplen los filtros.
pagination.totalPagesNumberTotal de páginas con el limit usado.
pagination.currentPageNumberPágina devuelta.
pagination.hasNextBooleantrue si hay más páginas después de la actual.
pagination.remainingItemsNumberRegistros que quedan después de la página actual.
ℹ️
Tipos de eventos

Los valores del campo event dentro de securityEvents corresponden a las llaves listadas en la documentación de Eventos. En empresas con Samsara o Motive también pueden aparecer fuel_efficiency e idling_percentage, que carga Airbag.

Respuesta sin datos​

{
"status": true,
"data": [],
"pagination": {
"total": 0,
"totalPages": 0,
"currentPage": 1,
"hasNext": false,
"remainingItems": 0
}
}

Respuestas con error​

400 — Parámetros inválidos​

Se devuelve cuando una fecha no tiene el formato YYYY-MM-DD, cuando falta una de las dos fechas del rango o cuando limit o page están fuera de rango. message indica el parámetro y el motivo.

{
"error": "VALIDATION_FAILED",
"message": "endDate: endDate is required when startDate is provided.",
"details": []
}

401 — No autorizado​

{
"status": false,
"error": "You are not authorized to perform this action",
"errorId": "-1"
}

500 — Error interno​

{
"status": false,
"message": "Error: Request cannot be processed.",
"errorId": "a1b2c3d4e5f6"
}

Notas importantes​

  • Todos los parámetros son opcionales, permitiendo consultas flexibles.
  • Si no se especifica driverId, se devolverán datos de todos los conductores de la compañía.
  • Si se usa startDate, debe incluirse también endDate, y viceversa.
  • La paginación está incluida en todas las respuestas exitosas.
  • La respuesta siempre devuelve un array en data, incluso para consultas de un solo día.