Activity Summary Report
Monthly per-person activity calendar: one row per person, one cell per day, with shift, rest, and absence status.
GET
/apidev/v1/reports/cpm/activity-summaryPermissionAPICLI_RPTCPM_RESUMENACTIVIDAD
Rate Limit10 req/min
Cache300s
Max Range1 month
Overview
Returns a calendar-style summary for the selected month. Each person appears once, with a list of daily activity entries that show the worked shift, rest periods, hours worked and rested, kilometers driven, and the day-level status (worked, rest day, or absence). Use it to review attendance and workload across an entire month at a glance.
- Month view — the period is a single calendar month; days up to the current company date are evaluated, future days are left empty
- Day status — each day carries a status so you can spot absences, rest days, and breaches without parsing raw timestamps
- Scope filters — narrow results by person, device, device type, or shift category
Request
Request Headers
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 |
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
month | string | Yes | — | Target month in ISO 8601 (e.g. 2026-03 or 2026-03-01). Covers the full calendar month. |
drivers | string | No | All visible | Comma-separated person IDs. Max 500. |
devices | string | No | All visible | Comma-separated device IDs. Max 500. |
device_types | string | No | — | Comma-separated device type IDs. Max 100. |
shift_categories | string | No | — | Comma-separated shift category IDs. Max 50. |
limit | integer | No | 25 | Number of people per page (1–100). |
offset | integer | No | 0 | Number of people to skip for pagination. |
Code Examples
- 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()
Response
Response Fields
Each item in data is a person with an activities array of daily entries.
| Field | Type | Description |
|---|---|---|
person_id | string | Person identifier. |
person_name | string | Person name. |
person_image | string | null | Person image URL. |
activities | array | Daily activity entries for the month (see below). |
Activity entry (activities[])
| Field | Type | Description |
|---|---|---|
day | number | Day of the month (1–31). |
date | string | null | Date of the entry. |
shift_name | string | Shift/schedule name. |
device_name | string | Vehicle name. |
shift_start | string | null | Shift start timestamp. |
shift_end | string | null | Shift end timestamp. |
rest_start | string | null | Rest start timestamp. |
rest_end | string | null | Rest end timestamp. |
worked_hours | number | Hours worked. |
rested_hours | number | Hours rested. |
kms_shift | number | Kilometers during shift. |
kms_rest | number | Kilometers during rest. |
status | string | Day status (e.g. worked, rest day, absence). |
Example Response
{
"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
}
}
Errors
| Code | HTTP | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Invalid parameters (e.g. malformed month). |
UNAUTHORIZED | 401 | Missing, invalid, or expired tenant / Authorization / X-API-Key |
FORBIDDEN | 403 | User lacks required permission. |
RATE_LIMITED | 429 | Exceeded 10 req/min. |
INTERNAL_ERROR | 500 | Unexpected server error. |