Saltar al contenido principal

Consultar los eventos y logs de un viaje

[ POST ]

Devuelve los registros de geolocalización (ruta recorrida) y los eventos riesgosos detectados por la app de Airbag durante un viaje específico. Cada evento incluye su magnitud, la cual varía según el tipo y permite estimar la gravedad del comportamiento.

https://sync.airbagtech.io/trips/logs/{{TRIP_ID}}

Campos​

NombreTipoRequeridoDescripción
TRIP_IDStringSíID del viaje a consultar.

Debe enviarse en la ruta de la URL.
driverIdStringSíID del conductor que ejecutó el viaje especificado en TRIP_ID. Acepta el ID que tu empresa usó al crear el conductor o el airbagId. Si el viaje no es de ese conductor, devuelve error.
showEventsBooleanNoDetermina si se devuelven los eventos riesgosos. Valor por defecto: true.
showLogsBooleanNoDetermina si se devuelven los logs de geolocalización. Valor por defecto: true.

Eventos riesgosos​

Estos son los tipos de evento que puede devolver el endpoint en el arreglo data.events. Cada evento tiene su propia magnitud (value) cuya unidad depende del tipo.

5 tipos de evento
Velocidad

Comportamientos relacionados con la velocidad del vehículo.

  • Exceso de velocidadspeeding

    La velocidad del conductor superó el límite permitido en esa vía. Si `speedLimit` es 999, significa que no se pudo obtener el límite legal para ese tramo.

Distracción

Eventos derivados de falta de atención al volante.

  • Uso del celularphoneDistraction

    El conductor manipuló el celular mientras conducía a una velocidad superior a 15 km/h.

Maniobras agresivas

Fuerzas detectadas por el acelerómetro durante maniobras bruscas.

  • Aceleraciónacceleration

    El conductor aceleró de manera agresiva.

  • Frenadodeacceleration

    El conductor frenó de manera agresiva.

  • Curva agresivacornering

    El conductor tomó una curva con excesiva fuerza lateral.

Equivalencias con los eventos de /provider-data​

Los nombres de este endpoint no son los mismos que usa la sección de Eventos. Si combinas ambas fuentes, usa esta tabla:

Este endpoint (type)/provider-data (event)
accelerationacceleration
deaccelerationbraking
corneringcornering
speedingspeeding
phoneDistractionphone_distraction

Headers​

Content-TypeAuthorization
application/jsonapikey {{API_KEY}}

Body​

{
"driverId": "string",
"showEvents": "boolean",
"showLogs": "boolean"
}

Ejemplo​

curl --location -g 'https://sync.airbagtech.io/trips/logs/{{TRIP_ID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: apikey {{API_KEY}}' \
--data '{
"driverId": "ID-1",
"showEvents": true,
"showLogs": false
}'

Respuestas​

✅ Respuesta exitosa (200 OK)​

Devuelve un objeto data con dos arreglos: events (eventos riesgosos detectados) y locationLogs (registros de geolocalización tomados a lo largo del viaje).

{
"status": true,
"data": {
"events": [
{
"created": "2025-02-02T20:15:14.000Z",
"country": "",
"state": "",
"lat": 19.42521,
"lon": -99.18327,
"type": "speeding",
"value": 0,
"legalSpeedLimit": 30,
"speedLimit": 30,
"speedViolation": 4.27,
"hasCustomSpeedLimit": false
},
{
"created": "2025-02-02T20:17:42.000Z",
"country": "",
"state": "",
"lat": 19.42648,
"lon": -99.18091,
"type": "deacceleration",
"value": 0.42
},
{
"created": "2025-02-02T20:19:58.000Z",
"country": "",
"state": "",
"lat": 19.42731,
"lon": -99.17842,
"type": "phoneDistraction",
"value": 12.4
}
],
"locationLogs": [
{
"distracted": false,
"created": "2025-02-02T20:11:45.000Z",
"speed": 0,
"speedLimit": 999,
"speedViolation": 0,
"lat": 19.42480,
"lon": -99.18512
},
{
"distracted": false,
"created": "2025-02-02T20:15:14.000Z",
"speed": 34.27,
"speedLimit": 30,
"speedViolation": 4.27,
"lat": 19.42521,
"lon": -99.18327
},
{
"distracted": true,
"created": "2025-02-02T20:19:58.000Z",
"speed": 24.8,
"speedLimit": 50,
"speedViolation": 0,
"lat": 19.42731,
"lon": -99.17842
}
]
}
}
nota

