Saltar al contenido principal

Reporte de Proactividad por Tarea

Detalle de cumplimiento a nivel de tarea para una fecha de ejecución específica — resumen + registros individuales de tareas.

GET/apidev/v1/reports/gt/proactivity-task
PermisoAPICLI_RPTGT_PROACTIVIDAD_TAREA
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 y detallado tarea por tarea — lo mismo que muestra la pantalla de Proactividad por Tarea. Cada grupo trae su fila de subtotales (summary) y sus filas de tareas (tasks) con las marcas de llamada / asignación / aceptación / finalización y los tiempos transcurridos entre ellas. La fila de Totales del pie de la pantalla viaja en meta.totals. 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, tasks } armado con el primer grupo solamente, que descartaba en silencio todos los demás tipos de móvil. También se quitaron ocho campos de tarea que el motor del reporte nunca completaba — 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 las tareas

limit / offset paginan los grupos de tipo de móvil, y meta.total es la cantidad total de grupos (la fila de Totales no se cuenta). Cada grupo viaja siempre con todas sus tareas.


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-task?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 de tareas.

Todas las duraciones vienen en minutos (*_min); los subtotales del grupo además traen el texto ya formateado (*_text, por ejemplo "1h 35m"). Las marcas de tiempo usan YYYY-MM-DDTHH:mm:ss sin zona horaria; una etapa que la tarea nunca alcanzó vuelve como null.

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.
tasksarrayUna fila por tarea 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.
tasks_pendingnumberTareas sin asignar.
tasks_pending_schedulednumberTareas sin asignar programadas a futuro.
tasks_in_progressnumberTareas en progreso.
tasks_finishednumberTareas finalizadas.
tasks_cancellednumberTareas canceladas.
max_time_unassigned_min / _textnumber / stringMayor tiempo que una tarea estuvo sin vehículo.
avg_arrival_day_min / _textnumber / stringPromedio de llegada del día.
avg_on_task_min / _textnumber / stringPromedio de tiempo en tarea.
longest_wait_min / _textnumber / stringMayor espera de una tarea (ingreso hasta aceptación).
avg_kmnumberPromedio de kilómetros por tarea.

Campos del arreglo Tasks​

CampoTipoDescripción
task_idstring | nullIdentificador de la tarea.
task_numberstring | nullNúmero de tarea.
called_atstring | nullMarca de tiempo del ingreso / llamada.
assigned_atstring | nullMarca de tiempo de asignación.
accepted_atstring | nullMarca de tiempo de aceptación.
finished_atstring | nullMarca de tiempo de finalización.
scheduled_atstring | nullMarca de tiempo programada (null si no está programada).
wait_minnumberIngreso → aceptación.
call_to_start_minnumberIngreso → inicio de la tarea.
accept_to_start_minnumberAceptación → inicio de la tarea.
on_task_minnumberAceptación → finalización.
time_unassigned_minnumberTiempo que la tarea estuvo sin vehículo.

Fila de Totales​

meta.totals refleja la fila de Totales del pie del reporte web. Usa los mismos campos que summary, con device_type: "Totales", y solo los contadores más avg_arrival_day_* / avg_on_task_* tienen significado. Es null cuando el reporte no produjo filas.

Campos eliminados el 2026-08-17

Se quitaron device_name, driver_name, service_type, cause, status, started_at, client_name y account_name. El motor del reporte arma el detalle de tareas solo con identificadores, marcas de tiempo y tiempos transcurridos, así que esos ocho campos llegaban siempre vacíos. Para los atributos descriptivos de una tarea, usá Tareas General cruzando por task_id.

Ejemplo de respuesta​

{
"success": true,
"data": [
{
"device_type": "Autos",
"device_type_id": "104820570001",
"summary": {
"device_type": "Autos",
"device_type_id": "104820570001",
"tasks_pending": 8,
"tasks_pending_scheduled": 2,
"tasks_in_progress": 3,
"tasks_finished": 35,
"tasks_cancelled": 1,
"max_time_unassigned_min": 95,
"max_time_unassigned_text": "1h 35m",
"avg_arrival_day_min": 22,
"avg_arrival_day_text": "22m",
"avg_on_task_min": 41,
"avg_on_task_text": "41m",
"longest_wait_min": 64,
"longest_wait_text": "1h 4m",
"avg_km": 12.4
},
"tasks": [
{
"task_id": "104820580001",
"task_number": "58231",
"called_at": "2026-03-05T08:52:00",
"assigned_at": "2026-03-05T08:56:00",
"accepted_at": "2026-03-05T09:00:00",
"finished_at": "2026-03-05T10:30:00",
"scheduled_at": null,
"wait_min": 8,
"call_to_start_min": 23,
"accept_to_start_min": 15,
"on_task_min": 90,
"time_unassigned_min": 4
}
]
},
{
"device_type": "Motos",
"device_type_id": "104820570002",
"summary": {
"device_type": "Motos",
"device_type_id": "104820570002",
"tasks_pending": 1,
"tasks_pending_scheduled": 0,
"tasks_in_progress": 1,
"tasks_finished": 7,
"tasks_cancelled": 0,
"max_time_unassigned_min": 40,
"max_time_unassigned_text": "40m",
"avg_arrival_day_min": 13,
"avg_arrival_day_text": "13m",
"avg_on_task_min": 28,
"avg_on_task_text": "28m",
"longest_wait_min": 25,
"longest_wait_text": "25m",
"avg_km": 6.2
},
"tasks": []
}
],
"meta": {
"total": 2,
"limit": 25,
"offset": 0,
"totals": {
"device_type": "Totales",
"device_type_id": null,
"tasks_pending": 9,
"tasks_pending_scheduled": 2,
"tasks_in_progress": 4,
"tasks_finished": 42,
"tasks_cancelled": 1,
"max_time_unassigned_min": 0,
"max_time_unassigned_text": "",
"avg_arrival_day_min": 17.5,
"avg_arrival_day_text": "17m 30s",
"avg_on_task_min": 34.5,
"avg_on_task_text": "34m 30s",
"longest_wait_min": 0,
"longest_wait_text": "",
"avg_km": 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.