← EduMind

EduMind mobile API

EduMind is a school management system. A company owns its schools and runs on its own database, so two things decide what a call can see: who the token belongs to, and which company the call is aimed at.

Base URL: https://edumind.school. Everything below sits under /api/v1. Machine-readable spec: https://edumind.school/openapi.json.

Before you start

There is no self-registration and no password. Accounts are created by the school. If the email you hold was never provisioned, every sign-in call will refuse it, and that is the intended answer — do not retry it as if it were a transient failure.

Signing in

Every auth call carries a type of parent or teacher, because one email can hold both roles and they see different things.

Email code:

POST /api/v1/auth/email/request   {"email": "...", "type": "parent"}
POST /api/v1/auth/email/verify    {"email": "...", "code": "......", "type": "parent"}

Google or Apple, with a Firebase ID token the client already obtained:

POST /api/v1/auth/social          {"id_token": "...", "provider": "google|apple", "type": "parent"}

Either verify call returns a bearer token. It is opaque — not a JWT, so there is nothing to decode and no JWKS to fetch. Send it as Authorization: Bearer <token>.

Reaching one company

The token works across every company the person belongs to. Which one you are reading is a header:

X-Tenant: <company slug>

Without it, a tenant-scoped route does not resolve. With a slug the person has no membership in, it answers 404 rather than telling you the company exists.

