GET
/v3/portal/children/bulk-upload/options
#
bearer admin_web device credential
Query parameters
| Name | Type | | Constraints |
|---|
school_id | string | null | optional | — |
Response
Returns { "data": WebChildBulkUploadOptions }.
| Field | Type | | Constraints |
|---|
schools | object[] | required | — |
bearer admin_web device credential
Query parameters
| Name | Type | | Constraints |
|---|
q | string | null | optional | max length 100 |
status | string | null | optional | active suspended archived |
stage | string | null | optional | prospect signed provisioning live |
region | string | null | optional | max length 80 |
cursor | string | null | optional | max length 200 |
per_page | integer | null | optional | min 1 · max 500 |
Response
Returns { "data": [WebSchool] } with meta.next_cursor for the next page.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
code | string | required | — |
status | string | required | — |
is_active | boolean | required | — |
onboarding_stage | string | required | — |
city | string | null | required | — |
region | string | null | required | — |
contact_name | string | null | required | — |
contact_phone | string | null | required | — |
contact_email | string | null | required | — |
student_count | integer | required | — |
parent_count | integer | required | — |
band_count | integer | required | — |
device_count | integer | required | — |
group_id | string | null | required | — |
group_name | string | null | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
bearer admin_web device credential
onboard a school. Platform operators only (route group).
Request body
| Field | Type | | Constraints |
|---|
name | string | required | min length 2 · max length 160 |
code | string | null | optional | min length 2 · max length 40 |
country_code | string | null | optional | min length 2 · max length 2 |
default_currency | string | null | optional | min length 3 · max length 3 |
onboarding_stage | string | null | optional | prospect signed provisioning live |
city | string | null | optional | max length 80 |
region | string | null | optional | max length 80 |
contact_name | string | null | optional | max length 120 |
contact_phone | string | null | optional | max length 20 |
contact_email | string | null | optional | max length 160 |
admin_password | string | null | optional | min length 10 · max length 255 |
notes | string | null | optional | max length 2000 |
student_cap | integer | null | optional | min 1 · max 100000 |
Response
Returns { "data": WebSchoolDetail }.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
code | string | required | — |
status | string | required | — |
is_active | boolean | required | — |
onboarding_stage | string | required | — |
country_code | string | required | — |
default_currency | string | required | — |
student_cap | integer | null | required | — |
city | string | null | required | — |
region | string | null | required | — |
contact_name | string | null | required | — |
contact_phone | string | null | required | — |
contact_email | string | null | required | — |
notes | string | null | required | — |
student_count | integer | required | — |
parent_count | integer | required | — |
band_count | integer | required | — |
device_count | integer | required | — |
group_id | string | null | required | — |
group_name | string | null | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
GET
/v3/portal/school-group
#
bearer admin_web device credential
Response
Returns { "data": [WebSchoolGroup] } with meta.next_cursor for the next page.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
notes | string | null | required | — |
campus_count | integer | required | — |
campuses | object[] | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
POST
/v3/portal/school-group
#
bearer admin_web device credential
Request body
| Field | Type | | Constraints |
|---|
name | string | required | min length 2 · max length 160 |
notes | string | null | optional | max length 2000 |
school_ids | string (uuid)[] | optional | max items 100 |
Response
Returns { "data": WebSchoolGroup }.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
notes | string | null | required | — |
campus_count | integer | required | — |
campuses | object[] | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
DELETE
/v3/portal/school-group/{group}
#
bearer admin_web device credential
DELETE — the group goes, its campuses are ungrouped and otherwise untouched.
Path parameters
Response
Returns { "data": Ack }.
| Field | Type | | Constraints |
|---|
ok | boolean | required | — |
GET
/v3/portal/school-group/{group}
#
bearer admin_web device credential
Path parameters
Response
Returns { "data": WebSchoolGroup }.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
notes | string | null | required | — |
campus_count | integer | required | — |
campuses | object[] | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
PATCH
/v3/portal/school-group/{group}
#
bearer admin_web device credential
Path parameters
Request body
| Field | Type | | Constraints |
|---|
update_mask | string[] | required | min items 1 |
expected_row_version | integer | required | min 1 |
name | string | optional | min length 2 · max length 160 |
notes | string | null | optional | max length 2000 |
Response
Returns { "data": WebSchoolGroup }.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
notes | string | null | required | — |
campus_count | integer | required | — |
campuses | object[] | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
POST
/v3/portal/school-group/{group}/member
#
bearer admin_web device credential
POST .../member — merge campuses in. A school in another group moves.
Path parameters
Request body
| Field | Type | | Constraints |
|---|
school_ids | string (uuid)[] | required | min items 1 · max items 100 |
Response
Returns { "data": WebSchoolGroup }.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
notes | string | null | required | — |
campus_count | integer | required | — |
campuses | object[] | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
DELETE
/v3/portal/school-group/{group}/member/{school}
#
bearer admin_web device credential
Path parameters
| Name | Type | Notes |
|---|
group | string | |
school | string | |
Response
Returns { "data": WebSchoolGroup }.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
notes | string | null | required | — |
campus_count | integer | required | — |
campuses | object[] | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
DELETE
/v3/portal/school/{school}
#
bearer admin_web device credential
ARCHIVE. A school's taps and money are history, so the row is never erased; it stops being active (§11.18).
Path parameters
| Name | Type | Notes |
|---|
school | string | |
Response
Returns { "data": WebSchoolDetail }.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
code | string | required | — |
status | string | required | — |
is_active | boolean | required | — |
onboarding_stage | string | required | — |
country_code | string | required | — |
default_currency | string | required | — |
student_cap | integer | null | required | — |
city | string | null | required | — |
region | string | null | required | — |
contact_name | string | null | required | — |
contact_phone | string | null | required | — |
contact_email | string | null | required | — |
notes | string | null | required | — |
student_count | integer | required | — |
parent_count | integer | required | — |
band_count | integer | required | — |
device_count | integer | required | — |
group_id | string | null | required | — |
group_name | string | null | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
GET
/v3/portal/school/{school}
#
bearer admin_web device credential
the operator's account view (§11.18).
Path parameters
| Name | Type | Notes |
|---|
school | string | |
Response
Returns { "data": WebSchoolDetail }.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
code | string | required | — |
status | string | required | — |
is_active | boolean | required | — |
onboarding_stage | string | required | — |
country_code | string | required | — |
default_currency | string | required | — |
student_cap | integer | null | required | — |
city | string | null | required | — |
region | string | null | required | — |
contact_name | string | null | required | — |
contact_phone | string | null | required | — |
contact_email | string | null | required | — |
notes | string | null | required | — |
student_count | integer | required | — |
parent_count | integer | required | — |
band_count | integer | required | — |
device_count | integer | required | — |
group_id | string | null | required | — |
group_name | string | null | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
PATCH
/v3/portal/school/{school}
#
bearer admin_web device credential
the §1 mask + row-version grammar.
Path parameters
| Name | Type | Notes |
|---|
school | string | |
Request body
| Field | Type | | Constraints |
|---|
update_mask | string[] | required | min items 1 |
expected_row_version | integer | required | min 1 |
name | string | optional | min length 2 · max length 160 |
status | string | optional | active suspended archived |
onboarding_stage | string | optional | prospect signed provisioning live |
city | string | null | optional | max length 80 |
region | string | null | optional | max length 80 |
contact_name | string | null | optional | max length 120 |
contact_phone | string | null | optional | max length 20 |
contact_email | string | null | optional | max length 160 |
notes | string | null | optional | max length 2000 |
student_cap | integer | null | optional | min 1 · max 100000 |
default_currency | string | optional | min length 3 · max length 3 |
Response
Returns { "data": WebSchoolDetail }.
| Field | Type | | Constraints |
|---|
id | string (uuid) | required | — |
name | string | required | — |
code | string | required | — |
status | string | required | — |
is_active | boolean | required | — |
onboarding_stage | string | required | — |
country_code | string | required | — |
default_currency | string | required | — |
student_cap | integer | null | required | — |
city | string | null | required | — |
region | string | null | required | — |
contact_name | string | null | required | — |
contact_phone | string | null | required | — |
contact_email | string | null | required | — |
notes | string | null | required | — |
student_count | integer | required | — |
parent_count | integer | required | — |
band_count | integer | required | — |
device_count | integer | required | — |
group_id | string | null | required | — |
group_name | string | null | required | — |
row_version | integer | required | — |
created_at | string (date-time) | required | — |
GET
/v3/portal/setup-progress
#
bearer admin_web device credential
Response
Returns { "data": SetupProgress }.
| Field | Type | | Constraints |
|---|
school_location | boolean | required | — |
create_locations | boolean | required | — |
add_fleet | boolean | required | — |
plan_routes | boolean | required | — |
trip_plan | boolean | required | — |
invite_staff | boolean | required | — |
register_people | boolean | required | — |
required_complete | boolean | required | — |
complete | boolean | required | — |
trips_blocked | boolean | required | — |