Skip to main content

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, any or none), roomIds, roomCandidateIds, roomGroupIds and roomVariation. See Lesson fields.
  • New top-level roomGroups: each group's id, entityId, name and member rooms (memberIds).
  • Lesson units carry lessonGroupId (the lesson group they teach) and roomPickedBy (system or user, for rooms picked from a list).
  • Courses carry roomGroupIds and roomVariation. A course with roomVariation: "vary" gives each lesson its own room: read rooms from the lesson units, not the section.
  • Sections carry roomPickedBy (user when a room was set by hand, system when generated).
  • Removed: roomGroupName on lesson groups and units, and groupName on rooms. Use roomGroupIds and roomGroups.
  • Removed: minClassSize on 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, plus entityId (stable across timetables) and externalId (your own id, or null). See Identifiers.
  • Lesson units reference entities by localId in teacherIds, classIds, subjectIds, roomIds and studentIds. Every reference resolves to an entity in the same response.
  • Lessons and units have a localId; a unit names its lesson in lessonLocalId.
  • bellSchedules lists every bell schedule, the default first. bellSchedule is still the default. A class names its schedule in bellScheduleId.
  • Period and break times are startTime and endTime.
  • Classes carry classTeacherId; rooms carry capacity, buildingName and groupName.
  • Units no longer have length. A double period is two units sharing a spanId.
  • Student-level sections name their course in courseLocalId.
  • The version fields from List Timetables are included.
  • Removed: memberId, resourceId, and every *EntityIds field.

List Timetables

  • Each entry is one version, with groupId, versionNumber, versionName, isCurrent, publishedAt, effectiveFrom, effectiveTo and schedulingMode. 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.