The Scheduler API lets you assemble a conflict-free weekly timetable from the course sections recommended by the Predictions engine. Every write operation validates three constraints: the assigned instructor’s declared availability windows, the instructor’s existing schedule (no double-booking), and the room’s occupancy. Conflict errors return a descriptiveDocumentation Index
Fetch the complete documentation index at: https://cors-lau.vercel.app/docs/llms.txt
Use this file to discover all available pages before exploring further.
400 message explaining exactly which resource is conflicted.
Day patterns use the institutional abbreviation set:
M Monday, T Tuesday, W Wednesday, R Thursday, F Friday, S Saturday, U Sunday. Combine characters for multi-day patterns, e.g. "MWF" or "TR".GET /scheduler/
Returns all schedule entries currently in the timetable, with each entry’s assigned doctor embedded.Responses
Auto-assigned entry ID.
Course identifier, e.g.
"CSC243".Section display name, e.g.
"Introduction to OOP".ID of the assigned instructor.
null if unassigned.Day pattern string, e.g.
"MWF" or "TR".24-hour start time, e.g.
"08:00".Session length in minutes, e.g.
60 for MWF sections or 90 for TR sections.Room identifier, e.g.
"B101". "TBD" if not yet assigned.Minimal doctor record embedded for display.
POST /scheduler/
Creates a new schedule entry. Before persisting, the endpoint runs all three conflict checks: instructor availability windows, instructor double-booking, and room occupancy.Request body
The course to schedule, e.g.
"CSC243".A human-readable section label, e.g.
"Introduction to OOP".ID of the instructor to assign. Pass
0 to leave the section unassigned. Conflict checks are skipped for unassigned entries.Day pattern using institutional abbreviations, e.g.
"MWF" or "TR".24-hour start time in
HH:MM format, e.g. "08:00".Session duration in minutes. Typical values:
60 for MWF, 90 for TR.Room identifier, e.g.
"B101". Pass "TBD" to skip room conflict checking.Responses
Returns the createdScheduleEntryResponse with the embedded doctor object.
PATCH /scheduler/
Partially updates an existing schedule entry. You may update any combination ofdoctor_id, room, duration_mins, day, and start_time. All three conflict checks are re-run against the resolved effective values after the patch, excluding the entry itself.
Path parameters
ID of the schedule entry to update.
Request body
Send only the fields you want to change as a JSON object.New instructor assignment.
New room assignment.
New session duration in minutes.
New day pattern.
New start time in
HH:MM format.Responses
Returns the updatedScheduleEntryResponse.
DELETE /scheduler/
Removes a schedule entry from the timetable.Path parameters
ID of the schedule entry to delete.
Responses
"deleted" on success.GET /scheduler/export
Downloads the complete timetable as an XLSX file. The response streams the file directly; no JSON body is returned.- Filename:
cors_final_schedule.xlsx - Sheet name:
Final Schedule - Columns: Days Pattern, Course Code, Section Name, Instructor, Start Time, End Time, Room
- MWF sections with
duration_mins = 60→ effective duration 50 minutes - TR sections with
duration_mins = 90→ effective duration 75 minutes
The
Content-Disposition header in the response is attachment; filename=cors_final_schedule.xlsx. Browsers will trigger an automatic file download.GET /scheduler/doctors
Returns all faculty records stored in the database.POST /scheduler/doctors
Creates a new faculty record.Request body
Full name of the faculty member, e.g.
"Dr. Alice Smith".JSON-encoded array of course codes this doctor is qualified to teach, e.g.
'["CSC243","CSC301"]'.Day pattern string indicating when the doctor is available, e.g.
"MWF".Time range string, e.g.
"08:00-14:00".Responses
Returns the createdDoctorResponse with its assigned id.