Work Summary Report
Worked-day summary grouped by driver/vehicle or by provider, with opening/closing tasks, rest windows, and geodesic deviation alerts.
/apidev/v1/reports/cpm/work-summaryOverview
Returns one summary row per worked day over the selected period. In mobile mode each row is anchored to a driver work shift (driver + vehicle), and in provider mode each row is anchored to a provider + day. Every row exposes the task that opened the day and the task that closed it, the rest window, and the geodesic deviation between the task address and the where the field event was actually registered.
- Grouping —
group_by=movilanchors rows to driver shifts;group_by=prestadoranchors them to provider + day - Date mode —
date_modecontrols which task date the period is applied to (finalized, ingress, or full process) - Deviation alerts —
deviation_thresholdsets the alert distance (meters);deviation_only=truereturns only rows that breached it - Scope filters — narrow results by vehicle, driver, provider, or service-finalization code
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 |
|---|---|---|---|---|
startdate | string | Yes | — | ISO 8601 start date-time (e.g. 2026-03-01T00:00:00). |
enddate | string | Yes | — | ISO 8601 end date-time. Max range 31 days from startdate. |
group_by | string | No | movil | Grouping mode: movil (driver/vehicle shift) or prestador (provider + day). |
date_mode | string | No | finalizacion | Which task date the period applies to: finalizacion (task end), ingreso (task call/ingress), or todo (full process overlap). |
vehicles | string | No | All visible | Comma-separated vehicle IDs. Applies to group_by=movil. Max 500. |
drivers | string | No | All visible | Comma-separated driver IDs. Applies to group_by=movil. Max 500. |
providers | string | No | All visible | Comma-separated provider IDs. Applies to group_by=prestador. Max 500. |
finalization_codes | string | No | — | Comma-separated service-finalization IDs. Max 100. |
deviation_threshold | integer | No | 200 | Alert distance in meters. A row is flagged when an event is registered farther than this from the task address. |
deviation_only | boolean | No | false | Return only rows with at least one deviation alert. |
limit | integer | No | 25 | Number of records per page (1–100). |
offset | integer | No | 0 | Number of records 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/work-summary?startdate=2026-03-01T00:00:00&enddate=2026-03-15T23:59:59&group_by=movil&date_mode=finalizacion&limit=25"
const res = await fetch(
`https://${TENANT}/apidev/v1/reports/cpm/work-summary?startdate=2026-03-01T00:00:00&enddate=2026-03-15T23:59:59&group_by=movil&date_mode=finalizacion&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/work-summary",
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",
"group_by": "movil",
"date_mode": "finalizacion",
"limit": 25,
},
)
data = response.json()
Response
Response Fields
Each row represents one worked day. The opening and closing blocks describe the task that opened and closed the day; both share the same task-extreme shape.
| Field | Type | Description |
|---|---|---|
shift_id | string | null | Driver work-shift identifier. null in prestador mode. |
driver_id | string | Driver identifier. |
driver_name | string | Driver name. |
driver_image_url | string | Driver photo URL. |
vehicle_id | string | null | Vehicle identifier. |
vehicle_name | string | null | Vehicle name. |
provider_id | string | null | Provider identifier (prestador mode). |
provider_name | string | null | Provider name (prestador mode). |
shift_start | string | null | Shift start timestamp (QRA). |
shift_end | string | null | Shift end timestamp (QTP). |
rest_start | string | null | Rest window start. |
rest_end | string | null | Rest window end. |
opening | object | The task that opened the day (see Task Extreme fields). |
closing | object | The task that closed the day (see Task Extreme fields). |
tasks | array | All tasks of the day, each as a Task Extreme object. |
Task Extreme fields
| Field | Type | Description |
|---|---|---|
task_id | string | Task identifier. |
task_number | string | Service/task number. |
status_name | string | Event status name. |
finalization_code_id | string | null | Service-finalization code identifier. |
finalization_code_name | string | null | Service-finalization code name. |
account_external_code | string | null | Account external code. |
account_name | string | null | Account name. |
task_address | string | Task address (street/number/apartment/corner). |
event_time | string | null | Timestamp of the event (start or end). |
event_address | string | null | Address where the event was registered. |
deviation_distance | number | null | Geodesic distance (meters) between task address and event location. |
deviation_alert | boolean | Whether deviation_distance exceeded the threshold. |
parameters | string | Human-readable summary of the event (finalization code, parameters, notes). |
Example Response
{
"success": true,
"data": [
{
"shift_id": "982710394857201664",
"driver_id": "982710394857201700",
"driver_name": "Carlos Martinez",
"driver_image_url": "",
"vehicle_id": "982710394857201800",
"vehicle_name": "Unit-105",
"provider_id": null,
"provider_name": null,
"shift_start": "2026-03-05T07:00:00",
"shift_end": "2026-03-05T15:00:00",
"rest_start": "2026-03-05T11:30:00",
"rest_end": "2026-03-05T12:00:00",
"opening": {
"task_id": "982710394857202001",
"task_number": "100245",
"status_name": "Started",
"finalization_code_id": null,
"finalization_code_name": null,
"account_external_code": "CLI-0098",
"account_name": "Acme Logistics",
"task_address": "Av. Reforma 1234, Esq. Juarez",
"event_time": "2026-03-05T07:42:00",
"event_address": "Av. Reforma 1234, Col. Centro",
"deviation_distance": 35,
"deviation_alert": false,
"parameters": "Finalization Code: Completed | Notes: Delivered on time"
},
"closing": {
"task_id": "982710394857202055",
"task_number": "100312",
"status_name": "Finished",
"finalization_code_id": "982710394857203001",
"finalization_code_name": "Completed",
"account_external_code": "CLI-0142",
"account_name": "Globex Retail",
"task_address": "Calle Madero 456, Col. Centro",
"event_time": "2026-03-05T14:48:00",
"event_address": "Calle Madero 460, Col. Centro",
"deviation_distance": 320,
"deviation_alert": true,
"parameters": "Finalization Code: Completed | Signature: Yes"
},
"tasks": []
}
],
"meta": {
"total": 1,
"limit": 25,
"offset": 0
}
}
Errors
| Code | HTTP | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Invalid parameters (e.g. date range exceeds 31 days, or an unknown group_by / date_mode value). |
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. |