Skip to Content
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).

PathContent
GET /orgs, /schoolsThe school
GET /academicSessions, /terms, /schools/{id}/termsInternship seasons
GET /courses, /schools/{id}/coursesThe "Thực tập doanh nghiệp" course
GET /classes, /terms/{id}/classes, /schools/{id}/classes, /courses/{id}/classesOne class per season
GET /users/{id}/classes, /students/{id}/classesThe seasons (classes) a student is in
GET /users, /students, /schools/{id}/studentsStudents and school staff
GET /classes/{id}/studentsA season's students
GET /enrollments, /classes/{id}/enrollments, /schools/{id}/enrollmentsStudents 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 dataOneRoster
Schoolorgs (type = school); identifier is the school's code on the platform
SeasonacademicSessions (type = term); startDate is when it opened, endDate when it closed or is planned to; metadata."ttdn.open" tells whether it is open
Internship coursecourses (one, code TTDN) and classes (one per season)
Studentusers with roles[].role = student; student code in identifier and userIds[type = studentCode]; email is null when the student has no real email
Login nameusername: the login name or student code for password accounts; the email for Google accounts
NamefamilyName family name, middleName middle name, givenName given name (Vietnamese order)
School staffusers with roles[].role = administrator
Blocked accountenabledUser = false
Removed accountstatus = tobedeleted, still listed so delta syncs learn about it
In a seasonenrollments (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).

On this page