Skip to main content

Control Total Time Report

Total service time distribution across time bands per grouping.

GET/apidev/v1/reports/gt/control-total-time
PermissionAPICLI_RPTGT_CTT
Rate Limit10 req/min (sliding window)
Cache300s (5 min)
Max Range31 days

Overview​

Returns how total service times spread across fixed time bands (0–30 min, 30–60 min, 1–2 h, 2–3 h, and 3+ h), with the task count in each band plus the average, aggregated by a chosen grouping dimension. Use it to understand the distribution of overall service duration, not just a single average.

  • Grouping — group_by picks the dimension each row represents (see the values below)
  • Date basis — the date range always filters on the task finished date (startdate/enddate)
  • Filtering — narrow results by devices, drivers, service types, providers, and other catalog filters
The bands differ from the "Total Time Control" screen

The web screen groups tasks by the full cycle time (from the call to the finish) into Fast 0–60 min, Normal 60–120, Extended 120–240, Long 240–480 and Very long 480+. This endpoint bands the working time instead, cut at 0–30 / 30–60 min and 1–2 / 2–3 / 3+ h, so only the 1–2 h band lines up. Its avg_time_sec is in seconds, while the screen shows minutes. Do not reconcile the two side by side. Aligning the bands with the screen is planned and will change the response fields.


Request​

Request Headers​

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

Query Parameters​

ParameterTypeRequiredDefaultDescription
startdatestringYes—ISO 8601 start date-time
enddatestringYes—ISO 8601 end date-time. Max range 31 days
devicesstringNoAll visibleComma-separated device IDs. Max 500
driversstringNoAllComma-separated driver IDs. Max 500
service_typesstringNoAllComma-separated service type IDs. Max 100
causesstringNoAllComma-separated cause IDs. Max 100
subcausesstringNoAllComma-separated subcause IDs. Max 100
device_groupsstringNoAllComma-separated device type IDs (the device_group catalog from Fleet / Devices). Filters tasks to devices of those types; combines with devices as an intersection. Max 100
originsstringNoAllComma-separated origin IDs. Max 100
providersstringNoAllComma-separated provider IDs. Max 100
route_idsstringNoAllComma-separated route IDs. Max 100
operatorsstringNoAllComma-separated operator IDs. Max 100
client_idstringNo—Filter by specific client
account_idstringNo—Filter by specific account
shift_idstringNo—Filter by specific shift
group_byenumNo—Grouping dimension (see below)
limitintegerNo25Records per page (1–100)
offsetintegerNo0Records to skip
How device_groups combines with devices

device_groups is expanded to every device of those types, and if you also send devices, only the devices present in both lists are kept. If that intersection is empty the report returns no rows.

group_by values​

date · month · hour · weekday · department · city · zone · provider · device · device_group · driver · shift · cause · subcause · end_code · origin · telephonist · operator


Code Examples​

curl -s -H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
"https://$TENANT/apidev/v1/reports/gt/control-total-time?startdate=2026-03-01T00:00:00&enddate=2026-03-31T23:59:59&group_by=device&limit=25"

Response Fields​

FieldTypeDescription
group_labelstringDisplay name of the group
group_idstring | nullIdentifier of the group element
total_tasksnumberTotal number of tasks
band_0_30numberTasks completed in 0–30 min
band_30_60numberTasks completed in 30–60 min
band_1_2hrsnumberTasks completed in 1–2 hours
band_2_3hrsnumberTasks completed in 2–3 hours
band_3_plusnumberTasks completed in > 3 hours
avg_time_secnumberAverage total time in seconds

Example Response​

{
"success": true,
"data": [
{
"group_label": "Truck A-101",
"group_id": "104820579301",
"total_tasks": 47,
"band_0_30": 5,
"band_30_60": 14,
"band_1_2hrs": 18,
"band_2_3hrs": 7,
"band_3_plus": 3,
"avg_time_sec": 4920
},
{
"group_label": "Truck B-205",
"group_id": "104820579402",
"total_tasks": 32,
"band_0_30": 3,
"band_30_60": 10,
"band_1_2hrs": 12,
"band_2_3hrs": 5,
"band_3_plus": 2,
"avg_time_sec": 5280
}
],
"meta": {
"total": 2,
"limit": 25,
"offset": 0
}
}

Errors​

CodeHTTPDescription
VALIDATION_ERROR400Invalid params: missing dates, range > 31 days, invalid group_by
UNAUTHORIZED401Missing, invalid, or expired tenant / Authorization / X-API-Key
FORBIDDEN403User lacks required permission
RATE_LIMITED429Exceeded 10 req/min
INTERNAL_ERROR500Unexpected server error