/api/v1/auth/*, /api/v1/devices, and /api/v1/notifications* are central and need no tenant.

Other headers worth sending

What each role may read

Failure modes that mean something

Ending a session

POST   /api/v1/auth/logout      revokes the token and the device registration
DELETE /api/v1/auth/account     deletes the account and revokes everything

DELETE /api/v1/auth/account is not reversible. Never call it to clear a failed sign-in.

Every endpoint

Generated from the route table this application dispatches, so it cannot describe a route that is not there. Machine-readable: https://edumind.school/openapi.json.

Method Path Token Tenant
GET /api/v1/app/status no —
DELETE /api/v1/auth/account bearer —
POST /api/v1/auth/email/request no —
POST /api/v1/auth/email/verify no —
POST /api/v1/auth/logout bearer —
GET /api/v1/auth/me bearer —
POST /api/v1/auth/social no —
POST /api/v1/devices bearer —
DELETE /api/v1/devices bearer —
GET /api/v1/documents/{document} no —
GET /api/v1/homework-files/{attachment} no —
GET /api/v1/locales no —
GET /api/v1/locales/{code} no —
GET /api/v1/notifications bearer —
GET /api/v1/notifications/preferences bearer —
PUT /api/v1/notifications/preferences bearer —
POST /api/v1/notifications/read-all bearer —
GET /api/v1/notifications/unread-count bearer —
POST /api/v1/notifications/{id}/read bearer —
GET /api/v1/parent/announcements bearer X-Tenant
GET /api/v1/parent/announcements/{announcement} bearer X-Tenant
GET /api/v1/parent/children bearer X-Tenant
GET /api/v1/parent/children/{student}/activities bearer X-Tenant
GET /api/v1/parent/children/{student}/activities/catalog bearer X-Tenant
GET /api/v1/parent/children/{student}/activities/{activity} bearer X-Tenant
POST /api/v1/parent/children/{student}/activities/{activity}/consent bearer X-Tenant
POST /api/v1/parent/children/{student}/activities/{activity}/request bearer X-Tenant
DELETE /api/v1/parent/children/{student}/activities/{activity}/waitlist bearer X-Tenant
GET /api/v1/parent/children/{student}/attendance bearer X-Tenant
GET /api/v1/parent/children/{student}/attendance/summary bearer X-Tenant
GET /api/v1/parent/children/{student}/behavior bearer X-Tenant
POST /api/v1/parent/children/{student}/behavior/{note}/acknowledge bearer X-Tenant
GET /api/v1/parent/children/{student}/contacts bearer X-Tenant
GET /api/v1/parent/children/{student}/documents bearer X-Tenant
GET /api/v1/parent/children/{student}/grades bearer X-Tenant
GET /api/v1/parent/children/{student}/homework bearer X-Tenant
GET /api/v1/parent/children/{student}/homework/{homework} bearer X-Tenant
GET /api/v1/parent/children/{student}/invoices bearer X-Tenant
GET /api/v1/parent/children/{student}/invoices/{invoice} bearer X-Tenant
GET /api/v1/parent/children/{student}/justifications bearer X-Tenant
POST /api/v1/parent/children/{student}/justifications bearer X-Tenant
GET /api/v1/parent/children/{student}/library bearer X-Tenant
GET /api/v1/parent/children/{student}/messages bearer X-Tenant
POST /api/v1/parent/children/{student}/messages bearer X-Tenant
GET /api/v1/parent/children/{student}/overview bearer X-Tenant
GET /api/v1/parent/children/{student}/pickups bearer X-Tenant
GET /api/v1/parent/children/{student}/portfolio bearer X-Tenant
GET /api/v1/parent/children/{student}/portfolio/{item} bearer X-Tenant
GET /api/v1/parent/children/{student}/profile bearer X-Tenant
GET /api/v1/parent/children/{student}/quran bearer X-Tenant
GET /api/v1/parent/children/{student}/report bearer X-Tenant
GET /api/v1/parent/children/{student}/report/pdf-link bearer X-Tenant
GET /api/v1/parent/children/{student}/reviews bearer X-Tenant
GET /api/v1/parent/children/{student}/reviews/{review} bearer X-Tenant
POST /api/v1/parent/children/{student}/reviews/{review}/acknowledge bearer X-Tenant
GET /api/v1/parent/children/{student}/reviews/{review}/attachments/{attachment} bearer X-Tenant
GET /api/v1/parent/children/{student}/reviews/{review}/replies bearer X-Tenant
POST /api/v1/parent/children/{student}/reviews/{review}/replies bearer X-Tenant
GET /api/v1/parent/children/{student}/scholarships bearer X-Tenant
GET /api/v1/parent/children/{student}/timeline bearer X-Tenant
GET /api/v1/parent/children/{student}/timetable bearer X-Tenant
GET /api/v1/parent/forms bearer X-Tenant
GET /api/v1/parent/forms/{form} bearer X-Tenant
POST /api/v1/parent/forms/{form}/submissions bearer X-Tenant
GET /api/v1/parent/surveys bearer X-Tenant
GET /api/v1/parent/surveys/{survey} bearer X-Tenant
POST /api/v1/parent/surveys/{survey}/responses bearer X-Tenant
POST /api/v1/parent/sync bearer X-Tenant
GET /api/v1/ping no —
GET /api/v1/portfolio-files/{file} no —
GET /api/v1/report-card/{student} no —
GET /api/v1/teacher/activities bearer X-Tenant
POST /api/v1/teacher/activities/{activity}/requests/{enrollment}/decide bearer X-Tenant
GET /api/v1/teacher/activities/{activity}/roster bearer X-Tenant
GET /api/v1/teacher/activities/{activity}/sessions bearer X-Tenant
POST /api/v1/teacher/activities/{activity}/sessions bearer X-Tenant
PATCH /api/v1/teacher/activity-sessions/{session} bearer X-Tenant
PUT /api/v1/teacher/activity-sessions/{session}/attendance bearer X-Tenant
GET /api/v1/teacher/announcements bearer X-Tenant
POST /api/v1/teacher/announcements bearer X-Tenant
GET /api/v1/teacher/announcements/{announcement} bearer X-Tenant
POST /api/v1/teacher/attendance bearer X-Tenant
GET /api/v1/teacher/behavior/categories bearer X-Tenant
POST /api/v1/teacher/behavior/notes bearer X-Tenant
PATCH /api/v1/teacher/behavior/notes/{note} bearer X-Tenant
DELETE /api/v1/teacher/behavior/notes/{note} bearer X-Tenant
GET /api/v1/teacher/contacts bearer X-Tenant
GET /api/v1/teacher/exams bearer X-Tenant
POST /api/v1/teacher/exams/{exam}/results bearer X-Tenant
GET /api/v1/teacher/exams/{exam}/roster bearer X-Tenant
GET /api/v1/teacher/homework bearer X-Tenant
GET /api/v1/teacher/homework/{homework} bearer X-Tenant
POST /api/v1/teacher/homework/{homework}/attachments bearer X-Tenant
DELETE /api/v1/teacher/homework/{homework}/attachments/{attachment} bearer X-Tenant
GET /api/v1/teacher/me/attendance bearer X-Tenant
GET /api/v1/teacher/me/documents bearer X-Tenant
GET /api/v1/teacher/me/profile bearer X-Tenant
GET /api/v1/teacher/portfolio bearer X-Tenant
GET /api/v1/teacher/portfolio/options bearer X-Tenant
GET /api/v1/teacher/portfolio/{item} bearer X-Tenant
POST /api/v1/teacher/portfolio/{item}/files bearer X-Tenant
DELETE /api/v1/teacher/portfolio/{item}/files/{file} bearer X-Tenant
GET /api/v1/teacher/quran/groups bearer X-Tenant
GET /api/v1/teacher/quran/groups/{group}/roster bearer X-Tenant
GET /api/v1/teacher/quran/history bearer X-Tenant
POST /api/v1/teacher/quran/progress bearer X-Tenant
GET /api/v1/teacher/quran/students/{student}/progress bearer X-Tenant
GET /api/v1/teacher/quran/surahs bearer X-Tenant
GET /api/v1/teacher/review-templates bearer X-Tenant
GET /api/v1/teacher/review-templates/{template}/eligible-students bearer X-Tenant
GET /api/v1/teacher/reviews bearer X-Tenant
POST /api/v1/teacher/reviews bearer X-Tenant
GET /api/v1/teacher/reviews/{review} bearer X-Tenant
PUT /api/v1/teacher/reviews/{review} bearer X-Tenant
DELETE /api/v1/teacher/reviews/{review} bearer X-Tenant
POST /api/v1/teacher/reviews/{review}/attachments bearer X-Tenant
GET /api/v1/teacher/reviews/{review}/attachments/{attachment} bearer X-Tenant
DELETE /api/v1/teacher/reviews/{review}/attachments/{attachment} bearer X-Tenant
GET /api/v1/teacher/sections bearer X-Tenant
GET /api/v1/teacher/sections/{section}/roster bearer X-Tenant
GET /api/v1/teacher/sections/{section}/students bearer X-Tenant
GET /api/v1/teacher/students/{student} bearer X-Tenant
GET /api/v1/teacher/students/{student}/behavior bearer X-Tenant
GET /api/v1/teacher/students/{student}/contacts bearer X-Tenant
POST /api/v1/teacher/students/{student}/contacts bearer X-Tenant
GET /api/v1/teacher/students/{student}/reviews bearer X-Tenant
GET /api/v1/teacher/surveys bearer X-Tenant
GET /api/v1/teacher/surveys/{survey} bearer X-Tenant
POST /api/v1/teacher/surveys/{survey}/responses bearer X-Tenant
POST /api/v1/teacher/sync bearer X-Tenant
GET /api/v1/teacher/timetable bearer X-Tenant
GET /api/v1/teacher/today bearer X-Tenant