OneRoster 1.2
Roster data
Rostering endpoints and how internship data maps to OneRoster.
Base path: /ims/oneroster/rostering/v1p2. Needs the roster scope (roster.readonly or roster-core.readonly).
Endpoints
Every collection also has a single-record form, /{collection}/{sourcedId}, returning the singular object (e.g. user).
| Path | Content |
|---|---|
GET /orgs, /schools | The school |
GET /academicSessions, /terms, /schools/{id}/terms | Internship seasons |
GET /courses, /schools/{id}/courses | The "Thực tập doanh nghiệp" course |
GET /classes, /terms/{id}/classes, /schools/{id}/classes, /courses/{id}/classes | One class per season |
GET /users/{id}/classes, /students/{id}/classes | The seasons (classes) a student is in |
GET /users, /students, /schools/{id}/students | Students and school staff |
GET /classes/{id}/students | A season's students |
GET /enrollments, /classes/{id}/enrollments, /schools/{id}/enrollments | Students in a season |
Always empty
The platform has none of these, so these standard endpoints always return an empty list (200), and a single record by id returns 404:
GET /teachers,/schools/{id}/teachers,/classes/{id}/teachers,/teachers/{id}/classes: no teachers.GET /gradingPeriods,/terms/{id}/gradingPeriods: seasons are not split into grading periods.GET /demographics: no demographic data is kept.
Mapping
| Internship data | OneRoster |
|---|---|
| School | orgs (type = school); identifier is the school's code on the platform |
| Season | academicSessions (type = term); startDate is when it opened, endDate when it closed or is planned to; metadata."ttdn.open" tells whether it is open |
| Internship course | courses (one, code TTDN) and classes (one per season) |
| Student | users with roles[].role = student; student code in identifier and userIds[type = studentCode]; email is null when the student has no real email |
| Login name | username: the login name or student code for password accounts; the email for Google accounts |
| Name | familyName family name, middleName middle name, givenName given name (Vietnamese order) |
| School staff | users with roles[].role = administrator |
| Blocked account | enabledUser = false |
| Removed account | status = tobedeleted, still listed so delta syncs learn about it |
| In a season | enrollments (role = student) in the season's class; beginDate is when the student was added to the season, endDate the season's (planned) close |
Companies have no OneRoster role and are not in users; the company's name comes with the internship result.
A student's metadata also has ttdn.selfSignup (signed up with the school's Google account) and ttdn.studentCodeDeclared (student code self-declared, not yet confirmed by the school).