Class roster
class_enrollments is soft-stateful: unenrolling a student sets
status='inactive' rather than deleting the row, because
unique(class_id, student_id) means a re-enroll has to update the
existing row, not insert a duplicate. This is the same upsert-by-status
logic apps/web’s class detail page uses.
list_class_roster
Section titled “list_class_roster”Every enrollment row for a class, active and inactive.
| Argument | Type | Required |
|---|---|---|
class_id | uuid | yes |
enroll_student
Section titled “enroll_student”Sets status='active'. Does not enforce classes.capacity — neither does
the staff UI.
| Argument | Type | Required |
|---|---|---|
class_id | uuid | yes |
student_id | uuid | yes |
unenroll_student
Section titled “unenroll_student”Sets status='inactive'. The row is kept, not deleted.
| Argument | Type | Required |
|---|---|---|
class_id | uuid | yes |
student_id | uuid | yes |