OneRoster Rostering Service
This is the OneRoster 1.2 Rostering Service specification. This service provides the management of Academic Sessions, Users, Classes, Courses, Orgs, Students, Teachers, Schools, Grading Periods, Demographics, Terms and Enrollments. This service is made available as a REST/JSON based binding to support rostering data exchange.
Abstract
The 1EdTech OneRoster (OR) standard addresses the exchange of student data (primarily about people, courses, enrollments and grades) between different educational systems for the specific needs of K-12. The primary use-case is the exchange of data between a Student Information System (SIS) and Learning Management System (LMS). In OR 1.2, the service has been split into three core services:
- OneRoster Rostering Service - described in this document;
- OneRoster Gradebook Service 1EdTech OneRoster 1.2 Gradebook Services Final Release 1.0 - to enable the exchange of information about results which may be aligned as lineItems and categories which are collections of lineItems;
- OneRoster Resources Service 1EdTech OneRoster 1.2 Resources Services Final Release 1.0 - to enable the exchange of information about the resources allocated to classes, courses and users.
This OR 1.2 Rostering Service provides the ability to manage the exchange of information about people, classes, courses, organizations and enrollments. In this document the data exchange is described in an implementation-independent format i.e. using a profile of the Unified Modeling Language (UML). The service description includes the definition of the data formats that are exchanged using a set of service operations.
Introduction
This Section is NOT NORMATIVE.
Scope and Context
This document is the OneRoster 1.2 Rostering Service Model and as such it is used as the basis for the development of the following documents:
- OneRoster 1.2 Rostering REST/JSON Binding 1.0 1EdTech OneRoster 1.2 Rostering Services Final Release 1.0 - the description of the REST/JSON binding, including the OpenAPI description, for the Information Model;
- OneRoster 1.2 Implementation Guide 1.0 1EdTech OneRoster 1.2 Implementation Guide Final Release 1.0 - the recommended best practices for implementing the set of OneRoster services;
- OneRoster 1.2 Conformance and Certification 1.0 1EdTech OneRoster 1.2 Conformance and Certification Final Release 1.0 - the conformance guidelines for achieving OneRoster Resources certification.
This information model defines the OneRoster Rostering Abstract Application Programming Interface (a-API). This service model is described using the Unified Modeling Language (UML) based upon the 1EdTech Model Driven Specification approach and the associated modelling toolkit 1EdTech Binding Auto-generation Toolkit (I-BAT). This means that this specification is based upon the concepts of:
- Interoperability - the OneRoster Rostering service focuses on the exchange of exchange of information about people, classes, courses, organizations and enrollments. There are no definitions in the specification on how the data is managed within the end-systems;
- Service-oriented - the OneRoster Rostering service specification defines the exchange of information in terms of the services being supplied by the collaboration of the systems.
Conventions
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY, MUST, MUST NOT, NOT RECOMMENDED, NOT REQUIRED, OPTIONAL, RECOMMENDED, REQUIRED, SHALL, SHALL NOT, SHOULD, and SHOULD NOT in this document $are to be interpreted as described in Key words for use in RFCs to Indicate Requirement Levels.
An implementation of this specification that fails to implement a MUST/REQUIRED/SHALL requirement or fails to abide by a MUST NOT/SHALL NOT prohibition is considered nonconformant. SHOULD/SHOULD NOT/RECOMMENDED statements constitute a best practice. Ignoring a best practice does not violate conformance but a decision to disregard such guidance should be carefully considered. MAY/OPTIONAL statements indicate that implementers are entirely free to choose whether or not to implement the option.
The Conformance and Certification Guide for this specification may introduce greater normative constraints than those defined here for specific service or implementation categories.
Changes in Rostering Service 1.2
The set of changes made between OR 1.1 and OR 1.2 with respect to rostering are:
- The Rostering parts of the OneRoster specification have been separated out into their own Service Model and REST/JSON Binding documents;
- The endpoints have been annotated as '/ims/oneroster/rostering/v1p2' to replace the '/ims/oneroster/v1p1';
- The attributes 'preferredFirstName', 'preferredMiddleName', and 'preferredLastName' have been added to the 'User' class;
- The enumeration vocabulary for the attribute 'sex' in the 'Demographics' class has been extended with the tokens 'other' and 'unspecified';
- The 'userMasterIdentifier' attribute has been added to the 'User' class enable the assignment of a definitive globally unque identifier (not the interoperability 'sourcedId' for the user);
- The 'roles' attribute has been added to the 'User' class and the 'Roles' class has been added to enable the assignment of any combination of role/org/account mappings for a user;
- The 'resources' attribute has been added to the 'User' class to allow identification of the set of resources available to the user;
- The 'role' and 'orgs' attributes have been removed from the 'User' class;
- The 'primaryOrg' attribute has been added to the 'User' class;
- The 'userProfiles' attribute has been added to the 'User' class and the UserProfiles' and 'Credential' classes have been added to enable the assignment of profiles to a user. A profile enables the management of credentials for access to a system;
- The 'ClassTypeEnum', 'GenderEnum', 'OrgTypeEnum', 'RoleEnum' and 'SessionTypeEnum' vocabularies have been made extensible to enable easier profiling and internationalisation;
- All references to the CEDS/SCEDS vocabularies have been removed so that such vocabularies can be replaced by those that are more relevant to a geographic region;
- Use of OAuth 1.0a message signing has been removed. The use of OAuth 2.0 Bearer Tokens (Client Credentials Grant) is required instead. The security architecture has been aligned to the IMS Security Framework 1EdTech Security Framework 1.1 Final Release.
Nomenclature
- API
- Application Programming Interface
- CEDS
- Common Education Data Standards
- GUID
- Globally Unique Identifier
- HTTP
- Hypertext Transfer Protocol
- I-BAT
- IMS Binding Autogeneration Toolkit
- IETF
- Internet Engineering Task Force
- JSON
- Java Script Object Notation
- LIS
- Learning Information Services
- NCES
- National Center for Education Statistics
- PII
- Personally Identifiable Information
- REST
- Representational State Transfer
- RFC
- Request for Comments
- TLS
- Transport Layer Security
- UML
- Unified Modeling Language
- URI
- Uniform Resource Identifier
- URL
- Uniform Resource Locator
- UTC
- Coordinated Universal Time
- YAML
- Yet Another Markup Language
Use-cases
This Section is NOT NORMATIVE.
The set of use-cases addressed by the OR Rostering Service are summarised in Table 2.1.
| ID | Use-case Description |
|---|---|
| 1 | To enable a system to obtain information about the set of people engaged in the teaching activities. To provide the details of the teachers, students or users (in general) that are involved in the teaching activities: this includes their demographics. |
| 2 | To enable a system to obtain information about the set of courses used for the teaching activities. To provide the details of the set of courses that are available including segmenting them by school. |
| 3 | To enable a system to obtain information about the set of classes used for the teaching activities. To provide the details of the set of classes that are available including segmenting them by course, school and user. |
| 4 | To enable a system to obtain the set of enrollments on a class. To provide the details of the set of enrollments on the various classes that are being supplied. This includes segmentation by class and/or school. |
| 5 | To enable a system to obtain information about the set of academic sessions across which the teaching is delivered. To provide the details of the set of academic sessions used in the organization. This includes identification of the set of terms and grading periods. |
| 6 | To enable a system to obtain information about the set of organizations responsible for delivering the teaching activities. To provide a list of the schools, districts and other organizations that are involved in the teaching activities. To enable details about each of these organizations to be obtained. |
| [Table 2.1 - The list of use-cases enabled by this OneRoster service.] |
Service Architecture and Specification Model
This Section is NOT NORMATIVE.
An Abstract Representation
It is important to remember that this document contains a description of the underlying information model in terms of the abstract Application Programming Interface (API). The manner in which this abstract representation is visualized is not intended to dictate the implementation form of the Service. The breakdown of the service into its interface classes is a convenient way to document the set of behaviors. The objective for producing these interfaces is to identify and define the messages that are exchanged between the end-systems to realize the system behaviors required of the service.
The internal organization of an implementation of the full abstract API is beyond the scope of this specification. The only constraint is that the external behavior of the abstract API complies with this specification. This means that a .NET, J2EE, etc. physical implementation of this abstract API does not have to represent the functionality using the same breakdown of operations/methods. This physical implementation is not subject to the conformance specification.
It is important to note that the UML representation of the interfaces is used to help develop and document the Service Model and various Bindings. It is not a requirement for a system to implement this interface as defined i.e. to use the same parameters, etc. Conformance against this specification will be confirmed by inspecting the appropriate binding of the information model and ensuring that the relevant information is present and that different sequences of activity result in the predicted and mandated behavior. It is essential that the behaviors described by each of the operations are fully supported and that the behaviors described by different sequences are also maintained.
Service Providers and Service Consumers
The basic architectural model for the OR Rostering Service specification is shown in Figure 3.1. In this architecture the scope of the IMS OR Rostering Service specification is shown as the dotted line. The scope of the interoperability is the data and behavioral models of the objects being exchanged.

