Saltar al contenido principal

Reporte de Kilómetros

Distancia recorrida, consumo de combustible y métricas de costo de tu flota durante un período determinado.

GET/apidev/v1/reports/avl/kilometers
PermisoAPICLI_RPTAVL_KILOMETROS
Límite de solicitudes10 req/min (ventana deslizante)
Caché300s (5 min)
Rango máximo31 días

Resumen

Proporciona datos de distancia y consumo para cada vehículo de tu flota. Úsalo para auditar el kilometraje, estimar costos de combustible y hacer seguimiento de las emisiones de CO₂.

  • Desglose diarioperday=true devuelve una fila por vehículo por día
  • Agrupación por conductorperperson=true segmenta los resultados por el conductor asignado
  • Subdivisión geográficagroupbygeo divide los totales por estado, ciudad o barrio
  • Subtotalessubtotals=true incluye filas de resumen

Solicitud

Encabezados de la solicitud

Every request to a protected endpoint requires these headers:

HeaderRequiredDescription
AuthorizationYesBearer token obtained from the Login endpoint. Format: Bearer <token>
X-API-KeyYesCompany integration key provided during onboarding. Format: gtk_xxx...
tenantYesYour assigned tenant domain (default: geotareas.com) — always send your assigned tenant
Content-TypeConditionalapplication/json — required for POST and PUT requests

Parámetros de consulta

ParámetroTipoRequeridoPredeterminadoDescripción
startdatestringFecha-hora de inicio en ISO 8601 (ej. 2026-03-01T00:00:00)
enddatestringFecha-hora de fin en ISO 8601. Rango máximo 31 días desde startdate
devicesstringNoTodos los visiblesIDs de dispositivo separados por coma. Máximo 500
limitintegerNo25Registros por página (1100)
offsetintegerNo0Registros a omitir
perdaybooleanNofalseAgrupa los resultados por día
perpersonbooleanNofalseAgrupa los resultados por conductor asignado
subtotalsbooleanNofalseIncluye filas de subtotal
groupbygeoenumNoSubdivide por área: state, city o neighbourhood
Visibilidad de dispositivos

Cuando se omite devices, el reporte incluye todos los dispositivos visibles para el usuario autenticado según su alcance de permisos.


Ejemplos de código

curl -s "https://$TENANT/apidev/v1/reports/avl/kilometers?startdate=2026-03-01T00:00:00&enddate=2026-03-15T23:59:59&limit=50&perday=true" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Campos de la respuesta

CampoTipoDescripción
device_namestringNombre visible del vehículo/dispositivo
person_namestringNombre del conductor asignado (solo se completa con perperson=true)
datetimestring | nullFecha del registro (YYYY-MM-DD, solo se completa con perday=true)
kmsnumberTotal de kilómetros recorridos
fuelnumberCombustible consumido estimado (litros)
costnumberCosto de combustible estimado (moneda según configuración del vehículo)
co2numberEmisiones de CO₂ estimadas (kg)
temperaturenumberLectura promedio del sensor de temperatura 1. 0 si el vehículo no tiene sensor
statestringNombre del estado (solo se completa con groupbygeo)
citystringNombre de la ciudad (solo se completa con groupbygeo=city o neighbourhood)
neighbourhoodstringNombre del barrio (solo se completa con groupbygeo=neighbourhood)
Valores de combustible y costo

fuel, cost y co2 se calculan usando la tasa de consumo de combustible y el precio de combustible configurados en los ajustes de cada vehículo. Si no están configurados, estos campos devuelven 0.

Ejemplo de respuesta

{
"success": true,
"data": [
{
"device_name": "Truck A-101",
"person_name": "",
"datetime": "2026-03-01",
"kms": 267.7,
"fuel": 32.12,
"cost": 48.18,
"co2": 83.54,
"temperature": 22.3,
"state": "",
"city": "",
"neighbourhood": ""
},
{
"device_name": "Van B-205",
"person_name": "",
"datetime": "2026-03-01",
"kms": 142.3,
"fuel": 11.38,
"cost": 17.07,
"co2": 29.57,
"temperature": 4.1,
"state": "",
"city": "",
"neighbourhood": ""
}
],
"meta": {
"total": 84,
"limit": 50,
"offset": 0
}
}

Con perperson=true

Cuando la agrupación por conductor está habilitada, person_name se completa y pueden aparecer varias filas para el mismo dispositivo si los conductores cambiaron durante el período:

{
"device_name": "Truck A-101",
"person_name": "Carlos Martinez",
"datetime": "2026-03-01",
"kms": 180.5,
"fuel": 21.66,
"cost": 32.49,
"co2": 56.32,
"temperature": 22.3,
"state": "",
"city": "",
"neighbourhood": ""
}

Con groupbygeo=state

La subdivisión geográfica completa el campo geo correspondiente:

{
"device_name": "Truck A-101",
"person_name": "",
"datetime": null,
"kms": 180.5,
"fuel": 21.66,
"cost": 32.49,
"co2": 56.32,
"temperature": 0,
"state": "Montevideo",
"city": "",
"neighbourhood": ""
}

Errores

CódigoHTTPDescripción
INVALID_DATE_RANGE400El rango de fechas supera el máximo de 31 días, el fin es anterior al inicio, o fechas no ISO
VALIDATION_ERROR400Parámetros inválidos: faltan fechas, limit > 100, > 500 dispositivos
UNAUTHORIZED401tenant / Authorization / X-API-Key faltante, inválido o expirado
FORBIDDEN403El usuario carece del permiso APICLI_RPTAVL_KILOMETROS
RATE_LIMITED429Se superaron las 10 req/min
INTERNAL_ERROR500Error inesperado del servidor