MPH, MBA, MIT, or MPA. Users belong to one or more programmes (User.programme_codes); case studies declare which programmes may access them (CaseStudy.programme_codes). At runtime, students only see and can start sessions for case studies whose programmes intersect their own — or case studies with an empty programme_codes list (open to all).
Programmes are tenant-scoped. Each is identified by a unique uppercase code that frontends and CSV imports use directly — no separate id lookup needed.
List Programmes
PROGRAMMES.can_view.
Query parameters
Number of records to skip.
Max records to return (1–200).
Include deactivated programmes.
Example response
Get Programme
PROGRAMMES.can_view.
Example response
Create Programme
PROGRAMMES.can_create.
Request body
Unique programme code. 1–32 characters, uppercase letters / digits /
- / _ only (e.g. MPH, MBA_EXEC).Display name. Max 255 characters.
Optional description. Max 2000 characters.
Whether the programme is active. Inactive programmes still exist but new users typically aren’t tagged with them.
Example request
Errors
| Status | Code | Condition |
|---|---|---|
409 | CONFLICT | A programme with this code already exists in the tenant. |
Update Programme
PROGRAMMES.can_edit.
Request body
Updated code (still must be unique in the tenant).
Updated display name.
Updated description.
Active status.
Delete Programme
programme_codes list — that field is just a list of strings, so the value persists even after the programme is gone. Deactivate when you want a soft retire; delete when you want it out of the picker.
Requires PROGRAMMES.can_delete.