Saltar al contenido principal

Reporte de Proactividad por Dispositivo

Cumplimiento de tareas a nivel de dispositivo para una fecha de ejecución específica — resumen + desglose por dispositivo.

GET/apidev/v1/reports/gt/proactivity-device
PermisoAPICLI_RPTGT_PROACTIVIDAD_DISP
Límite de solicitudes10 req/min
Caché60s (1 min)

Resumen​

Devuelve el cumplimiento de tareas de una única fecha de ejecución, agrupado por tipo de móvil — lo mismo que muestra la pantalla de Proactividad. Cada grupo trae su propia fila de subtotales (summary) y su propio desglose por vehículo (devices): conductor, jornada, cantidades de tareas, tiempo sin asignar, ocupación y promedios. Establecé realtime=true para obtener cifras en vivo, y filtrá por dispositivos, conductores, tipos de servicio, causas, geografía o geocercas.

Cambio de contrato — 2026-08-17

data ahora es un arreglo de grupos por tipo de móvil. Antes era un único objeto { summary, devices } armado con el primer grupo solamente, que descartaba en silencio todos los demás tipos de móvil (una flota con autos y motos recibía solo autos). Ver Respuesta.


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ámetroTipoRequeridoPor defectoDescripción
execution_datestringSí—Fecha en ISO 8601 (ej. 2026-03-19). Una sola fecha, no un rango.
realtimebooleanNo—Incluir datos en tiempo real.
devicesstringNo—IDs de dispositivos separados por comas. Máximo 500.
driversstringNo—IDs de conductores separados por comas. Máximo 500.
service_typesstringNo—IDs de tipos de servicio separados por comas. Máximo 100.
causesstringNo—IDs de causas separados por comas. Máximo 100.
subcausesstringNo—IDs de subcausas separados por comas. Máximo 100.
countriesstringNo—IDs de países separados por comas. Máximo 50.
departmentsstringNo—IDs de departamentos separados por comas. Máximo 50.
geofencesstringNo—IDs de geocercas separados por comas. Máximo 100.
limitintegerNo25Cantidad de grupos de tipo de móvil por página (1–100).
offsetintegerNo0Cantidad de grupos de tipo de móvil a omitir para la paginación.
La paginación aplica a los grupos, no a los dispositivos

limit / offset paginan los grupos de tipo de móvil, y meta.total es la cantidad total de grupos. Cada grupo viaja siempre con todos sus dispositivos — de lo contrario, un grupo con subtotales pero sin vehículos con tareas volvería a desaparecer de la respuesta.


Ejemplos de código​

curl -s -H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
"https://$TENANT/apidev/v1/reports/gt/proactivity-device?execution_date=2026-03-19&limit=25"

Respuesta​

data es un arreglo de grupos por tipo de móvil. Un elemento por tipo de móvil (la agrupación "Tipo de móvil" del reporte web), cada uno con su fila de subtotales y sus filas por vehículo.

Todas las duraciones vienen en minutos (*_min) y además ya formateadas para mostrar (*_text, por ejemplo "1h 35m"). Un *_text vacío significa que ese valor no se pudo calcular para el grupo.

Campos del grupo​

CampoTipoDescripción
device_typestringNombre del tipo de móvil / grupo de proactividad.
device_type_idstring | nullIdentificador del tipo de móvil.
summaryobjectSubtotales del grupo — ver abajo.
devicesarrayUna fila por vehículo del grupo — ver abajo.

Campos del resumen​

CampoTipoDescripción
device_typestringNombre del tipo de móvil (igual que el del grupo).
device_type_idstring | nullIdentificador del tipo de móvil.
total_devicesnumberDispositivos activos del grupo.
devices_freenumberDispositivos activos sin tarea en curso.
total_tasksnumberSuma de conveniencia: tasks_pending + tasks_finished + tasks_in_progress + tasks_cancelled. No es una columna del reporte web.
tasks_finishednumberTareas finalizadas.
tasks_pendingnumberTareas sin asignar (no programadas).
tasks_pending_schedulednumberTareas sin asignar programadas a futuro.
tasks_in_progressnumberTareas en progreso.
tasks_cancellednumberTareas canceladas.
tasks_rejectednumberTareas rechazadas por los conductores.
max_time_unassigned_min / _textnumber / stringMayor tiempo que un vehículo estuvo sin asignación.
compliance_pctnumberOcupación: porcentaje de la jornada dedicado a tareas.
avg_arrival_last_hour_min / _textnumber / stringPromedio de llegada de la última hora.
avg_arrival_day_min / _textnumber / stringPromedio de llegada del día.
avg_assignment_min / _textnumber / stringPromedio de tiempo hasta asignar una tarea.
avg_arrival_min / _textnumber / stringPromedio desde la aceptación hasta el arribo.
avg_on_task_min / _textnumber / stringPromedio de tiempo en tarea.
avg_kmnumberPromedio de kilómetros por tarea finalizada.

Campos del arreglo Devices​

