Reporting

Aggregates and exports — read-only views over the same rows the operational screens read.

17 endpoints

GET /v3/app/history/access-logs #
bearer driver_app beneficiary_app device credential

Query parameters

NameTypeConstraints
fromstringrequired
tostringrequired
zone_idstring | nulloptional
resultstring | nulloptionalallowed denied
cursorstring | nulloptionalmax length 200
per_pageinteger | nulloptionalmin 1 · max 500

Response

Returns { "data": [AccessLog] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
directionanyrequired
methodanyrequired
resultanyrequired
reasonstring | nullrequired
occurred_atstring (date-time)required
zoneobjectrequired
zone.idstring (uuid)required
zone.namestringrequired
zone.kindstring | nullrequired
studentanyrequired
guardiananyrequired
verified_byanyrequired
band_serialstring | nullrequired
trip_idstring | nullrequired
GET /v3/portal/access-log #
bearer admin_web device credential

Query parameters

NameTypeConstraints
fromstringrequired
tostringrequired
zone_idstring | nulloptional
student_idstring | nulloptional
resultstring | nulloptionalallowed denied
authorized_onlyboolean | nulloptional
cursorstring | nulloptionalmax length 200
per_pageinteger | nulloptionalmin 1 · max 500

Response

Returns { "data": [AccessLog] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
directionanyrequired
methodanyrequired
resultanyrequired
reasonstring | nullrequired
occurred_atstring (date-time)required
zoneobjectrequired
zone.idstring (uuid)required
zone.namestringrequired
zone.kindstring | nullrequired
studentanyrequired
guardiananyrequired
verified_byanyrequired
band_serialstring | nullrequired
trip_idstring | nullrequired
POST /v3/portal/export #
bearer admin_web reporting.export device credential

Request body

FieldTypeConstraints
kindstringrequiredaccess_log absentees late guardians statement fleet
filtersarray | nulloptionalmax items 10
filters.fromstring | nulloptional
filters.tostring | nulloptional
filters.wallet_idstring | nulloptional

Response

Returns { "data": Export }.

FieldTypeConstraints
idstring (uuid)required
kindstringrequired
statusstringrequired
errorstring | nullrequired
created_atstring (date-time)required
file_urlstring | nullrequired
GET /v3/portal/export/{id} #
bearer admin_web device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": Export }.

FieldTypeConstraints
idstring (uuid)required
kindstringrequired
statusstringrequired
errorstring | nullrequired
created_atstring (date-time)required
file_urlstring | nullrequired
GET /v3/portal/export/{id}/download #
bearer admin_web device credential

The authed download — works on the local demo disk and Spaces alike.

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/report-digest #
bearer admin_web device credential

unpaged; a school has a handful.

Response

Returns { "data": [WebReportDigest] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
export_kindstringrequired
frequencystringrequired
day_of_weekinteger | nullrequired
day_of_monthinteger | nullrequired
send_atstringrequired
enabledbooleanrequired
role_idsstring (uuid)[]required
user_idsstring (uuid)[]required
row_versionintegerrequired
POST /v3/portal/report-digest #
bearer admin_web reporting.subscribe device credential

Request body

FieldTypeConstraints
namestringrequiredmax length 80
export_kindstringrequiredaccess_log absentees late guardians statement fleet
frequencystringrequireddaily weekly monthly
day_of_weekinteger | nulloptionalmin 0 · max 6
day_of_monthinteger | nulloptionalmin 1 · max 28
send_atstringrequired
enabledbooleanoptional
role_idsstring (uuid)[]optionalmax items 20
user_idsstring (uuid)[]optionalmax items 100

Response

Returns { "data": WebReportDigest }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
export_kindstringrequired
frequencystringrequired
day_of_weekinteger | nullrequired
day_of_monthinteger | nullrequired
send_atstringrequired
enabledbooleanrequired
role_idsstring (uuid)[]required
user_idsstring (uuid)[]required
row_versionintegerrequired
DELETE /v3/portal/report-digest/{id} #
bearer admin_web reporting.subscribe device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": Deleted }.

FieldTypeConstraints
deletedbooleanrequired
PATCH /v3/portal/report-digest/{id} #
bearer admin_web reporting.subscribe device credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
update_maskstring[]requiredmin items 1 · max items 9
expected_row_versionintegerrequiredmin 1
namestringoptionalmax length 80
export_kindstringoptionalaccess_log absentees late guardians statement fleet
frequencystringoptionaldaily weekly monthly
day_of_weekinteger | nulloptionalmin 0 · max 6
day_of_monthinteger | nulloptionalmin 1 · max 28
send_atstringoptional
enabledbooleanoptional
role_idsstring (uuid)[]optionalmax items 20
user_idsstring (uuid)[]optionalmax items 100

Response

Returns { "data": WebReportDigest }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
export_kindstringrequired
frequencystringrequired
day_of_weekinteger | nullrequired
day_of_monthinteger | nullrequired
send_atstringrequired
enabledbooleanrequired
role_idsstring (uuid)[]required
user_idsstring (uuid)[]required
row_versionintegerrequired
GET /v3/portal/report/attendance #
bearer admin_web device credential

GET /v3/portal/report/attendance?view=&period…&filters… (§11.9).

Query parameters

NameTypeConstraints
viewstringrequiredsummary average trends absentees late zone_on_time class_summary denials
fromstring | nulloptional
tostring | nulloptional
zone_idstring | nulloptional
route_idstring | nulloptional
gradestring | nulloptionalmax length 32

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/report/device-usage #
bearer admin_web device credential

GET /v3/portal/report/device-usage?from=&to= (§11.9b).

Query parameters

NameTypeConstraints
fromstring | nulloptional
tostring | nulloptional

Response

Returns { "data": [DeviceUsageRow] } with meta.next_cursor for the next page.

FieldTypeConstraints
deviceobjectrequired
device.idstring (uuid)required
device.namestring | nullrequired
tapsintegerrequired
last_seen_atstring | nullrequired
battery_pctinteger | nullrequired
statusstringrequired
GET /v3/portal/report/growth #
bearer admin_web device credential

the monthly trajectory.

Query parameters

NameTypeConstraints
monthsinteger | nulloptionalmin 1 · max 24

Response

Returns { "data": [GrowthMonth] } with meta.next_cursor for the next page.

FieldTypeConstraints
monthstringrequired
studentsintegerrequired
ridersintegerrequired
messagesintegerrequired
GET /v3/portal/report/impact #
bearer admin_web device credential

uniform metric rows.

Query parameters

NameTypeConstraints
viewstringrequiredoverview transport meals activities safety
fromstring | nulloptional
tostring | nulloptional

Response

Returns { "data": [ImpactMetric] } with meta.next_cursor for the next page.

FieldTypeConstraints
keystringrequired
unitstringrequired
currentnumber | nullrequired
baselinenumber | nullrequired
currencystring | nullrequired
GET /v3/portal/report/messaging #
bearer admin_web device credential

GET /v3/portal/report/messaging?from=&to= (§11.9).

Query parameters

NameTypeConstraints
fromstring | nulloptional
tostring | nulloptional

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/report/overview #
bearer admin_web device credential

the landing screen in one call.

Query parameters

NameTypeConstraints
datestring | nulloptional

Response

Returns { "data": Overview }.

FieldTypeConstraints
datestringrequired
scopestringrequiredplatform tenant
parentsobjectrequired
parents.totalintegerrequired
parents.this_weekintegerrequired
parents.last_weekintegerrequired
parents.delta_pctnumber | nullrequired
parents.mappedintegerrequired
parents.unmappedintegerrequired
schoolsobjectrequired
schools.totalintegerrequired
schools.this_weekintegerrequired
schools.last_weekintegerrequired
schools.delta_pctnumber | nullrequired
kidsobjectrequired
kids.totalintegerrequired
kids.this_weekintegerrequired
kids.last_weekintegerrequired
kids.delta_pctnumber | nullrequired
busesobjectrequired
buses.totalintegerrequired
buses.this_weekintegerrequired
buses.last_weekintegerrequired
buses.delta_pctnumber | nullrequired
bandsobjectrequired
bands.totalintegerrequired
devicesobjectrequired
devices.totalintegerrequired
devices.onlineintegerrequired
devices.offlineintegerrequired
daily_tapsobjectrequired
daily_taps.unique_studentsintegerrequired
daily_taps.total_studentsintegerrequired
daily_taps.percentagenumberrequired
daily_taps.period_startstringrequired
daily_taps.period_endstringrequired
GET /v3/portal/report/transport #
bearer admin_web device credential

GET /v3/portal/report/transport?view=&period…&route_id= (§11.9).

Query parameters

NameTypeConstraints
viewstringrequiredroute-analysis route-ranking fleet-stats cost-audit revenue
fromstring | nulloptional
tostring | nulloptional
route_idstring | nulloptional

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/rollcall #
bearer admin_web device credential

The LIVE rollcall: today's roster vs open presence. History = the report views.

Query parameters

NameTypeConstraints
datestring | nulloptional
route_idstring | nulloptional

Response

Returns { "data": [RollcallRow] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
gradestring | nullrequired
presentbooleanrequired
checked_in_atstring | nullrequired
zonestring | nullrequired
zone_kindstring | nullrequired