Changelog
October 2026 (room assignment)
Lessons can ask for "any one of these rooms", and a room can be in several room groups.
This is a breaking change for readers of roomGroupName and room groupName.
Get Timetable
- Lesson groups state their room requirement:
roomMode(all,anyornone),roomIds,roomCandidateIds,roomGroupIdsandroomVariation. See Lesson fields. - New top-level
roomGroups: each group'sid,entityId,nameand member rooms (memberIds). - Lesson units carry
lessonGroupId(the lesson group they teach) androomPickedBy(systemoruser, for rooms picked from a list). - Courses carry
roomGroupIdsandroomVariation. A course withroomVariation: "vary"gives each lesson its own room: read rooms from the lesson units, not the section. - Sections carry
roomPickedBy(userwhen a room was set by hand,systemwhen generated). - Removed:
roomGroupNameon lesson groups and units, andgroupNameon rooms. UseroomGroupIdsandroomGroups. - Removed:
minClassSizeon courses. Nothing in TimetableMaster used it.
6 October 2026
Lesson units from GET /api/v1/timetables/{id} now say who teaches what to whom. Before this
release every unit's teacherIds, classIds, subjectIds and roomIds came back empty, and
teachers, classes, subjects, rooms, lessons and units had no identifier.
This is a breaking change to the response format.
Get Timetable
- Every entity has a
localId, which is what every reference in the response holds, plusentityId(stable across timetables) andexternalId(your own id, ornull). See Identifiers. - Lesson units reference entities by
localIdinteacherIds,classIds,subjectIds,roomIdsandstudentIds. Every reference resolves to an entity in the same response. - Lessons and units have a
localId; a unit names its lesson inlessonLocalId. bellScheduleslists every bell schedule, the default first.bellScheduleis still the default. A class names its schedule inbellScheduleId.- Period and break times are
startTimeandendTime. - Classes carry
classTeacherId; rooms carrycapacity,buildingNameandgroupName. - Units no longer have
length. A double period is two units sharing aspanId. - Student-level sections name their course in
courseLocalId. - The version fields from List Timetables are included.
- Removed:
memberId,resourceId, and every*EntityIdsfield.
List Timetables
- Each entry is one version, with
groupId,versionNumber,versionName,isCurrent,publishedAt,effectiveFrom,effectiveToandschedulingMode. Autosaves are not listed.
Errors
- A key for an organisation without API access is refused with
401. - An organisation whose access has ended gets
402. See Authentication errors.