Reporte de Detalle de Actividad
Actividad de turnos del personal con seguimiento de cumplimiento, contexto de geocerca y desgloses de sub-turnos.
GET
/apidev/v1/reports/cpm/activity-detailPermisoAPICLI_RPTCPM_DETALLE
Límite de solicitudes10 req/min
Caché300s
Rango máximo31 días
Resumen
Devuelve los registros de turnos del personal durante el período seleccionado, cada uno enriquecido con el estado de cumplimiento, las direcciones de inicio/fin y la geocerca donde el turno comenzó y terminó. Úsalo para auditar las horas trabajadas y de descanso, los kilómetros recorridos y los registros QRA/QRX/QRV/QTP.
- Solo cumplimiento —
compliance_only=truedevuelve únicamente los registros que incumplieron una regla - Vista detallada —
detailed=trueagrega el desglose de sub-turnos de cada turno - Filtros de alcance — acotá los resultados por conductor, dispositivo, grupo de dispositivos, categoría de turno o un turno específico
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 |
|---|---|---|---|---|
startdate | string | Sí | — | Fecha-hora de inicio en ISO 8601 (ej. 2026-03-01T00:00:00). |
enddate | string | Sí | — | Fecha-hora de fin en ISO 8601. Rango máximo 31 días desde startdate. |
drivers | string | No | Todos los visibles | IDs de conductor separados por coma. Máximo 500. |
devices | string | No | Todos los visibles | IDs de dispositivo separados por coma. Máximo 500. |
device_groups | string | No | — | IDs de grupo de dispositivos separados por coma. Máximo 100. |
shift_categories | string | No | — | IDs de categoría de turno separados por coma. Máximo 50. |
shift_id | string | No | — | Identificador específico del turno. |
compliance_only | boolean | No | false | Devuelve solo los registros no conformes. |
detailed | boolean | No | false | Incluye el desglose de sub-turnos en la respuesta. |
limit | integer | No | 25 | Cantidad de registros por página (1–100). |
offset | integer | No | 0 | Cantidad de registros 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-detail?startdate=2026-03-01T00:00:00&enddate=2026-03-15T23:59:59&detailed=true&limit=25"
const res = await fetch(
`https://${TENANT}/apidev/v1/reports/cpm/activity-detail?startdate=2026-03-01T00:00:00&enddate=2026-03-15T23:59:59&detailed=true&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-detail",
headers={"Authorization": f"Bearer {token}", "X-API-Key": api_key, "tenant": TENANT},
params={"startdate": "2026-03-01T00:00:00", "enddate": "2026-03-15T23:59:59", "detailed": True, "limit": 25},
)
data = response.json()
Respuesta
Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
shift_id | string | null | Identificador del turno. |
shift_line | number | Número de línea del turno. |
driver_id | string | null | Identificador del conductor. |
driver_name | string | Nombre del conductor. |
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. |
shift_name | string | Nombre del turno/horario. |
shift_hours | number | Horas de turno configuradas. |
start_address | string | Dirección al inicio del turno. |
end_address | string | Dirección al fin del turno. |
start_geofence | string | Geocerca al inicio del turno. |
end_geofence | string | Geocerca al fin del turno. |
qra_time | string | null | Marca de tiempo de registro QRA. |
qrx_time | string | null | Marca de tiempo de registro QRX. |
qrv_time | string | null | Marca de tiempo de registro QRV. |
qtp_time | string | null | Marca de tiempo de registro QTP. |
worked_hours | number | Horas trabajadas. |
rested_hours | number | Horas de descanso. |
kms_shift | number | Kilómetros durante el turno. |
kms_rest | number | Kilómetros durante el descanso. |
compliance_breach | boolean | Si se detectó un incumplimiento de cumplimiento. |
sub_shifts | array | Desglose de sub-turnos (incluido cuando detailed=true). |
Ejemplo de respuesta
{
"success": true,
"data": [
{
"shift_id": "982710394857201664",
"shift_line": 1,
"driver_id": "982710394857201700",
"driver_name": "Carlos Martinez",
"device_name": "Unit-105",
"shift_start": "2026-03-05T07:00:00",
"shift_end": "2026-03-05T15:00:00",
"shift_name": "Morning Shift",
"shift_hours": 8,
"start_address": "Av. Reforma 1234, Col. Centro",
"end_address": "Av. Reforma 1234, Col. Centro",
"start_geofence": "Depot Central",
"end_geofence": "Depot Central",
"qra_time": "2026-03-05T06:55:00",
"qrx_time": "2026-03-05T15:05:00",
"qrv_time": "2026-03-05T07:02:00",
"qtp_time": null,
"worked_hours": 7.8,
"rested_hours": 0.2,
"kms_shift": 145.3,
"kms_rest": 2.1,
"compliance_breach": false,
"sub_shifts": []
},
{
"shift_id": "982710394857201665",
"shift_line": 2,
"driver_id": "982710394857201701",
"driver_name": "Laura Hernandez",
"device_name": "Unit-203",
"shift_start": "2026-03-05T22:00:00",
"shift_end": "2026-03-06T06:00:00",
"shift_name": "Night Shift",
"shift_hours": 8,
"start_address": "Blvd. Manuel Avila Camacho, Naucalpan",
"end_address": "Calle Madero 456, Col. Centro",
"start_geofence": "Zone North",
"end_geofence": "",
"qra_time": "2026-03-05T22:10:00",
"qrx_time": null,
"qrv_time": "2026-03-05T22:15:00",
"qtp_time": null,
"worked_hours": 9.2,
"rested_hours": 0,
"kms_shift": 210.5,
"kms_rest": 0,
"compliance_breach": true,
"sub_shifts": []
}
],
"meta": {
"total": 2,
"limit": 25,
"offset": 0
}
}
Errores
| Código | HTTP | Descripción |
|---|---|---|
VALIDATION_ERROR | 400 | Parámetros inválidos (ej. el rango de fechas supera los 31 días). |
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. |