Course Substitutions
Permission node: ACADEMIC.COURSE_SUBSTITUTIONSAPI: /api/v1/academic/course-substitutions, /api/v1/academic/student-course-substitutions
A substitution says that one course may stand in for another when a degree audit checks a requirement. There are two kinds, and choosing the wrong one is the usual mistake.
Catalogue substitutions vs student substitutions
| Catalogue substitution | Student substitution | |
|---|---|---|
| Endpoint | /academic/course-substitutions | /academic/student-course-substitutions |
| Applies to | Everyone evaluating the affected requirement | One named student |
| Use when | A course was renumbered or split, or two courses are genuinely equivalent for a programme | An individual has been granted an exception |
Catalogue substitutions are policy. Student substitutions are exceptions. Recording a one-student exception as a catalogue substitution silently changes what every other student owes, and nothing will flag it — the audit will simply start passing people it should not.
Managing them
| Action | Catalogue | Per student |
|---|---|---|
| List | GET /academic/course-substitutions | GET /academic/student-course-substitutions |
| Get one | GET /academic/course-substitutions/{substitutionID} | GET /academic/student-course-substitutions/{substitutionID} |
| Create | POST /academic/course-substitutions | POST /academic/student-course-substitutions |
| Update | PATCH /academic/course-substitutions/{substitutionID} | PATCH /academic/student-course-substitutions/{substitutionID} |
| Delete | DELETE /academic/course-substitutions/{substitutionID} | DELETE /academic/student-course-substitutions/{substitutionID} |
Substitution or waiver?
A substitution says a different course satisfies the requirement. A waiver says the requirement need not be satisfied at all. Waivers live in the degree-audit area (Processing Waivers) and are recorded against the student, with their own approval trail. If the student is not taking a replacement course, it is a waiver, not a substitution.