Figure 3.1 - The OR Resources service architecture.
It is important to remember that the structure of the exchanged information has NO bearing on how the same information is contained within the 'consumer' and 'provider' OR Rostering systems (the OR Rostering repositories in the two end-systems). It is simply a representation of the data used to facilitate exchange between the end-systems. The only constraint on the end-system repositories is that they provide data persistence consistent with the required behavior.
Service Objects
The set of single objects that can be exchanged between OR Rostering end-systems are:
- An 'academicSession' - a duration over which teaching and learning occurs. This includes a 'term' or 'gradingPeriod' which are types of 'academicSession';
- A 'class' - a teaching activity for a course. Each course will be taught through one or more classes;
- A 'course' - a course of study that, typically, has a shared curriculum although it may be taught to different students by different teachers;
- A 'demographics' - the set of demographics information for a user;
- An 'enrollment' - a user is enrolled on a class delivered by an 'org';
- An 'org' - the information about an organization. This includes a 'school' which is a type of 'org';
- A 'user' - the information about a user. This includes a 'student' or 'teacher' who are types of 'user'. This information includes the roles for the user in the corresponding 'orgs' and the set of userProfiles for a user on the various systems/tools/apps that could be used.
The set of collection objects that can be exchanged between OR Rostering end-systems are:
- A collection of 'academicSessions';
- A collection of 'classes';
- A collection of 'courses';
- A collection of 'demographics';
- A collection of 'enrollments';
- A collection of 'orgs';
- A collection of 'users' - this includes the set of roles and userProfiles for each user.
The relationships between the core classes in OR Rostering are shown in Figure 3.2.

Figure 3.2 - The relationships between the core classes in the Rostering data model.
The key relationships shown in Figure 3.2 are:
- A course will be delived by one or more classes. Each course is assigned to a single 'org' and an org' may be responsible for any number of courses;
- A user is enrolled on a class. A user may be enrolled on more than one class and each class will have one or more enrolled users;
- Each class will be delivered in a specific 'academicSession' and any number of classes may be delivered in an 'academicSession';
- Each 'academicSession' will be handled by an 'org' and each 'org' will be responsible for any number of academicSessions;
- Each user may have a demographics description and each demographics is assigned to a single user only;
- A user must have at least one role and each role is assigned in the context of a single org. A user may have many roles in many orgs (denoted by many role-org mappings);
- A user may have one or more profiles and each profile is assigned to a single user. A role may be aligned to a user profile.
Synchronous and Asynchronous Services
The OR Rostering Service is a synchronous service i.e. the consumer is blocked until the response from the provider is received. This means that a consumer can only have one outstanding request with a service provider. The corresponding sequence of actions is shown in Figure 3.3.

