Reporte de Resumen de Actividad
Calendario mensual de actividad por persona: una fila por persona, una celda por día, con estado de turno, descanso y ausencia.
GET
/apidev/v1/reports/cpm/activity-summaryPermisoAPICLI_RPTCPM_RESUMENACTIVIDAD
Límite de solicitudes10 req/min
Caché300s
Rango máximo1 mes
Resumen
Devuelve un resumen tipo calendario para el mes seleccionado. Cada persona aparece una vez, con una lista de entradas de actividad diaria que muestran el turno trabajado, los períodos de descanso, las horas trabajadas y descansadas, los kilómetros recorridos y el estado a nivel de día (trabajado, día de descanso o ausencia). Úsalo para revisar la asistencia y la carga de trabajo de todo un mes de un vistazo.
- Vista mensual — el período es un único mes calendario; se evalúan los días hasta la fecha actual de la compañía, y los días futuros quedan vacíos
- Estado del día — cada día lleva un estado para que puedas detectar ausencias, días de descanso e incumplimientos sin analizar marcas de tiempo en bruto
- Filtros de alcance — acotá los resultados por persona, dispositivo, tipo de dispositivo o categoría de turno
Solicitud
Encabezados de la solicitud
Every request to a protected endpoint requires these headers:
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token obtained from the Login endpoint. Format: Bearer <token> |
X-API-Key | Yes | Company integration key provided during onboarding. Format: gtk_xxx... |
tenant | Yes | Your assigned tenant domain (default: geotareas.com) — always send your assigned tenant |
Content-Type | Conditional | application/json — required for POST and PUT requests |
Parámetros de consulta
| Parámetro | Tipo | Requerido | Predeterminado | Descripción |
|---|---|---|---|---|
month | string | Sí | — | Mes objetivo en ISO 8601 (ej. 2026-03 o 2026-03-01). Cubre el mes calendario completo. |
drivers | string | No | Todos los visibles | IDs de persona separados por coma. Máximo 500. |
devices | string | No | Todos los visibles | IDs de dispositivo separados por coma. Máximo 500. |
device_types | string | No | — | IDs de tipo de dispositivo separados por coma. Máximo 100. |
shift_categories | string | No | — | IDs de categoría de turno separados por coma. Máximo 50. |
limit | integer | No | 25 | Cantidad de personas por página (1–100). |
offset | integer | No | 0 | Cantidad de personas a omitir para la paginación. |
Ejemplos de código
- cURL
- JavaScript
- Python
curl -s -H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
"https://$TENANT/apidev/v1/reports/cpm/activity-summary?month=2026-03&limit=25"
const res = await fetch(
`https://${TENANT}/apidev/v1/reports/cpm/activity-summary?month=2026-03&limit=25`,
{
headers: {
'Authorization': `Bearer ${token}`,
'X-API-Key': apiKey,
'tenant': TENANT,
},
}
);
const data = await res.json();
import requests
response = requests.get(
f"https://{TENANT}/apidev/v1/reports/cpm/activity-summary",
headers={"Authorization": f"Bearer {token}", "X-API-Key": api_key, "tenant": TENANT},
params={"month": "2026-03", "limit": 25},
)
data = response.json()
Respuesta
Campos de la respuesta
Cada elemento en data es una persona con un array activities de entradas diarias.
| Campo | Tipo | Descripción |
|---|---|---|
person_id | string | Identificador de la persona. |
person_name | string | Nombre de la persona. |
person_image | string | null | URL de la imagen de la persona. |
activities | array | Entradas de actividad diaria del mes (ver más abajo). |
Entrada de actividad (activities[])
| Campo | Tipo | Descripción |
|---|---|---|
day | number | Día del mes (1–31). |
date | string | null | Fecha de la entrada. |
shift_name | string | Nombre del turno/horario. |
device_name | string | Nombre del vehículo. |
shift_start | string | null | Marca de tiempo de inicio del turno. |
shift_end | string | null | Marca de tiempo de fin del turno. |
rest_start | string | null | Marca de tiempo de inicio del descanso. |
rest_end | string | null | Marca de tiempo de fin del descanso. |
worked_hours | number | Horas trabajadas. |
rested_hours | number | Horas descansadas. |
kms_shift | number | Kilómetros durante el turno. |
kms_rest | number | Kilómetros durante el descanso. |
status | string | Estado del día (ej. trabajado, día de descanso, ausencia). |
Ejemplo de respuesta
{
"success": true,
"data": [
{
"person_id": "982710394857201700",
"person_name": "Carlos Martinez",
"person_image": "https://cdn.example.com/people/982710394857201700.jpg",
"activities": [
{
"day": 5,
"date": "2026-03-05",
"shift_name": "Morning Shift",
"device_name": "Unit-105",
"shift_start": "2026-03-05T07:00:00",
"shift_end": "2026-03-05T15:00:00",
"rest_start": "2026-03-05T11:00:00",
"rest_end": "2026-03-05T11:30:00",
"worked_hours": 7.5,
"rested_hours": 0.5,
"kms_shift": 145.3,
"kms_rest": 2.1,
"status": "worked"
},
{
"day": 6,
"date": "2026-03-06",
"shift_name": "",
"device_name": "",
"shift_start": null,
"shift_end": null,
"rest_start": null,
"rest_end": null,
"worked_hours": 0,
"rested_hours": 0,
"kms_shift": 0,
"kms_rest": 0,
"status": "absence"
}
]
},
{
"person_id": "982710394857201701",
"person_name": "Laura Hernandez",
"person_image": null,
"activities": [
{
"day": 5,
"date": "2026-03-05",
"shift_name": "Night Shift",
"device_name": "Unit-203",
"shift_start": "2026-03-05T22:00:00",
"shift_end": "2026-03-06T06:00:00",
"rest_start": null,
"rest_end": null,
"worked_hours": 8,
"rested_hours": 0,
"kms_shift": 210.5,
"kms_rest": 0,
"status": "worked"
}
]
}
],
"meta": {
"total": 2,
"limit": 25,
"offset": 0
}
}
Errores
| Código | HTTP | Descripción |
|---|---|---|
VALIDATION_ERROR | 400 | Parámetros inválidos (ej. month mal formado). |
UNAUTHORIZED | 401 | tenant / Authorization / X-API-Key faltante, inválido o expirado |
FORBIDDEN | 403 | El usuario carece del permiso requerido. |
RATE_LIMITED | 429 | Se superaron las 10 req/min. |
INTERNAL_ERROR | 500 | Error inesperado del servidor. |