CampoTipoDescripción
device_idstring | nullIdentificador del dispositivo.
device_namestringNombre del vehículo.
driver_idstring | nullIdentificador del conductor.
driver_namestringNombre del conductor.
activebooleanEl vehículo tiene jornada abierta en la fecha de ejecución.
worked_min / worked_textnumber / stringDuración de la jornada del conductor.
total_tasksnumbertasks_finished + tasks_in_progress + tasks_cancelled + tasks_rejected.
tasks_finishednumberTareas finalizadas.
tasks_in_progressnumberTareas en progreso.
tasks_cancellednumberTareas canceladas.
tasks_rejectednumberTareas rechazadas por el conductor.
time_unassigned_min / _textnumber / stringMayor lapso sin asignación.
compliance_pctnumberOcupación de la jornada de este vehículo.
avg_arrival_day_min / _textnumber / stringPromedio de llegada del día.
avg_assignment_min / _textnumber / stringPromedio de tiempo hasta asignar.
avg_arrival_min / _textnumber / stringPromedio desde la aceptación hasta el arribo.
avg_on_task_min / _textnumber / stringPromedio de tiempo en tarea.
last_signal_min / _textnumber / stringTiempo desde la última señal recibida.
last_gps_min / _textnumber / stringTiempo desde la última posición GPS válida.
total_kmnumberKilómetros recorridos en tareas finalizadas.
avg_kmnumberPromedio de kilómetros por tarea finalizada.
time_since_last_task_min / _textnumber / stringTiempo desde la última tarea finalizada (0 mientras haya una en curso).
avg_arrival_last_hour_min / _textnumber / stringPromedio de llegada de la última hora.
tasks_pending se eliminó de las filas por dispositivo

Se derivaba por resta y siempre daba exactamente la cantidad de tareas rechazadas. "Sin asignar" es un concepto del grupo y vive en summary.tasks_pending; el rechazo por vehículo ahora se publica como tasks_rejected.

Ejemplo de respuesta​

{
"success": true,
"data": [
{
"device_type": "Autos",
"device_type_id": "104820570001",
"summary": {
"device_type": "Autos",
"device_type_id": "104820570001",
"total_devices": 5,
"devices_free": 2,
"total_tasks": 47,
"tasks_finished": 35,
"tasks_pending": 8,
"tasks_pending_scheduled": 2,
"tasks_in_progress": 3,
"tasks_cancelled": 1,
"tasks_rejected": 0,
"max_time_unassigned_min": 95,
"max_time_unassigned_text": "1h 35m",
"compliance_pct": 74,
"avg_arrival_last_hour_min": 18,
"avg_arrival_last_hour_text": "18m",
"avg_arrival_day_min": 22,
"avg_arrival_day_text": "22m",
"avg_assignment_min": 4,
"avg_assignment_text": "4m",
"avg_arrival_min": 19,
"avg_arrival_text": "19m",
"avg_on_task_min": 41,
"avg_on_task_text": "41m",
"avg_km": 12.4
},
"devices": [
{
"device_id": "104820579301",
"device_name": "Truck A-101",
"driver_id": "104820561122",
"driver_name": "Carlos Martinez",
"active": true,
"worked_min": 480,
"worked_text": "8h",
"total_tasks": 12,
"tasks_finished": 10,
"tasks_in_progress": 1,
"tasks_cancelled": 1,
"tasks_rejected": 0,
"time_unassigned_min": 35,
"time_unassigned_text": "35m",
"compliance_pct": 83,
"avg_arrival_day_min": 20,
"avg_arrival_day_text": "20m",
"avg_assignment_min": 3,
"avg_assignment_text": "3m",
"avg_arrival_min": 17,
"avg_arrival_text": "17m",
"avg_on_task_min": 39,
"avg_on_task_text": "39m",
"last_signal_min": 2,
"last_signal_text": "2m",
"last_gps_min": 2,
"last_gps_text": "2m",
"total_km": 124.5,
"avg_km": 12.45,
"time_since_last_task_min": 0,
"time_since_last_task_text": "",
"avg_arrival_last_hour_min": 15,
"avg_arrival_last_hour_text": "15m"
}
]
},
{
"device_type": "Motos",
"device_type_id": "104820570002",
"summary": {
"device_type": "Motos",
"device_type_id": "104820570002",
"total_devices": 2,
"devices_free": 1,
"total_tasks": 9,
"tasks_finished": 7,
"tasks_pending": 1,
"tasks_pending_scheduled": 0,
"tasks_in_progress": 1,
"tasks_cancelled": 0,
"tasks_rejected": 0,
"max_time_unassigned_min": 40,
"max_time_unassigned_text": "40m",
"compliance_pct": 61,
"avg_arrival_last_hour_min": 11,
"avg_arrival_last_hour_text": "11m",
"avg_arrival_day_min": 13,
"avg_arrival_day_text": "13m",
"avg_assignment_min": 2,
"avg_assignment_text": "2m",
"avg_arrival_min": 12,
"avg_arrival_text": "12m",
"avg_on_task_min": 28,
"avg_on_task_text": "28m",
"avg_km": 6.2
},
"devices": []
}
],
"meta": {
"total": 2,
"limit": 25,
"offset": 0
}
}

Errores​

CódigoHTTPDescripción
VALIDATION_ERROR400Parámetros inválidos: falta execution_date, valores de enum inválidos.
UNAUTHORIZED401tenant / Authorization / X-API-Key faltante, inválido o expirado
FORBIDDEN403El usuario no tiene el permiso requerido.
RATE_LIMITED429Se superaron las 10 req/min.
INTERNAL_ERROR500Error inesperado del servidor.