Figure 3.3 - The action sequence for the OR Rostering synchronous service.
Figure 3.3 shows the action sequence from the prespective of the consumer but it must be noted that a Service Provider will be expected to support concurrent requests from many consumers.
OneRoster Rostering, Resources and Gradebook Choreography
The rostering data model, and associated services, is the core of the OneRoster specification. Choreography with the other OneRoster services is dependent upon:
- Resources Service - apart from the 'getAllResources()' call, the other Resources Service calls require provision of a 'sourcedId' to identify either the resource itself or the associated class or course or user. Therefore, support for the Resources endpoints should also require support for the OR Rostering endpoints. The Class, Course and User classes contain the set of sourcedIds for the resources associated with the class, course or user retrospectively and so this is the entry point for obtaining the associated resource allocations;
- Gradebook Service - there is a complex relationship between the Rostering and Gradebook Services. The data model for the Gradebook consists of Results, LineItems, Categories and ScoreScales. Many of the Gradebook Service endpoints use the 'sourcedId' for a specific 'class', 'student', teacher', 'academicSesson', etc. Therefore, any system that supports the Gradebook Service should also support the Rostering Service so that knowledge and validation of the associated users, classes, etc. can be undertaken.
The Behavior Model
The definition of the operations of the service. This focuses on the description of the behaviors supported by the service. The behaviors are grouped as interfaces;
| Interface | Description |
|---|---|
| OrgsManagement | This enables the management of orgs i.e. an organization involved in the learning in some form or other. |
| CoursesManagement | This enables the management of Courses i.e. programme of study. |
| ClassesManagement | This enables the management of Classes i.e. scheduled learning of courses. |
| EnrollmentsManagement | This enables the management of the enrollments of users (teachers, students, etc.) on classes supplied by schools. |
| DemographicsManagement | This enables the management of demographics information (each assigned to a specific user). The sourcedIds for the user and the demographics records should be the same. |
| AcademicSessionsManagement | This enables the management of academic sessions i.e. periods of academic activity. |
| SchoolsManagement | This enables the management of information about schools. A school is a type of 'org'. |
| TermsManagement | This enables the management of information about terms (a term is a type of 'academicSession'). |
| GradingPeriodsManagement | This enables the management of grading periods i.e. specific academic sessions. |
| StudentsManagement | This enables the management of information about students (a student is a type of 'user'). |
| TeachersManagement | This enables the management of information about teachers (a teacher is a type of 'user'). |
| UsersManagement | This enables the management of information about users (including students and teachers). |
OrgsManagement Interface
This enables the management of orgs i.e. an organization involved in the learning in some form or other.
| Operation | Description |
|---|---|
| getAllOrgs | To read, get, a collection of orgs i.e. all orgs. |
| getOrg | To read, get, a specific org. If the specified org cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllOrgs" Operation
To read, get, a collection of orgs i.e. all orgs.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| OrgSet | No Description | [1] | N/A |
"getOrg" Operation
To read, get, a specific org. If the specified org cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleOrg | No Description | [1] | N/A |
CoursesManagement Interface
This enables the management of Courses i.e. programme of study.
| Operation | Description |
|---|---|
| getAllCourses | To read, get, a collection of courses i.e. all courses. |
| getCourse | To read, get, a specific course. If the specified course cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getClassesForCourse | To get the set of classes related to a specific course. If the specified course cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllCourses" Operation
To read, get, a collection of courses i.e. all courses.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| CourseSet | No Description | [1] | N/A |
"getCourse" Operation
To read, get, a specific course. If the specified course cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleCourse | No Description | [1] | N/A |
"getClassesForCourse" Operation
To get the set of classes related to a specific course. If the specified course cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| ClassSet | No Description | [1] | N/A |
ClassesManagement Interface
This enables the management of Classes i.e. scheduled learning of courses.
| Operation | Description |
|---|---|
| getAllClasses | To read, get, a collection of classes i.e. all classes. |
| getClass | To read, get, a specific class. If the specified class cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getStudentsForClass | To read, get, the collection of students associated with a specific class. If the specified class cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getTeachersForClass | To read, get, the collection of teachers associated with a specific class. If the specified class cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllClasses" Operation
To read, get, a collection of classes i.e. all classes.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| ClassSet | No Description | [1] | N/A |
"getClass" Operation
To read, get, a specific class. If the specified class cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleClass | No Description | [1] | N/A |
"getStudentsForClass" Operation
To read, get, the collection of students associated with a specific class. If the specified class cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| UserSet | No Description | [1] | N/A |
"getTeachersForClass" Operation
To read, get, the collection of teachers associated with a specific class. If the specified class cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| UserSet | No Description | [1] | N/A |
EnrollmentsManagement Interface
This enables the management of the enrollments of users (teachers, students, etc.) on classes supplied by schools.
| Operation | Description |
|---|---|
| getAllEnrollments | To read, get, a collection of enrollments i.e. all enrollments. |
| getEnrollment | To read, get, a specific enrollment. If the specified enrollment cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllEnrollments" Operation
To read, get, a collection of enrollments i.e. all enrollments.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| EnrollmentSet | No Description | [1] | N/A |
"getEnrollment" Operation
To read, get, a specific enrollment. If the specified enrollment cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleEnrollment | No Description | [1] | N/A |
DemographicsManagement Interface
This enables the management of demographics information (each assigned to a specific user). The sourcedIds for the user and the demographics records should be the same.
| Operation | Description |
|---|---|
| getAllDemographics | To read, get, a collection of demographics i.e. all demographics. |
| getDemographics | To read, get, a specific user demographics. If the specified user and/or demographics record cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllDemographics" Operation
To read, get, a collection of demographics i.e. all demographics.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| DemographicsSet | No Description | [1] | N/A |
"getDemographics" Operation
To read, get, a specific user demographics. If the specified user and/or demographics record cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleDemographics | No Description | [1] | N/A |
AcademicSessionsManagement Interface
This enables the management of academic sessions i.e. periods of academic activity.
| Operation | Description |
|---|---|
| getAllAcademicSessions | To read, get, a collection of academic sessions i.e. all academic sessions. |
| getAcademicSession | To read, get, a specific academic session. If the specified academic session cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllAcademicSessions" Operation
To read, get, a collection of academic sessions i.e. all academic sessions.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| AcademicSessionSet | No Description | [1] | N/A |
"getAcademicSession" Operation
To read, get, a specific academic session. If the specified academic session cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleAcademicSession | No Description | [1] | N/A |
SchoolsManagement Interface
This enables the management of information about schools. A school is a type of 'org'.
| Operation | Description |
|---|---|
| getAllSchools | To read, get, a collection of schools i.e. all schools. |
| getSchool | To read, get, a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getCoursesForSchool | To read, get, the collection of courses associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getEnrollmentsForClassInSchool | To read, get, the collection of enrollments associated with a specific class at a specific school. If the specified school and/or class cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getStudentsForClassInSchool | To read, get, the collection of students associated with a specific class at a specific school. If the specified school and/or class cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getTeachersForClassInSchool | To read, get, the collection of teachers associated with a specific class at a specific school. If the specified school and/or class cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getEnrollmentsForSchool | To read, get, the collection of enrollments associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getStudentsForSchool | To read, get, the collection of students associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getTeachersForSchool | To read, get, the collection of teachers associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getTermsForSchool | To read, get, the collection of terms associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getClassesForSchool | To read, get, the collection of classes associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllSchools" Operation
To read, get, a collection of schools i.e. all schools.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| OrgSet | No Description | [1] | N/A |
"getSchool" Operation
To read, get, a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleOrg | No Description | [1] | N/A |
"getCoursesForSchool" Operation
To read, get, the collection of courses associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| CourseSet | No Description | [1] | N/A |
"getEnrollmentsForClassInSchool" Operation
To read, get, the collection of enrollments associated with a specific class at a specific school. If the specified school and/or class cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| EnrollmentSet | No Description | [1] | N/A |
"getStudentsForClassInSchool" Operation
To read, get, the collection of students associated with a specific class at a specific school. If the specified school and/or class cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| UserSet | No Description | [1] | N/A |
"getTeachersForClassInSchool" Operation
To read, get, the collection of teachers associated with a specific class at a specific school. If the specified school and/or class cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| UserSet | No Description | [1] | N/A |
"getEnrollmentsForSchool" Operation
To read, get, the collection of enrollments associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| EnrollmentSet | No Description | [1] | N/A |
"getStudentsForSchool" Operation
To read, get, the collection of students associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| UserSet | No Description | [1] | N/A |
"getTeachersForSchool" Operation
To read, get, the collection of teachers associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| UserSet | No Description | [1] | N/A |
"getTermsForSchool" Operation
To read, get, the collection of terms associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| AcademicSessionSet | No Description | [1] | N/A |
"getClassesForSchool" Operation
To read, get, the collection of classes associated with a specific school. If the specified school cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| ClassSet | No Description | [1] | N/A |
TermsManagement Interface
This enables the management of information about terms (a term is a type of 'academicSession').
| Operation | Description |
|---|---|
| getAllTerms | To read, get, a collection of terms i.e. all terms. |
| getTerm | To read, get, a specific term. If the specified term cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getClassesForTerm | To get the set of classes related to a specific term. If the specified term cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getGradingPeriodsForTerm | To get the set of grading periods related to a specific term. If the specified term cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllTerms" Operation
To read, get, a collection of terms i.e. all terms.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| AcademicSessionSet | No Description | [1] | N/A |
"getTerm" Operation
To read, get, a specific term. If the specified term cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleAcademicSession | No Description | [1] | N/A |
"getClassesForTerm" Operation
To get the set of classes related to a specific term. If the specified term cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| ClassSet | No Description | [1] | N/A |
"getGradingPeriodsForTerm" Operation
To get the set of grading periods related to a specific term. If the specified term cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| AcademicSessionSet | No Description | [1] | N/A |
GradingPeriodsManagement Interface
This enables the management of grading periods i.e. specific academic sessions.
| Operation | Description |
|---|---|
| getAllGradingPeriods | To read, get, a collection of grading periods i.e. all academic sessions. |
| getGradingPeriod | To read, get, a specific grading period. If the specified grading period cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllGradingPeriods" Operation
To read, get, a collection of grading periods i.e. all academic sessions.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| AcademicSessionSet | No Description | [1] | N/A |
"getGradingPeriod" Operation
To read, get, a specific grading period. If the specified grading period cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleAcademicSession | No Description | [1] | N/A |
StudentsManagement Interface
This enables the management of information about students (a student is a type of 'user').
| Operation | Description |
|---|---|
| getAllStudents | To read, get, a collection of students i.e. all students. |
| getStudent | To read, get, a specific student. If the specified student cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getClassesForStudent | To get the set of classes related to a specific student. If the specified student cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllStudents" Operation
To read, get, a collection of students i.e. all students.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| UserSet | No Description | [1] | N/A |
"getStudent" Operation
To read, get, a specific student. If the specified student cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleUser | No Description | [1] | N/A |
"getClassesForStudent" Operation
To get the set of classes related to a specific student. If the specified student cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| ClassSet | No Description | [1] | N/A |
TeachersManagement Interface
This enables the management of information about teachers (a teacher is a type of 'user').
| Operation | Description |
|---|---|
| getAllTeachers | To read, get, a collection of teachers i.e. all teachers. |
| getTeacher | To read, get, a specific teacher. If the specified teacher cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getClassesForTeacher | To get the set of classes related to a specific teacher. If the specified teacher cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllTeachers" Operation
To read, get, a collection of teachers i.e. all teachers.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| UserSet | No Description | [1] | N/A |
"getTeacher" Operation
To read, get, a specific teacher. If the specified teacher cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleUser | No Description | [1] | N/A |
"getClassesForTeacher" Operation
To get the set of classes related to a specific teacher. If the specified teacher cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| ClassSet | No Description | [1] | N/A |
UsersManagement Interface
This enables the management of information about users (including students and teachers).
| Operation | Description |
|---|---|
| getAllUsers | To read, get, a collection of users i.e. all users (including students and teachers). |
| getUser | To read, get, a specific user. If the specified user cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
| getClassesForUser | To get the set of classes related to a specific user. If the specified user cannot be identified within the service provider then a status code of 'unknownobject' must be reported. |
"getAllUsers" Operation
To read, get, a collection of users i.e. all users (including students and teachers).
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| UserSet | No Description | [1] | N/A |
"getUser" Operation
To read, get, a specific user. If the specified user cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| SingleUser | No Description | [1] | N/A |
"getClassesForUser" Operation
To get the set of classes related to a specific user. If the specified user cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
Parameters
No parameters defined.
Return Parameters
| Type | Description | Multiplicity | Confidentiality |
|---|---|---|---|
| ClassSet | No Description | [1] | N/A |
The Data Model
Data Class Descriptions
AcadSessionGUIDRef Class
This is the container for reference to a OneRoster 'Academic Session' object that has an allocated sourcedId (GUID).
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| type | AcadSessionGUIDRefTypeEnum | The type of object being referenced i.e. an 'academicSession'. | [1] | N/A |
| href | AnyURI | The URI for the type of object being referenced. | [1] | N/A |
| sourcedId | SourcedId | The globally unique identifier of the object being referenced. | [1] | N/A |
AcademicSession Class
The container for an academicSession. An academicSession represents a duration of time. Typically they are used to describe terms, grading periods, and other durations e.g. school years. Term is used to describe a period of time during which learning will take place. Other words for term could be in common use around the world e.g. Semester. The important thing is that Term is a unit of time, often many weeks long, into which classes are scheduled. Grading Period is used to represent another unit of time, that within which line items are assessed. A term may have many grading periods, a grading period belongs to a single term. A class may be assessed over several grade periods (represented by a line item being connected to a grading period). The parent / child attributes of academic sessions allow terms to be connected to their grading periods and vice-versa.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| sourcedId | SourcedId | The sourcedId of the object. All objects MUST be identified by a Source Identifier. This is an interoperability System ID for an object. This is the identifier that SYSTEMS will refer to when making API calls, or when needing to identify an object. It is RECOMMENDED that systems are able to map whichever local ids (e.g. database key fields) they use to SourcedId. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII) by certified products. Therefore, as a part of certification, vendors will be required to declare that they will notify customers via documentation or other formal and documented agreement that sourcedIds should never contain PII in general. | [1] | N/A |
| status | BaseStatusEnum | All objects MUST BE either 'active' or 'tobedeleted'. Something which is flagged 'tobedeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not under any compulsion to do so. In v1.1 the enumeration value of 'inactive' was removed and so for backwards compatibility all such marked objects should be interpreted as 'tobedeleted'. | [1] | N/A |
| dateLastModified | DateTime | All objects MUST be annotated with the dateTime upon which they were last modified. This enables requesters to query for just the latest objects. DateTimes MUST be expressed in W3C profile of [ISO 8601] and MUST contain the UTC timezone. | [1] | N/A |
| title | NormalizedString | The title/label for the academic session. | [1] | N/A |
| startDate | Date | The start date for the academic session. The start date is included in the academic session. This is in [ISO 8601] format of 'YYYY-MM-DD'. | [1] | N/A |
| endDate | Date | The end date for the academic session. The end date is excluded from the academic session. This is in [ISO 8601] format of 'YYYY-MM-DD'. | [1] | N/A |
| type | SessionTypeEnumExt | The type of academic session. This is based upon an enumerated vocabulary. | [1] | N/A |
| parent | AcadSessionGUIDRef | The link to parent AcademicSession i.e. an AcademicSession 'sourcedId'. | [0..1] | N/A |
| children | AcadSessionGUIDRef | The set of links to the child AcademicSessions i.e. a set of AcademicSession 'sourcedIds'. | [0..*] | N/A |
| schoolYear | NormalizedString | The school year for the academic session. This year should include the school year end e.g. 2014. This is in the [ISO 8601] format of 'YYYY'. | [1] | N/A |
| metadata | MetadataGeneral | All AcademicSession objects MAY be extended using the MetadataGeneral class. This specification is silent on what implementers may consider to be appropriate extensions. The form of the extension is dependent on the binding technology being used. | [0..1] | N/A |
AcademicSessionSet Class
This is the container for a collection of academicSessions instances for a message payload. This may be empty if no instances are found that sustain the applied query constraints. The order is not significant.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| academicSessions | AcademicSession | The collection of academicSession instances. The order is not significant. The corresponding query constraints may result in no instances being returned. | [0..*] | N/A |
Class Class
A class is an instance of a course, onto which students and teachers are enrolled. A class is typically held within a term.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| sourcedId | SourcedId | The sourcedId of the object. All objects MUST be identified by a Source Identifier. This is an interoperability System ID for an object. This is the identifier that SYSTEMS will refer to when making API calls, or when needing to identify an object. It is RECOMMENDED that systems are able to map whichever local ids (e.g. database key fields) they use to SourcedId. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII) by certified products. Therefore, as a part of certification, vendors will be required to declare that they will notify customers via documentation or other formal and documented agreement that sourcedIds should never contain PII in general. | [1] | N/A |
| status | BaseStatusEnum | All objects MUST BE either 'active' or 'tobedeleted'. Something which is flagged 'tobedeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not under any compulsion to do so. In v1.1 the enumeration value of 'inactive' was removed and so for backwards compatibility all such marked objects should be interpreted as 'tobedeleted'. | [1] | N/A |
| dateLastModified | DateTime | All objects MUST be annotated with the dateTime upon which they were last modified. This enables requesters to query for just the latest objects. DateTimes MUST be expressed in the format 'YYYY-MM-DDThh:mm:ss.sssZ' [ISO 8601]. | [1] | N/A |
| title | NormalizedString | The tile/label for the class. | [1] | N/A |
| classCode | NormalizedString | The class code. | [0..1] | N/A |
| classType | ClassTypeEnumExt | The type of class. This is based upon an enumerated vocabulary. | [0..1] | N/A |
| location | NormalizedString | The location for the class e.g. 'Room 19'. | [0..1] | N/A |
| grades | NormalizedString | The grade(s) who attend the class. The permitted vocabulary should be defined as part of the adoption and deployment process. See the Implementation Guide [OR-IMPL-12] for more details on how to define/use such a vocabulary. | [0..*] | N/A |
| subjects | NormalizedString | The set of subjects addressed by this class e.g. 'chemistry'. | [0..*] | N/A |
| course | CourseGUIDRef | The link to the associated course i.e. the Course 'sourcedId'. | [1] | N/A |
| school | OrgGUIDRef | The link to the associated school i.e. the School 'sourcedId'. | [1] | N/A |
| terms | AcadSessionGUIDRef | The links to the set of terms or semesters (academicSession) i.e. the set of 'sourcedIds' for the terms within the associated school year. | [1..*] | N/A |
| subjectCodes | NormalizedString | This is a machine readable set of codes and the number should match the associated 'subjects' attribute. The vocabulary for this characteristic should be defined as part of the local addition of this specification (see the Implementation Guide [OR-IMPL-12] for more details). | [0..*] | N/A |
| periods | NormalizedString | The time slots in the day that the class will be given. Examples are 1 or a list of 1, 3, 5, etc. | [0..*] | N/A |
| resources | ResourceGUIDRef | The links to the set of associated resources i.e. the Resource 'sourcedIds'. | [0..*] | N/A |
| metadata | MetadataClass | Class objects MAY be extended using the MetadataClass class. This specification is silent on what implementers may consider to be appropriate extensions. The form of the extension is dependent on the binding technology being used. | [0..1] | N/A |
ClassGUIDRef Class
This is the container for reference to a OneRoster 'Class' object that has an allocated sourcedId (GUID).
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| type | ClassGUIDRefTypeEnum | The type of object being referenced i.e. a 'class'. | [1] | N/A |
| href | AnyURI | The URI for the type of object being referenced. | [1] | N/A |
| sourcedId | SourcedId | The globally unique identifier of the object being referenced. | [1] | N/A |
ClassSet Class
This is the container for a collection of classes instances for a message payload. This may be empty if no instances are found that sustain the applied query constraints. The order is not significant.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| classes | Class | The collection of class instances. The order is not significant. The corresponding query constraints may result in no instances being returned. | [0..*] | N/A |
Course Class
The information about a course. A Course is a course of study that, typically, has a shared curriculum although it may be taught to different students by different teachers. It is likely that several classes of a single course may be taught in a term. For example, a school runs Grade 9 English in the spring term. There are four classes, each with a different 30 students, taught by 4 different teachers. However the curriculum for each of those four classes is the same i.e. the course curriculum.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| sourcedId | SourcedId | The sourcedId of the object. All objects MUST be identified by a Source Identifier. This is an interoperability System ID for an object. This is the identifier that SYSTEMS will refer to when making API calls, or when needing to identify an object. It is RECOMMENDED that systems are able to map whichever local ids (e.g. database key fields) they use to SourcedId. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII) by certified products. Therefore, as a part of certification, vendors will be required to declare that they will notify customers via documentation or other formal and documented agreement that sourcedIds should never contain PII in general. | [1] | N/A |
| status | BaseStatusEnum | All objects MUST BE either 'active' or 'tobedeleted'. Something which is flagged 'tobedeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not under any compulsion to do so. In v1.1 the enumeration value of 'inactive' was removed and so for backwards compatibility all such marked objects should be interpreted as 'tobedeleted'. | [1] | N/A |
| dateLastModified | DateTime | All objects MUST be annotated with the dateTime upon which they were last modified. This enables requesters to query for just the latest objects. DateTimes MUST be expressed in the format 'YYYY-MM-DDThh:mm:ss.sssZ' [ISO 8601]. | [1] | N/A |
| title | NormalizedString | The title of the course. | [1] | N/A |
| schoolYear | AcadSessionGUIDRef | The link to academicSession i.e. the AcademicSession 'sourcedId'. | [0..1] | N/A |
| courseCode | NormalizedString | The assigned course code. | [1] | N/A |
| grades | NormalizedString | Grade(s) for which the class is attended. The permitted vocabulary should be defined as part of the adoption and deployment process. See the Implementation Guide [OR-IMPL-12] for more details on how to define/use such a vocabulary. | [0..*] | N/A |
| subjects | NormalizedString | The set of subjects addressed by this course. This is a set of human readable strings. | [0..*] | N/A |
| org | OrgGUIDRef | The link to org i.e. the 'sourcedId' of the org. | [0..1] | N/A |
| subjectCodes | NormalizedString | This is a machine readable set of codes and the number should match the associated 'subjects' attribute. The vocabulary for this characteristic should be defined as part of the local addition of this specification (see the Implementation Guide [OR-IMPL-12] for more details). | [0..*] | N/A |
| resources | ResourceGUIDRef | The links to the associated resources if applicable i.e. the resource 'sourcedIds'. | [0..*] | N/A |
| metadata | MetadataCourse | All Course objects MAY be extended using the MetadataCourse class. This specification is silent on what implementers may consider to be appropriate extensions. The form of the extension is dependent on the binding technology being used. | [0..1] | N/A |
CourseGUIDRef Class
This is the container for reference to a OneRoster 'Course' object that has an allocated sourcedId (GUID).
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| type | CourseGUIDRefTypeEnum | The type of object being referenced i.e. a 'course'. | [1] | N/A |
| href | AnyURI | The URI for the type of object being referenced. | [1] | N/A |
| sourcedId | SourcedId | The globally unique identifier of the object being referenced. | [1] | N/A |
CourseSet Class
This is the container for a collection of courses instances for a message payload. This may be empty if no instances are found that sustain the applied query constraints. The order is not significant.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| courses | Course | The collection of course instances. The order is not significant. The corresponding query constraints may result in no instances being returned. | [0..*] | N/A |
Credential Class
The container for a single set of credentials for an account.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| type | String | The type of credentials for the profile. This should be indicative of when this specific credential should be used. | [1] | N/A |
| username | NormalizedString | The username. | [1] | Identifier |
| password | String | The password in this set of credentials. Care should be taken to ensure that no unencrypted value is revealed. | [0..1] | Credentials |
Demographics Class
Demographics information is taken from the Common Educational Data Standards (CEDS) from the US government (http://ceds.ed.gov). Note that demographics data is held in its own service, and that access to this service is considered privileged. Not all consumer keys will be able to request demographics data. NOTE that the sourcedId used to retrieve the demographics data MUST be the same as the sourcedId of the User i.e. the owner of the demographics data.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| sourcedId | SourcedId | The sourcedId of the object. All objects MUST be identified by a Source Identifier. This is an interoperability System ID for an object. This is the identifier that SYSTEMS will refer to when making API calls, or when needing to identify an object. It is RECOMMENDED that systems are able to map whichever local ids (e.g. database key fields) they use to SourcedId. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII) by certified products. Therefore, as a part of certification, vendors will be required to declare that they will notify customers via documentation or other formal and documented agreement that sourcedIds should never contain PII in general. The sourcedId used to retrieve the demographics data MUST be the same as the sourcedId of the User i.e. the owner of the demographics data. | [1] | SourcedId |
| status | BaseStatusEnum | All objects MUST BE either 'active' or 'tobedeleted'. Something which is flagged 'tobedeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not under any compulsion to do so. In v1.1 the enumeration value of 'inactive' was removed and so for backwards compatibility all such marked objects should be interpreted as 'tobedeleted'. | [1] | N/A |
| dateLastModified | DateTime | All objects MUST be annotated with the dateTime upon which they were last modified. This enables requesters to query for just the latest objects. DateTimes MUST be expressed in the format 'YYYY-MM-DDThh:mm:ss.sssZ' [ISO 8601]. | [1] | N/A |
| birthDate | Date | The date of birth. The format is [ISO 8601] of 'YYYY-MM-DD'. | [0..1] | Demographics |
| sex | GenderEnumExt | The sex of the individual. The permitted values are from an enumerated list. | [0..1] | Demographics |
| americanIndianOrAlaskaNative | TrueFalseEnum | Identification of whether or not the user is an American Indian or Alaska Native ethnicity. | [0..1] | Demographics |
| asian | TrueFalseEnum | Identification of whether or not the user is of Asian ethnicity. | [0..1] | Demographics |
| blackOrAfricanAmerican | TrueFalseEnum | Identification of whether or not the user is black or African American ethnicity. | [0..1] | Demographics |
| nativeHawaiianOrOtherPacificIslander | TrueFalseEnum | Identification of whether or not the user is Native Hawaiian or Other Pacific Islander ethnicity. | [0..1] | Demographics |
| white | TrueFalseEnum | Identification of whether or not the user is of white ethnicity. | [0..1] | Demographics |
| demographicRaceTwoOrMoreRaces | TrueFalseEnum | Identification of whether or not the user has a demographic of two or more race ethnicities. | [0..1] | Demographics |
| hispanicOrLatinoEthnicity | TrueFalseEnum | Identification of whether or not the user is Hispanic or of Latino ethnicity. | [0..1] | Demographics |
| countryOfBirthCode | NormalizedString | The country of birth code. The permitted vocabulary should be defined as part of the adoption and deployment process. See the Implementation Guide [OR-IMPL-12] for more details on how to define/use such a vocabulary. | [0..1] | Demographics |
| stateOfBirthAbbreviation | NormalizedString | The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a person was born. The permitted vocabulary should be defined as part of the adoption and deployment process. See the Implementation Guide [OR-IMPL-12] for more details on how to define/use such a vocabulary. | [0..1] | Demographics |
| cityOfBirth | NormalizedString | The name of the city in which the user was born. | [0..1] | Demographics |
| publicSchoolResidenceStatus | NormalizedString | An indication of the location of a person's legal residence relative to (within or outside) the boundaries of the public school attended and its administrative unit. The permitted vocabulary should be defined as part of the adoption and deployment process. See the Implementation Guide [OR-IMPL-12] for more details on how to define/use such a vocabulary. | [0..1] | Demographics |
| metadata | MetadataGeneral | All Demographics objects MAY be extended using the MetadataGeneral class. This specification is silent on what implementers may consider to be appropriate extensions. The form of the extension is dependent on the binding technology being used. | [0..1] | N/A |
DemographicsSet Class
This is the container for a collection of demographics instances for a message payload. This may be empty if no instances are found that sustain the applied query constraints. The order is not significant.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| demographics | Demographics | The collection of demographics instances. The order is not significant. The corresponding query constraints may result in no instances being returned. | [0..*] | N/A |
Enrollment Class
An enrollment is the name given to an individual taking part in a class. In the vast majority of cases, users will be students learning in a class, or teachers teaching the class. Other roles are also possible.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| sourcedId | SourcedId | The sourcedId of the object. All objects MUST be identified by a Source Identifier. This is an interoperability System ID for an object. This is the identifier that SYSTEMS will refer to when making API calls, or when needing to identify an object. It is RECOMMENDED that systems are able to map whichever local ids (e.g. database key fields) they use to SourcedId. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII) by certified products. Therefore, as a part of certification, vendors will be required to declare that they will notify customers via documentation or other formal and documented agreement that sourcedIds should never contain PII in general. | [1] | N/A |
| status | BaseStatusEnum | All objects MUST BE either 'active' or 'tobedeleted'. Something which is flagged 'tobedeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not under any compulsion to do so. In v1.1 the enumeration value of 'inactive' was removed and so for backwards compatibility all such marked objects should be interpreted as 'tobedeleted'. | [1] | N/A |
| dateLastModified | DateTime | All objects MUST be annotated with the dateTime upon which they were last modified. This enables requesters to query for just the latest objects. DateTimes MUST be expressed in the format 'YYYY-MM-DDThh:mm:ss.sssZ' [ISO 8601]. | [1] | N/A |
| user | UserGUIDRef | The link to the enrolled User i.e. the User 'sourcedId'. | [1] | SourcedIdRef |
| class | ClassGUIDRef | The link to the class on which the user is enrolled i.e. the Class 'sourcedId'. | [1] | N/A |
| school | OrgGUIDRef | The link to the school at which the class is being provided i.e. an Org 'sourcedId'. | [1] | N/A |
| role | EnrolRoleEnumExt | The role of the user for this class in the school e.g teacher, student, etc. This is from an enumerated vocabulary. | [1] | Personal |
| primary | TrueFalseEnum | Applicable only to teachers. Only one teacher should be designated as the primary teacher for a class (this value set as 'true') in the period defined by the begin/end dates. | [0..1] | N/A |
| beginDate | Date | The start date for the enrollment (inclusive). This date must be within the period of the associated Academic Session for the class (Term/Semester/SchoolYear). Use the [ISO 8601] format of 'YYYY-MM-DD'. | [0..1] | N/A |
| endDate | Date | The end date for the enrollment (exclusive). This date must be within the period of the associated Academic Session for the class (Term/Semester/SchoolYear). Use the [ISO 8601] format of 'YYYY-MM-DD'. | [0..1] | N/A |
| metadata | MetadataEnrollment | All Enrollment objects MAY be extended using the MetadataGeneral class. This specification is silent on what implementers may consider to be appropriate extensions. The form of the extension is dependent on the binding technology being used. | [0..1] | N/A |
EnrollmentSet Class
This is the container for a collection of enrollment instances for a message payload. This may be empty if no instances are found that sustain the applied query constraints. The order is not significant.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| enrollments | Enrollment | The collection of enrollment instances. The order is not significant. The corresponding query constraints may result in no instances being returned. | [0..*] | N/A |
GUIDRef Class
This is the generic container for reference to a OneRoster object that has a sourcedId (GUID). This MUST be used for objects that hasve a predefined GUIDRef container.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| href | AnyURI | The URI for the type of object being referenced. | [1] | N/A |
| sourcedId | SourcedId | The globally unique identifier of the object being referenced. | [1] | N/A |
MetadataClass Class
The container for the proprietary extensions in the Class class.
This class can be extended with additional properties.
MetadataCourse Class
The container for the proprietary extensions in the Course class.
This class can be extended with additional properties.
MetadataEnrollment Class
The container for the proprietary extensions in the Enrollment class.
This class can be extended with additional properties.
MetadataGeneral Class
The container for the proprietary extensions.
This class can be extended with additional properties.
MetadataOrg Class
The container for the proprietary extensions for the Org class.
This class can be extended with additional properties.
MetadataUser Class
The container for the proprietary extensions in the User class.
This class can be extended with additional properties.
Org Class
ORG is defined here as a structure for holding organizational information. An ORG might be a school, or it might be a local, statewide, or national entity. ORGs will typically have a parent ORG (up to the national level), and children, allowing a hierarchy to be established. School is defined here as the place where the learning happens. Most commonly this is the data that describes a bricks and mortar building, or, in the case of a virtual school, the virtual school organization. For enrollment and result reporting purposes, little information about this organization is required. A common example of a local organization is a school district.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| sourcedId | SourcedId | The sourcedId of the object. All objects MUST be identified by a Source Identifier. This is an interoperability System ID for an object. This is the identifier that SYSTEMS will refer to when making API calls, or when needing to identify an object. It is RECOMMENDED that systems are able to map whichever local ids (e.g. database key fields) they use to SourcedId. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII) by certified products. Therefore, as a part of certification, vendors will be required to declare that they will notify customers via documentation or other formal and documented agreement that sourcedIds should never contain PII in general. | [1] | N/A |
| status | BaseStatusEnum | All objects MUST BE either 'active' or 'tobedeleted'. Something which is flagged 'tobedeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not under any compulsion to do so. In v1.1 the enumeration value of 'inactive' was removed and so for backwards compatibility all such marked objects should be interpreted as 'tobedeleted'. | [1] | N/A |
| dateLastModified | DateTime | All objects MUST be annotated with the dateTime upon which they were last modified. This enables requesters to query for just the latest objects. DateTimes MUST be expressed in the format 'YYYY-MM-DDThh:mm:ss.sssZ' [ISO 8601]. | [1] | N/A |
| name | NormalizedString | The name of the organization. | [1] | N/A |
| type | OrgTypeEnumExt | The type of organization. This uses a predefined vocabulary. | [1] | N/A |
| identifier | Identifier | Human readable identifier for this org e.g. NCES ID. | [1] | N/A |
| parent | OrgGUIDRef | The 'sourcedId' of the parent organization. | [0..1] | N/A |
| children | OrgGUIDRef | The 'sourcedIds' for the set of child organizations. | [0..*] | N/A |
| metadata | MetadataOrg | All Org objects MAY be extended using the MetadataGeneral class. This specification is silent on what implementers may consider to be appropriate extensions. The form of the extension is dependent on the binding technology being used. | [0..1] | N/A |
OrgGUIDRef Class
This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| type | OrgGUIDRefTypeEnum | The type of object being referenced i.e. an 'org'. | [1] | N/A |
| href | AnyURI | The URI for the type of object being referenced. | [1] | N/A |
| sourcedId | SourcedId | The globally unique identifier of the object being referenced. | [1] | N/A |
OrgSet Class
This is the container for a collection of org instances for a message payload. This may be empty if no instances are found that sustain the applied query constraints. The order is not significant.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| orgs | Org | The collection of org instances. The order is not significant. The corresponding query constraints may result in no instances being returned. | [0..*] | N/A |
ResourceGUIDRef Class
This is the container for reference to a OneRoster 'Resource' object that has an allocated sourcedId (GUID).
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| type | ResourceGUIDRefTypeEnum | The type of object being referenced i.e. a 'resource'. | [1] | N/A |
| href | AnyURI | The URI for the type of object being referenced. | [1] | N/A |
| sourcedId | SourcedId | The globally unique identifier of the object being referenced. | [1] | N/A |
Role Class
The container for one mapping between a role and an org for the user.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| roleType | RoleTypeEnum | Indicates if this role is the primary or secondary role for that org. There MUST be one, and only one, primary role for each org. | [1] | N/A |
| role | RoleEnumExt | The role of the user in the org. The permitted values are from an enumerated list. | [1] | Personal |
| org | OrgGUIDRef | The link to the associated org i.e. the 'sourcedId' for the org. | [1] | N/A |
| userProfile | AnyURI | The identifier for the system/tool/app access account that is relevant to this role in the org. The equivalent UserProfile should exist with a 'profileId' equal to this identifier value. | [0..1] | CredentialsIdRef |
| beginDate | Date | The start date on which the role becomes active (inclusive). | [0..1] | N/A |
| endDate | Date | The end date on which the role becomes inactive (exclusive). | [0..1] | N/A |
SingleAcademicSession Class
This is the container for a single academicSession instance for a message payload.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| academicSession | AcademicSession | The instance of the single academicSession for a message payload. There must be a data payload otherwise an error report payload for the record not being located should be returned. | [1] | N/A |
SingleClass Class
This is the container for a single class instance for a message payload.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| class | Class | The instance of the single class for a message payload. There must be a data payload otherwise an error report payload for the record not being located should be returned. | [1] | N/A |
SingleCourse Class
This is the container for a single course instance for a message payload.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| course | Course | The instance of the single course for a message payload. There must be a data payload otherwise an error report payload for the record not being located should be returned. | [1] | N/A |
SingleDemographics Class
This is the container for a single demographics instance for a message payload.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| demographics | Demographics | The instance of the single demographics for a message payload. There must be a data payload otherwise an error report payload for the record not being located should be returned. | [1] | N/A |
SingleEnrollment Class
This is the container for a single enrollment instance for a message payload.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| enrollment | Enrollment | The instance of the single enrollment for a message payload. There must be a data payload otherwise an error report payload for the record not being located should be returned. | [1] | N/A |
SingleOrg Class
This is the container for a single org instance for a message payload.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| org | Org | The instance of the single org for a message payload. There must be a data payload otherwise an error report payload for the record not being located should be returned. | [1] | N/A |
SingleUser Class
This is the container for a single user instance for a message payload.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| user | User | The instance of the single user for a message payload. There must be a data payload otherwise an error report payload for the record not being located should be returned. | [1] | N/A |
User Class
Users, Teachers and Students are human beings that are teaching or studying in a class respectively. A single User class is used to represent both teachers and students and a role property is used to distinguish a user's natural role.Humans may have relationships with other humans. For example, a student may have parents. The 'agents' attribute allows for relationships between humans to be expressed. Note that these are typically from the point of view of the student - so a student will link to its parents (via the agent attribute). The reverse view MUST also be modeled, so for example, a user of role 'parent' MUST have agents that are of type 'student'. Note: Teachers MUST NOT be set as agents of students i.e. the teaching relationship is covered via enrollments.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| sourcedId | SourcedId | The sourcedId of the object. All objects MUST be identified by a Source Identifier. This is an interoperability System ID for an object. This is the identifier that SYSTEMS will refer to when making API calls, or when needing to identify an object. It is RECOMMENDED that systems are able to map whichever local ids (e.g. database key fields) they use to SourcedId. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII) by certified products. Therefore, as a part of certification, vendors will be required to declare that they will notify customers via documentation or other formal and documented agreement that sourcedIds should never contain PII in general. | [1] | SourcedId |
| status | BaseStatusEnum | All objects MUST BE either 'active' or 'tobedeleted'. Something which is flagged 'tobedeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not under any compulsion to do so. In v1.1 the enumeration value of 'inactive' was removed and so for backwards compatibility all such marked objects should be interpreted as 'tobedeleted'. | [1] | N/A |
| dateLastModified | DateTime | All objects MUST be annotated with the dateTime upon which they were last modified. This enables requesters to query for just the latest objects. DateTimes MUST be expressed in the format 'YYYY-MM-DDThh:mm:ss.sssZ' [ISO 8601]. | [1] | N/A |
| userMasterIdentifier | NormalizedString | The master unique identifier for this user. This is NOT the same as the user's interoperability 'sourcedId'. This should be used to ensure that all of the system identifiers/accounts etc. can be reconciled to the same user. How this identifier is assigned and its format is beyond the scope of this specification. | [0..1] | Identifier |
| username | NormalizedString | The user name assigned to the user. NOTE - This has been kept for backwards compatibility with OneRoster 1.1 and the new 'userProfiles' characteristic SHOULD be used instead. | [0..1] | Personal |
| userIds | UserId | The set of external user identifiers that should be used for this user, if for some reason the sourcedId cannot be used. This might be an active directory id, an LTI id, or some other machine-readable identifier that is used for this person. | [0..*] | N/A |
| enabledUser | TrueFalseEnum | This is used to determine whether or not the record is active in the local system. 'false' denotes that the record is active but system access is curtailed according to the local administration rules. | [1] | N/A |
| givenName | NormalizedString | The given name. Also, known as the first name. | [1] | Personal |
| familyName | NormalizedString | The family name. Also, known as the last name. | [1] | Personal |
| middleName | NormalizedString | The set of middle names. If more than one middle name is needed separate using a space e.g. 'Wingarde Granville'. | [0..1] | Personal |
| preferredFirstName | NormalizedString | The user's preferred first name. This attribute was added in version 1.2. | [0..1] | Personal |
| preferredMiddleName | NormalizedString | The user's preferred middle name(s). This attribute was added in version 1.2. | [0..1] | Personal |
| preferredLastName | NormalizedString | The user's preferred last name. This attribute was added in version 1.2. | [0..1] | Personal |
| pronouns | NormalizedString | The pronoun(s) by which this person is referenced. Examples (in the case of English) include 'she/her/hers', 'he/him/his', 'they/them/theirs', 'ze/hir/hir', 'xe/xir', or a statement that the person's name should be used instead of any pronoun. | [0..1] | Personal |
| roles | Role | The set of roles for each of the orgs to which the user is affilliated. This is expressed as a set of role/org tuples. | [1..*] | N/A |
| userProfiles | UserProfile | The set of system/app/tool profiles for the user. | [0..*] | N/A |
| primaryOrg | OrgGUIDRef | It is possible for a user to be a member of more than one organization and to have one or more roles in an organization. This attribute identifies the 'sourcedId' of the primary organization. | [0..1] | N/A |
| identifier | Identifier | An identifier for the user. NOTE - This characteristic is kept for backwards compatibility with OneRoster 1.1/1.0. The 'userIds' characteristic SHOULD be used instead. | [0..1] | Identifier |
| NormalizedString | The email address for the user. | [0..1] | Identifier | |
| sms | NormalizedString | The SMS number for the user. | [0..1] | Identifier |
| phone | NormalizedString | The phone number for the user. | [0..1] | Identifier |
| agents | UserGUIDRef | The links to other people i.e. User 'sourcedIds'. | [0..*] | SourcedIdRef |
| grades | NormalizedString | Grade(s) for which a user with role 'student' is enrolled. The permitted vocabulary should be defined as part of the adoption and deployment process. See the Implementation Guide [OR-IMPL-12] for more details on how to define/use such a vocabulary. | [0..*] | N/A |
| password | String | A top-level password for the user. Care should be taken when using this field and the password SHOULD be encrypted. | [0..1] | Credentials |
| resources | ResourceGUIDRef | The identifiers (GUIDs) for the set of resources that are to be made available to the user. These are the sourcedIds that should be used for obtaining the metadata about the resources using the OR 1.2 Resources Service [OR-RES-SM-12]. | [0..*] | N/A |
| metadata | MetadataUser | User objects MAY be extended using the MetadataGeneralUser | [0..1] | N/A |
UserGUIDRef Class
This is the container for reference to a OneRoster 'User' object that has an allocated sourcedId (GUID).
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| type | UserGUIDRefTypeEnum | The type of object being referenced i.e. a 'user'. | [1] | N/A |
| href | AnyURI | The URI for the type of object being referenced. | [1] | N/A |
| sourcedId | SourcedId | The globally unique identifier of the object being referenced. | [1] | N/A |
UserId Class
This is the set of external user identifiers that should be used for this user, if for some reason the sourcedId cannot be used. This might be an active directory id, an LTI id, or some other machine-readable identifier that is used for this person.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| type | NormalizedString | The type of identifier. This is no predefined vocabulary. | [1] | Identifier |
| identifier | Identifier | The user identifier. | [1] | Identifier |
UserProfile Class
The container for the information about a User Profile that will provide the user with access to some system, application, tool, etc.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| profileId | AnyURI | The unique identifier for the profile. This does not need to be a globally unique identifier but it must be unique within the scope of the user. | [1] | Identifier |
| profileType | NormalizedString | The type of profile. This should be a human readable label that has some significance in the context of the related system, app, tool, etc. | [1] | N/A |
| vendorId | NormalizedString | The unique identifier for the vendor of the system, tool, app, etc. which requires the use of this profile. | [1] | N/A |
| applicationId | NormalizedString | Identifier for the application associated with the account. The nature, and how this identifier is assigned is not defined by this specification. This may have a value of 'default' to denote this account should be used for default access to all applications related to this vendor. | [0..1] | N/A |
| description | String | A human readable description of the use of the profile. This should not contain any security information for access to the account. | [0..1] | N/A |
| credentials | Credential | The set of credentials that are available for access to this profile. | [0..*] | N/A |
UserSet Class
This is the container for a collection of user instances for a message payload. This may be empty if no instances are found that sustain the applied query constraints. The order is not significant.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| users | User | The collection of user instances. The order is not significant. The corresponding query constraints may result in no instances being returned. | [0..*] | N/A |
imsx_CodeMinor Class
This is the container for the set of code minor status codes reported in the responses from the Service Provider.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| imsx_codeMinorField | imsx_CodeMinorField | Each reported code minor status code. | [1..*] | N/A |
imsx_CodeMinorField Class
This is the container for a single code minor status code.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| imsx_codeMinorFieldName | NormalizedString | This should contain the identity of the system that has produced the code minor status code report. In most cases this will be the target service provider denoted as 'TargetEndSystem'. | [1] | N/A |
| imsx_codeMinorFieldValue | imsx_CodeMinorValueEnum | The code minor status code (this is a value from the corresponding enumerated vocabulary). | [1] | N/A |
imsx_StatusInfo Class
This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider. For the OneRoster Rostering service this object will only be returned to provide information about a failed request i.e. it will NOT be in the payload for a successful request. See Appendix B for further information on the interpretation of the information contained within this class.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| imsx_codeMajor | imsx_CodeMajorEnum | The code major value (from the corresponding enumerated vocabulary). See Appendix B for further information on the interpretation of this set of codes. The permitted vocabulary for the values for the CodeMajor field. | [1] | N/A |
| imsx_severity | imsx_SeverityEnum | The severity value (from the corresponding enumerated vocabulary). See Appendix B for further information on the interpretation of this set of codes. | [1] | N/A |
| imsx_description | String | A human readable description supplied by the entity creating the status code information. | [0..1] | N/A |
| imsx_CodeMinor | imsx_CodeMinor | The set of reported code minor status codes. See Appendix B for further information on the interpretation of this set of codes. | [0..1] | N/A |
Derived Class Descriptions
EnumExtString Class
The data-type that enables an enumerated vocabulary to be extended.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| pattern | String | The regular expression to constrain the structure of the string that MUST be used when creating a new, proprietary, vocabulary term. The term must start with the substring 'ext:'. | [1] | N/A |
Identifier Class
The data-type for a local unique identifier. The scope of the uniqueness of this identifier is determined by the organization assigning it.
SourcedId Class
The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.
Enumerated Vocabulary Descriptions
Union Class Descriptions
ClassTypeEnumExt Class
The data-type for the 'classType' characteristic for a class. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| homeroom | String | The homeroom (form) assigned to the class. | [1] | N/A |
| scheduled | String | The class as assigned in the timetable. | [1] | N/A |
| pattern | String | The regular expression to constrain the structure of the string that MUST be used when creating a new, proprietary, vocabulary term. The term must start with the substring 'ext:'. | [1] | N/A |
EnrolRoleEnumExt Class
The data-type for the 'role' characteristic for an enrollment. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| pattern | String | The regular expression to constrain the structure of the string that MUST be used when creating a new, proprietary, vocabulary term. The term must start with the substring 'ext:'. | [1] | N/A |
| administrator | String | Someone who has administrative responsibility for the Class. | [1] | N/A |
| proctor | String | Exam proctor. | [1] | N/A |
| student | String | A student at a organization e.g. School. | [1] | N/A |
| teacher | String | A Teacher at organization e.g. School. | [1] | N/A |
GenderEnumExt Class
The data-type for the 'gender' characteristic for a user. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| male | String | Gender of Male. | [1] | N/A |
| female | String | Gender of Female. | [1] | N/A |
| unspecified | String | Unspecified as no data entry for this field has been made. Value added in OR 1.2. | [1] | N/A |
| other | String | A gender that is known but which is not either Male or Female. Value added in OR 1.2. | [1] | N/A |
| pattern | String | The regular expression to constrain the structure of the string that MUST be used when creating a new, proprietary, vocabulary term. The term must start with the substring 'ext:'. | [1] | N/A |
OrgTypeEnumExt Class
The data-type for the 'type' characteristic for an org. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| pattern | String | The regular expression to constrain the structure of the string that MUST be used when creating a new, proprietary, vocabulary term. The term must start with the substring 'ext:'. | [1] | N/A |
| department | String | Denotes a department. A department may be a subset in a school or a set of schools. | [1] | N/A |
| district | String | Denotes a school district. | [1] | N/A |
| local | String | Denotes a local organization. V1.0 instances used this value to identify districts. | [1] | N/A |
| national | String | Denotes a national level organization. | [1] | N/A |
| school | String | Denotes a school. This is the unit of assignment for classes and enrollments. | [1] | N/A |
| state | String | Denotes a state level organization. | [1] | N/A |
RoleEnumExt Class
The data-type for the 'role' characteristic for a user. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| pattern | String | The regular expression to constrain the structure of the string that MUST be used when creating a new, proprietary, vocabulary term. The term must start with the substring 'ext:'. | [1] | N/A |
| aide | String | Someone who provides appropriate aid to the user but NOT also one of the other roles. | [1] | N/A |
| counselor | String | Someone who has care/pastoral supervision responsibility for one or more people. | [1] | N/A |
| districtAdministrator | String | The district administrator will have responsibility for systems within the district sites and/or for system that are accessed by the schools in the district. | [1] | N/A |
| guardian | String | Guardian of the user and NOT the Mother or Father. May also be a Relative. | [1] | N/A |
| parent | String | Mother or father of the user. | [1] | N/A |
| principal | String | The schools' Principal or other very senior academic administrator in the School. The principal will have access to confidential/private data about teachers, etc. | [1] | N/A |
| proctor | String | Exam proctor. | [1] | N/A |
| relative | String | A relative of the user and NOT the Mother or Father. May also be the Guardian. | [1] | N/A |
| siteAdministrator | String | Site administrator in the organization e.g. School. The site administrator will have responsibility for all of the systems at the site. | [1] | N/A |
| student | String | A student at a organization e.g. School. | [1] | N/A |
| systemAdministrator | String | System administrator in the organization e.g. School. The system administrator will have responsibility for one of more systems at the site. | [1] | N/A |
| teacher | String | A Teacher at organization e.g. School. | [1] | N/A |
SessionTypeEnumExt Class
The data-type for the type of academic session. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.
| Attribute | Type | Description | Multiplicity | Privacy |
|---|---|---|---|---|
| gradingPeriod | String | Denotes a period over which some grade/result is to be awarded. | [1] | N/A |
| semester | String | Denotes a semester period. Typically there a two semesters per schoolYear. | [1] | N/A |
| schoolYear | String | Denotes the school year. | [1] | N/A |
| term | String | Denotes a term period. Typically there are three terms per schoolYear. | [1] | N/A |
| pattern | String | The regular expression to constrain the structure of the string that MUST be used when creating a new, proprietary, vocabulary term. The term must start with the substring 'ext:'. | [1] | N/A |
Privacy Model
Identification of the set of classes and their set of properties that MAY contain information that has privacy or privacy-related implications. Each propery is identified in terms of the type of privacy;
Privacy Implications
All of the privacy implications contained within this Information Model are described in this Section. All of the corresponding concepts and methods for these privacy annotations are defined in the Privacy Framework.
- Accessibility
- denotes information about the accessibility personal needs and preferences of the user
- Analytics
- denotes information that will be used to support the creation of learning analytics
- Container
- denotes that the child attributes have privacy-sensitive information
- Credentials
- denotes access control information for the use e.g. password, private key, etc.
- CredentialsIdRef
- denotes reference to/use of an identifier to credentials information for the user
- Demographics
- denotes information about the demographics of the user e.g. ethnicity, gender, etc.
- Extension
- denotes that proprietary information can be included and so this MAY contain privacy-sensitive information
- Financial
- denotes that the information is of a financial nature e.g. bank account, financial aid status, etc.
- Identifier
- denotes a unique identifier that has been assigned, by some third party, to the user e.g. passport number, social security number, etc.
- IdentifierRef
- denotes reference to/use of a unique identifier that has been assigned, by some third party, to the user
- Insurance/Assurance
- denotes that the information is about the insurance life-assurance nature, e.g. type of insurance, etc.
- Legal
- denotes that the information is of a legal or judicial nature e.g. Will, prison record, etc.
- Medical/Healthcare
- denotes that the information is of a medical, or healthcare-related nature e.g. allergies, blood-type, mobility needs, etc.
- N/A
- denotes that there are NO PRIVACY IMPLICATIONS for this attribute (this is the default setting)
- Other
- denotes privacy sensitive information that is NOT covered by one of the other categories
- Qualification/Certification
- denotes that the information is about education qualifications, skill-set certifications, microcredentials, etc.
- Personal
- denotes personal information about the user e.g. name, address, etc.
- SourcedId
- denotes the interoperability unique identifier that has been assigned and MUST be present for the correct usage of the corresponding 1EdTech specification
- SourcedIdRef
- denotes reference to/use of the interoperability unique identifier, sourcedId, to link/point to an associated 1EdTech object
Confidentiality Level
All of the privacy classification of the exchanged payloads are described in this Section.
- unrestricted
- there are no privacy concerns (this is the default value).
- normal
- denotes that privacy sensitive data could be included and so all best practices to secure this data should be used.
- restricted
- denotes that some of the data is more sensitive than usual or that many attributes information that when used together create increased vulnerability for identification of the associated individual or group.
- veryrestricted
- denotes that the request could contain very sensitive privacy data. Depending on the capabilities of the Provider this very sensitive data may be obfuscated or may not even be present
Extending and Profiling the Service
This Section is NON-NORMATIVE.
Extending the Specification
Proprietary extensions of the service are based upon two approaches:
The extension of the data models being manipulated by the current set of operations; The inclusion of new operations to support new proprietary functionality. It is NOT permitted to change the behavior of the current set of operations. Such changes MUST be supported by the creation of new operations.
Proprietary Operations
The definition of new operations should follow the same format as adopted herein. The new operations should be defined using a new interface type. Every operation must result in the return of a status code that describes the final state of the request on the target end system.
An example of creating such an extension is given in the accompanying Best Practices document 1EdTech OneRoster 1.2 Implementation Guide Final Release 1.0.
Proprietary Data Elements
It is recognized that implementers may wish to extend the specification. The preferred mechanism for doing this is for implementers to use an extension space within the OneRoster data model, and then set their parsers to read those extension attributes. Extensions are ONLY permitted using the 'metadata' attribute within the 'Base' class (see Sub-section 5.1.1 for more details).
Proprietary Vocabulary Terms
In this version the ability to extend some of the enumerated vocabularies has been added: currently, ONLY the 'ClassTypeEnum', 'GenderEnum', 'OrgTypeEnum', 'RoleEnum' and 'SessionTypeEnum' vocabularies MAY be extended. Each proprietary term must start with the characters 'ext:'.
Profiling the Specification
This Service can be profiled. In general, Profiling is used to:
- Refine which Interfaces are used and which operations are supported for each Interface;
- Refine the data models by increasing the constraints on the base definitions.
Valid Profiles must be restrictive i.e. optional features can be removed or constraints increased but new features must not be added. A Profile of this service is made by annotating the UML supplied with the documentation for the specification.
It is strongly recommended that a profile of this specification is undertaken either by, or with the close support, of 1EdTech. However, no matter who is responsible for creating the profile artefacts (documents, XSDs, etc.), it is strongly recommended that the 1EdTech specification tools are used. This will ensure that the artefacts are consistent with the base specifications and that useful support documentation is automatically produced e.g. creation of a document that summarises the differences between the base specification and the profile. Organizations wishing to produce a profile of this specification should contact the 1EdTech VP of Operations at: operations@1edtech.org.
IP Disclosures
The following participating organizations have made explicit license commitments to this specification:
| Organization Name | Date election made | Necessary claims | Type |
|---|---|---|---|
| D2L Corporation | 2022-07-21 | No | RF RAND (Required & Optional Elements) |
| Gwinnett County Public Schools | 2022-07-22 | No | RF RAND (Required & Optional Elements) |
| Infinite Campus Inc | 2022-07-25 | No | RF RAND (Required & Optional Elements) |
| Microsoft Corporation | 2022-08-08 | No | RF RAND (Required & Optional Elements) |
| SameGoal Inc | 2022-07-21 | No | RF RAND (Required & Optional Elements) |
| Anthology Inc. | 2022-08-10 | No | RF RAND (Required & Optional Elements) |
List of Contributors
The following individuals contributed to the development of this document:
| Name | Affiliation | Role |
|---|---|---|
| Colin Smythe | 1EdTech (UK) | |
| Matt Richards | Infinite Campus (USA) | |
| Phil Nicholls | 1EdTech (UK) | |
| Upendra Penegalapati | Pearson (USA) | |
| Mark Walls | Gwinnett County Schools (USA) | |
| Tom Clark | Pearson (USA) | |
| Eric Adams | Instructure (USA) | |
| Tom Ingram | Escambia County School District (USA) | |
| Richard Heim | LearningMate (USA) | |
| Linda Feng | Unicon (USA) | |
| Barry Brahier | Infinite Campus (USA) | |
| Viktor Haag | Desire2Learn (Canada) | |
| Oxana Jurosevic | Instructure (USA) | |
| Wendy Riedy | Microsoft (USA) | |
| Kurt Rompot | Pearson (USA) | |
| David Mayes | Gwinnett County Schools (USA) | |
| Patrick Porter | Houston ISD (USA) | |
| Joshua McGhee | 1EdTech (USA) | |
| James Perreault | FLVS (USA) | |
| Padraig O'hiceadha | HMH (UK) | |
| Konrad Stimeling | K12 Inc (USA) | |
| Matt Vella | Schoology (USA) | |
| TJ Vering | Microsoft (USA) | |
| Gabrielle Sanderson | Illuminate Education (USA) | |
| Jong Kim | Pearson (USA) | |
| Andrew Kuritzky | Edmentum (USA) | |
| Aditya Subramaniam | Schoology (USA) |
Changelog
Changelog entries are not listed yet.
Revision History
| Version | Doc Version | Date | Comments |
|---|---|---|---|
| Final | 2015-07-01 | First release of the OneRoster Service specification. | |
| Final | 2016-11-01 | This second release includes new operations to create and delete single objects, support for the exchange of Result, LineItem, Category and Resource objects. | |
| Final | 2022-09-19 | This is the first release of the OneRoster 1.2: Rostering Service as a standalone document. A number of data models changes have been made and the use of OAuth 2 has been made mandatory. No changes have been made to the set of service operations. | |
| Final | 2023-06-01 | This is an editorial revision of the specification. The changes from document version 1.0 are: TBD. |
Related resources
Data Model
Service Model
The service model is available as an OpenAPI document at the following URL:
- One Roster Rostering Service 1.2 OpenAPI 3.0 definition file (JSON)
- One Roster Rostering Service 1.2 OpenAPI 3.0 definition file (YAML)
Skill
The skill model is available as a JSON file at the following URL:
IPR and Distribution Notices
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.
1EdTech takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on 1EdTech's procedures with respect to rights in 1EdTech specifications can be found at the 1EdTech Intellectual Property Rights web page: https://www.1edtech.org/ip.
Copyright © 1EdTech Consortium, Inc. All Rights Reserved.
Use of this specification to develop products or services is governed by the license with 1EdTech found on the 1EdTech website: https://www.1edtech.org/standards/specification-license.
Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.
The limited permissions granted above are perpetual and will not be revoked by 1EdTech or its successors or assigns.
THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.
Trademark information: https://www.1edtech.org/about/legal/trademarks