En una respuesta real, locationLogs puede contener cientos o miles de registros (se toma una muestra cada ~1–6 segundos mientras el vehículo está en movimiento). El ejemplo se ha recortado por legibilidad.

Descripción de campos de respuesta​

CampoTipoDescripción
statusBooleanIndica si la operación fue exitosa.
dataObjectContenedor con los eventos y registros del viaje.
data.eventsArray<Object>Eventos riesgosos detectados durante el viaje. Viene vacío si showEvents es false. Ver tabla abajo.
data.locationLogsArray<Object>Registros de geolocalización ordenados cronológicamente. Viene vacío si showLogs es false. Ver tabla abajo.

Campos dentro de cada elemento de events​

CampoTipoDescripción
createdStringFecha y hora en que se detectó el evento (ISO 8601, UTC).
typeStringTipo de evento riesgoso. Valores: speeding, phoneDistraction, acceleration, deacceleration, cornering.
latNumberLatitud del punto donde ocurrió el evento (grados decimales).
lonNumberLongitud del punto donde ocurrió el evento (grados decimales).
countryStringPaís donde ocurrió el evento. Puede estar vacío si no se pudo resolver.
stateStringEstado/provincia donde ocurrió el evento. Puede estar vacío si no se pudo resolver.
valueNumberMagnitud cruda del evento. Su unidad depende del type: segundos de distracción para phoneDistraction, fuerza G para acceleration/deacceleration/cornering, 0 para speeding (usa speedViolation).
legalSpeedLimitNumberLímite legal de velocidad en ese punto (km/h). Sólo en eventos speeding. Es 999 cuando no se pudo obtener el límite real de la vía.
speedLimitNumberLímite de velocidad efectivamente aplicado al evaluar el evento. Sólo en eventos speeding. Normalmente igual a legalSpeedLimit, salvo cuando la empresa haya configurado un límite personalizado (ver hasCustomSpeedLimit).
speedViolationNumberExcedente de velocidad sobre speedLimit, en km/h. Sólo en eventos speeding.
hasCustomSpeedLimitBooleantrue si el límite aplicado proviene de una regla personalizada de la empresa (en lugar del límite legal). Sólo en eventos speeding.

Campos dentro de cada elemento de locationLogs​

CampoTipoDescripción
createdStringFecha y hora del registro (ISO 8601, UTC). La frecuencia de muestreo puede variar entre 1 y 6 segundos.
latNumberLatitud del punto (grados decimales).
lonNumberLongitud del punto (grados decimales).
speedNumberVelocidad instantánea del conductor, en km/h.
speedLimitNumberLímite de velocidad del tramo en km/h. Será 999 cuando no se pudo determinar el límite real de la vía.
speedViolationNumberExcedente sobre speedLimit en km/h. Es 0 cuando no hubo violación o el límite es 999.
distractedBooleantrue si en ese punto se detectó que el conductor estaba usando el celular.

❌ Respuesta con error (404 Not Found)​

Se devuelve cuando el viaje no existe o no pertenece al conductor indicado, cuando el conductor no existe, o cuando showEvents o showLogs no son booleanos. message indica la causa.

{
"status": true,
"message": "Error: Trip 8PJbFlQm3kZ2xT0aYc1d does not exist"
}
Causamessage
Viaje inexistente o de otro conductor"Error: Trip <TRIP_ID> does not exist"
Conductor inexistente"Error: Driver not found"
showEvents no booleano"Error: showEvents must be boolean (true|false)"
showLogs no booleano"Error: showLogs must be boolean (true|false)"
nota

En esta respuesta de error status es true. Usa el código HTTP 404 para detectar el error.