Sessions
One timetabled meeting, and the roll that belongs to it.
ProposedNot yet callable
This documents a design under review. Endpoints, payloads and field names may change before release.
What a session is
A session is a single timetabled meeting of a course: CS101 in Block C / 204, 09:00 to 10:00, on a given day. Attendance records hang off sessions, and sessions are how you reconcile in bulk instead of record by record.
Reading sessions
GET /v1/sessions?date=2026-07-19&course_code=CS101
GET /v1/sessions/ses_55ab20A session carries its own status: scheduled, open, closed or cancelled. Only an open session accepts new device captures.
The roll
GET /v1/sessions/ses_55ab20/rollReturns every enrolled student with their status for that session — including those with no record yet, which a plain record list cannot tell you. This is the shape most ERPs want for a nightly sync.
{
"session": { "id": "ses_55ab20", "course_code": "CS101", "status": "closed" },
"roll": [
{ "external_id": "2024CS118", "status": "present", "record_id": "att_7d3e91" },
{ "external_id": "2024CS119", "status": "absent", "record_id": "att_7d3e92" },
{ "external_id": "2024CS120", "status": null, "record_id": null }
]
}A null status means nobody has marked that student either way. Treat it as unresolved rather than absent — the difference matters when a device failed mid-session.