Final

OneRoster Rostering Service REST/JSON Binding

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.

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

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:

This OR 1.2 Rostering Service provides the ability to manage the exchange of information about people, classes, courses, organizations and enrollments. The service description includes the definition of the data formats that are exchanged using a set of service operations. In this document the binding implementation as a REST/JSON service is described.

Introduction

This Section is NOT NORMATIVE.

Scope and Context

This document is the OneRoster 1.2 Rostering Service REST/JSON Binding and as such it is used as the basis for the implementing the OR Rostering Service Model. The key related documents are:

The OR Rostering service model and this REST/JSON binding is described using the Unified Modeling Language (UML) based upon the 1EdTech Global 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 learning standards and competencies definitions. 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.

Key artefacts produced as part of the REST/JSON binding description are the associated OpenAPI files based upon the OpenAPI Specifications version 2 OpenAPI Specification (version 2) and version 3 OpenAPI Specification (version 3).

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 attribute 'preferredName' has 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 'userMasterId' attribute has been added to the 'User' class enable the assignment of a definitive globally unique 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 'masterProfiles' 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;
  • A Service Provider is REQUIRED to make a localized OpenAPI file available to enable Service Discovery 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

REST Endpoints

An explanation of the relationship between the logical service operations (as defined in the OneRoster Rostering Service Model) and how these are realised as the corresponding set of REST endpoints (including the set of query parameters that are permitted);

Mapping of the Service Operations to the REST Endpoints

Service Call REST Endpoint HTTP Verb
getAcademicSession /academicSessions/{sourcedId} GET
getAllAcademicSessions /academicSessions GET
getAllClasses /classes GET
getAllCourses /courses GET
getAllDemographics /demographics GET
getAllEnrollments /enrollments GET
getAllGradingPeriods /gradingPeriods GET
getAllOrgs /orgs GET
getAllSchools /schools GET
getAllStudents /students GET
getAllTeachers /teachers GET
getAllTerms /terms GET
getAllUsers /users GET
getClass /classes/{sourcedId} GET
getClassesForCourse /courses/{courseSourcedId}/classes GET
getClassesForSchool /schools/{schoolSourcedId}/classes GET
getClassesForStudent /students/{studentSourcedId}/classes GET
getClassesForTeacher /teachers/{teacherSourcedId}/classes GET
getClassesForTerm /terms/{termSourcedId}/classes GET
getClassesForUser /users/{userSourcedId}/classes GET
getCourse /courses/{sourcedId} GET
getCoursesForSchool /schools/{schoolSourcedId}/courses GET
getDemographics /demographics/{sourcedId} GET
getEnrollment /enrollments/{sourcedId} GET
getEnrollmentsForClassInSchool /schools/{schoolSourcedId}/classes/{classSourcedId}/enrollments GET
getEnrollmentsForSchool /schools/{schoolSourcedId}/enrollments GET
getGradingPeriod /gradingPeriods/{sourcedId} GET
getGradingPeriodsForTerm /terms/{termSourcedId}/gradingPeriods GET
getOrg /orgs/{sourcedId} GET
getSchool /schools/{sourcedId} GET
getStudent /students/{sourcedId} GET
getStudentsForClass /classes/{classSourcedId}/students GET
getStudentsForClassInSchool /schools/{schoolSourcedId}/classes/{classSourcedId}/students GET
getStudentsForSchool /schools/{schoolSourcedId}/students GET
getTeacher /teachers/{sourcedId} GET
getTeachersForClass /classes/{classSourcedId}/teachers GET
getTeachersForClassInSchool /schools/{schoolSourcedId}/classes/{classSourcedId}/teachers GET
getTeachersForSchool /schools/{schoolSourcedId}/teachers GET
getTerm /terms/{sourcedId} GET
getTermsForSchool /schools/{schoolSourcedId}/terms GET
getUser /users/{sourcedId} GET

API Root URL and Versioning

All of the paths MUST also contain, as the base of the path, excluding the host name, the string: "/ims/oneroster/rostering/v1p2".

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.

Request

GET /ims/oneroster/rostering/v1p2/academicSessions/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this academic session. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleAcademicSession No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllAcademicSessions Operation

To read, get, a collection of academic sessions i.e. all academic sessions.

Request

GET /ims/oneroster/rostering/v1p2/academicSessions?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json AcademicSessionSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllClasses Operation

To read, get, a collection of classes i.e. all classes.

Request

GET /ims/oneroster/rostering/v1p2/classes?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json ClassSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllCourses Operation

To read, get, a collection of courses i.e. all courses.

Request

GET /ims/oneroster/rostering/v1p2/courses?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json CourseSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllDemographics Operation

To read, get, a collection of demographics i.e. all demographics.

Request

GET /ims/oneroster/rostering/v1p2/demographics?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json DemographicsSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllEnrollments Operation

To read, get, a collection of enrollments i.e. all enrollments.

Request

GET /ims/oneroster/rostering/v1p2/enrollments?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json EnrollmentSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllGradingPeriods Operation

To read, get, a collection of grading periods i.e. all academic sessions.

Request

GET /ims/oneroster/rostering/v1p2/gradingPeriods?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json AcademicSessionSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllOrgs Operation

To read, get, a collection of orgs i.e. all orgs.

Request

GET /ims/oneroster/rostering/v1p2/orgs?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json OrgSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllSchools Operation

To read, get, a collection of schools i.e. all schools.

Request

GET /ims/oneroster/rostering/v1p2/schools?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json OrgSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllStudents Operation

To read, get, a collection of students i.e. all students.

Request

GET /ims/oneroster/rostering/v1p2/students?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json UserSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllTeachers Operation

To read, get, a collection of teachers i.e. all teachers.

Request

GET /ims/oneroster/rostering/v1p2/teachers?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json UserSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllTerms Operation

To read, get, a collection of terms i.e. all terms.

Request

GET /ims/oneroster/rostering/v1p2/terms?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json AcademicSessionSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

getAllUsers Operation

To read, get, a collection of users i.e. all users (including students and teachers).

Request

GET /ims/oneroster/rostering/v1p2/users?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json UserSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/classes/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this class. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleClass No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/courses/{courseSourcedId}/classes?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
courseSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific course. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json ClassSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/classes?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
schoolSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific school. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json ClassSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/students/{studentSourcedId}/classes?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
studentSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific student. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json ClassSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/teachers/{teacherSourcedId}/classes?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
teacherSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific teacher. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json ClassSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/terms/{termSourcedId}/classes?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
termSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific term. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json ClassSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/users/{userSourcedId}/classes?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
userSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific user. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json ClassSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/courses/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this course. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleCourse No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/courses?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
schoolSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the school. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json CourseSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/demographics/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this user demographics. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleDemographics No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/enrollments/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this enrollment. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleEnrollment No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/classes/{classSourcedId}/enrollments?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
schoolSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the school. Required
classSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the class. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json EnrollmentSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/enrollments?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
schoolSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific school. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json EnrollmentSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/gradingPeriods/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this grading period. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleAcademicSession No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/terms/{termSourcedId}/gradingPeriods?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
termSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific term. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json AcademicSessionSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/orgs/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this org. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleOrg No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this school. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleOrg No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/students/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this student. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleUser No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/classes/{classSourcedId}/students?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
classSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the class. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json UserSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/classes/{classSourcedId}/students?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
schoolSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific school. Required
classSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the class. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json UserSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/students?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
schoolSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific school. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json UserSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/teachers/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this teacher. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleUser No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/classes/{classSourcedId}/teachers?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
classSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the class. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json UserSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/classes/{classSourcedId}/teachers?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
schoolSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific school. Required
classSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the class. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json UserSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/teachers?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
schoolSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific school. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json UserSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/terms/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this term. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleAcademicSession No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/schools/{schoolSourcedId}/terms?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}&fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
schoolSourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for the specific school. Required
limit (parameter.type?lower_case) PositiveInteger To define the download segmentation value i.e. the maximum number of records to be contained in the response. Optional
offset (parameter.type?lower_case) NonNegativeInteger The number of the first record to be supplied in the segmented response message. Optional
sort (parameter.type?lower_case) String Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard. Optional
orderBy (parameter.type?lower_case) OrderByEnum The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard. Optional
filter (parameter.type?lower_case) String The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard. Optional
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json AcademicSessionSet No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required 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.

Request

GET /ims/oneroster/rostering/v1p2/users/{sourcedId}?fields={fields}

Request header, path, and query parameters

Parameter Parameter Type Description Required
sourcedId (parameter.type?lower_case) SourcedId The unique identifier, GUID, for this user. Required
fields (parameter.type?lower_case) String To identify the range of fields that should be supplied in the response message. Optional

Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality
DEFAULT application/json imsx_StatusInfo No Description Required N/A
200 application/json SingleUser No Description Required N/A
400 application/json imsx_StatusInfo No Description Required N/A
401 application/json imsx_StatusInfo No Description Required N/A
403 application/json imsx_StatusInfo No Description Required N/A
404 application/json imsx_StatusInfo No Description Required N/A
405 application/json imsx_StatusInfo No Description Required N/A
429 application/json imsx_StatusInfo No Description Required N/A
422 application/json imsx_StatusInfo No Description Required N/A
500 application/json imsx_StatusInfo No Description Required N/A

Service Discovery

A Service Provider MUST provide a localized version of the OpenAPI file (version 3 JSON file format) to enable service discovery [Security, 21].

This file MUST be located at: "...hostname.../ims/oneroster/rostering/v1p2/discovery/".

The OpenAPI file MUST have the name: "onerosterv1p2rostersservice_openapi3_v1p0.json".

Therefore the full URL for this service discovery file is: ...hostname.../ims/oneroster/rostering/v1p2/discovery/onerosterv1p2rostersservice_openapi3_v1p0.json

Using the Endpoint Parameters

This Section is NOT NORMATIVE.

Pagination

For requests of collections i.e. the response for the 'getAllUsers()' call, there is a danger of data overload. To avoid this, implementations should adopt a pagination mechanism. Pagination is controlled via two parameters that are appended to the request:

  • 'limit' - the number of results to return (the default value is 100);
  • 'offset' - the index of the first record to return (zero index and so the default value is 0).

An example of a request to return the first 10 resources in a collection of students:

    GET https://imsglobal.org/ims/oneroster/rostering/v1p2/users?limit=10

An example of a request to return the second 10 users in a collection of users:

    GET https://imsglobal.org/ims/oneroster/rostering/v1p2/users?limit=10&offset=10

It is RECOMMENDED that implementations pass the total resource count in collection back to the requester. This MUST be provided in the custom HTTP header: X-Total-Count.

It is RECOMMENDED that implementers pass back next, previous, first and last links in the HTTP Link Header.

Consider the requests for the example where 503 resources exist in the collection. The pagination is in units of 10.

Link:
    <https://imsglobal.org/ims/oneroster/rostering/v1p2/users?limit=10&offset=20>; rel="next",
    <https://imsglobal.org/ims/oneroster/rostering/v1p2/users?limit=3&offset=500>; rel="last",
    <https://imsglobal.org/ims/oneroster/rostering/v1p2/users?limit=10&offset=0>; rel="first",
    <https://imsglobal.org/ims/oneroster/rostering/v1p2/users?limit=10&offset=0>; rel="prev"

Sorting

It should be possible for collections, i.e. the response for the 'getAllUsers()' call etc. to be returned in a sorted order. It should be possible to sort the collection based on any single data element in the core description of the resource. Sort requests MUST make use of the reserved word "sort" (?sort= data_field), and optionally the reserved word orderBy for which:

  • 'data_field' MUST be used in the request to ask for the collection to be sorted on data field. The form of ordering is implementation dependent if the 'orderBy' attribute is not used;
  • 'orderBy' MAY be used in the request to ask for the collection to be ordered ascending (asc) or descending (desc).

An example of a request to ask for a list of users sorted into ascending lastName order:

    GET https://imsglobal.org/ims/oneroster/rostering/v1p2/users?sort=lastName&orderBy=asc

Sorting should conform to the use of the Unicode Collation Algorithm UNICODE Collation Algorithm Version 9.0 when using the relevant comparisons.

If the consumer requests that the data is to be sorted by a non-existent field, data MAY be returned in the service provider's default sort order or an error response MAY be returned.

When sorting/ordering is requested on a property that is an array, the first value in the array is used as the basis of the sorting/ordering.

To sort/order on the properties of nested objects, (for example, with metadata properties), a dot-notation approach MUST be used. The format for this is:

    ?sort=<Nested_Object>.<Property>

Filtering

For the calls that request collections e.g. 'getAllUsers()' call, it should be possible to filter collections for elements matching a certain criteria. It should be possible to filter collections based on any data element in the core description of the resource.Filter requests MUST take the form:

    ?filter=<data_field><predicate><value>

or

    ?filter=<data_field><predicate><value><logical><data_field><predicate><value>

The data fields that can be used are those present in the class definition being filtered. So for example in 'users', it MUST be possible to filter on: 'firstName', 'lastName', 'dateLastModified', etc.

Predicates MUST be chosen from those listed below:

  • Equals is represented by '='
  • Not Equal is represented by '!='
  • Greater Than is represented by '>'
  • Greater Than or Equal is represented by '>='
  • Lesser Than is represented by '<'
  • Lesser Than or Equal is represented by '<='
  • Contains is represented by '~'

Values MUST be enclosed within single quotes and they MUST be handled as case insensitive. When the response is returned it is the receiving system that should consider whether or not case-sensitivity is important.

The parameters allow more complex queries to be created. For version 1.2, it is RECOMMENDED that logical operations are limited to " AND " and " OR " (note the surrounding white space at each side) and that there is only one such operator used in any filter i.e. a single 'AND' or a single 'OR' in the filter. A single white space must occur before and after the parameter.

To query on the properties of nested objects, (for example, with metadata properties), a dot-notation approach MUST be used. The format for this is:

    ?filter=<Nested_Object>.<Property>

Note then when querying on metadata, the property is loosely typed. An example or a request to find users with a 'lastName' of 'Smythe' is:

    GET https://imsglobal.org/ims/oneroster/rostering/v1p2/users?filter=lastName='Smythe'

URL encoded as:

    GET https://imsglobal.org/ims/oneroster/rostering/v1p2/users?filter=lastName%3D%27Smythe%27

Filter queries MUST be URL encoded.

An example of a complex query for all users with a lastName='Smythe' AND dateLastModified>'2016-12-12T00:00:00Z' is:

    GET https://imsglobal.org/ims/oneroster/rostering/v1p2/users?filter=lastName%3D%27Smythe%27%20AND%20dateLastModified%3E%272016%3D12%3D12T00%3A00%3A00Z%27

When filtering on objects that are arrays the application of the filter depends on the nature of the comparison. So in the case of filtering on the 'preferredName' field when the value of the field is 'name1,name2,name3' the following filters would return:

  • ?filter=preferredName='name1,name2' - record not returned;
  • ?filter=preferredName='name1,name2,name3' - record returned;
  • ?filter=preferredName~'name1" - record returned;
  • ?filter=preferredName~'name1,name2' - record returned;
  • ?filter=preferredName~'name1,name2,name3' - record returned.

This means filtering using the '=' has 'AND' semantics and the '~' has 'OR' semantics. Filtering rules should conform to the use of the Unicode Collation Algorithm UNICODE Collation Algorithm Version 9.0 when using the relevant comparisons.

If the consumer requests that data be filtered by a non-existent field, NO data is returned and the server must provide the associated transaction status code information of:

  • CodeMajor value is 'failure';
  • Severity value is 'error';
  • CodeMinor value is 'invalid_filter_field'.

Field Selection

For the read collection calls, such as 'getAllUsers()', it should be possible for requesters to select the range of fields to be returned. By default, all mandatory and optional fields from the core description of the resource MUST be returned. If any fields are specified in the request then the implementation should return those fields AND ONLY those fields i.e. the multiplicity rules for an element are overridden. Any field or fields from the Data Model MAY be requested.

Field selection request MUST make use of the reserved word 'fields'. The value of fields is a comma delimited list of the fields to return. An example of a request message to ask for a list of Users returning only the 'firstname' and 'lastname':

    GET https://imsglobal.org/ims/oneroster/rostering/v1p2/users?fields=firstname,lastname

If the consumer requests that data be selected using non-existent field, ALL data for the record is returned. If the consumer requests that data be selected using a blank field the request will be treated as an invalid request. The server must provide the associated transaction status code information of:

  • CodeMajor value is 'failure';
  • Severity value is 'error';
  • CodeMinor value is 'invalid_selection_field'.

Security Framework

This Section is NORMATIVE.

The information in this section is taken from the IMS Security Framework 1EdTech Security Framework 1.1 Final Release: that document describes the security approaches to be adopted in all IMS specifications.

Transport Security

As the service will be exposing personal data related to students and their grades, it is important that only authorized users have access to that data. Further, data exchanges should be encrypted to ensure that packet sniffing cannot be used to read the data in transit.

All Requests and Responses MUST be sent using Transport Layer Security (TLS). Exchange of the signed certificates for endpoints between clients and servers is beyond the scope of this specification. Implementers of clients and servers are advised to look at the various 3rd party certificate signing services in order to obtain signed certificates.

Support for TLS 1.2 and/or TLS 1.3 is REQUIRED and SSL MUST NOT be used.

Authorization

The use of OAuth 2.0 Client Credentials with the Bearer Token obtained using the mechanism described in [RFC 6749] (Section 4.4) is REQUIRED. Details of this are given in the IMS Security Framework [Security, 21].

Authorization will use the OAuth 2.0 Client Credentials Grant mechanism. In this mechanism the client can request an access token using only its client credentials (using the consumer key and secret information) when the client is requesting access to the protected resources under its control, or those of another resource owner that have been previously arranged with the authorization server. In this approach the client issues a client authentication request and receives in response an access token. Issuing of an access token is defined in Section 5 of [RFC 6749].

The request for an access token, including three scopes (scopename1, scopename2 and scopenamex) takes the form of (this uses TLS):

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&scope=scopename1%20scopename2%20scopenamex

The inclusion of scopes is REQUIRED and the set of scopes available for this service are defined in the following subsection. The authorization encoding is produced using the consumer key and secret. Note that the request for an access token MAY use a HTTP GET request.

The authorization encoding is produced using the consumer key and secret. Success results in the granting of the access token with a response of:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
    "access_token" : "2YotnFZFEjr1zCsicMWpAA",
    "token_type" : "bearer",
    "expires_in" : 3600,
    "scope" : "scopename1 scopename2 scopenamex"
}

The recommended default value for the "expires_in" is 3600s. The authorization server MUST provide the scopes which are made available (either all or a subset of the scopes supplied in the request).

The client utilizes the access token to authenticate with the resource using the HTTP "Authorization" request header field [RFC 2617] with an authentication scheme defined by the specification of the access token type used, such as [RFC 6750]. An example of the use of the bearer token is:

GET /resource/1 HTTP/1.1
Host: provider.example.com
Authorization: Bearer 2YotnFZFEjr1zCsicMWpAA

NOTE: This exchange assumes that TLS is used to secure the link.

Scopes

https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly

Operation HTTP Verb Endpoint
getAllClasses GET /classes
getClassesForCourse GET /courses/{courseSourcedId}/classes
getTeacher GET /teachers/{sourcedId}
getSchool GET /schools/{sourcedId}
getClassesForSchool GET /schools/{schoolSourcedId}/classes
getCourse GET /courses/{sourcedId}
getGradingPeriod GET /gradingPeriods/{sourcedId}
getCoursesForSchool GET /schools/{schoolSourcedId}/courses
getTeachersForSchool GET /schools/{schoolSourcedId}/teachers
getUser GET /users/{sourcedId}
getAllTerms GET /terms
getTeachersForClassInSchool GET /schools/{schoolSourcedId}/classes/{classSourcedId}/teachers
getAllOrgs GET /orgs
getEnrollmentsForClassInSchool GET /schools/{schoolSourcedId}/classes/{classSourcedId}/enrollments
getClassesForTerm GET /terms/{termSourcedId}/classes
getGradingPeriodsForTerm GET /terms/{termSourcedId}/gradingPeriods
getAllSchools GET /schools
getAllEnrollments GET /enrollments
getAllUsers GET /users
getClassesForStudent GET /students/{studentSourcedId}/classes
getAcademicSession GET /academicSessions/{sourcedId}
getAllCourses GET /courses
getStudent GET /students/{sourcedId}
getStudentsForClassInSchool GET /schools/{schoolSourcedId}/classes/{classSourcedId}/students
getAllTeachers GET /teachers
getClassesForTeacher GET /teachers/{teacherSourcedId}/classes
getClassesForUser GET /users/{userSourcedId}/classes
getTerm GET /terms/{sourcedId}
getAllAcademicSessions GET /academicSessions
getStudentsForClass GET /classes/{classSourcedId}/students
getEnrollment GET /enrollments/{sourcedId}
getClass GET /classes/{sourcedId}
getAllStudents GET /students
getStudentsForSchool GET /schools/{schoolSourcedId}/students
getEnrollmentsForSchool GET /schools/{schoolSourcedId}/enrollments
getAllGradingPeriods GET /gradingPeriods
getTermsForSchool GET /schools/{schoolSourcedId}/terms
getOrg GET /orgs/{sourcedId}
getTeachersForClass GET /classes/{classSourcedId}/teachers

https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly

Operation HTTP Verb Endpoint
getAllClasses GET /classes
getTeacher GET /teachers/{sourcedId}
getSchool GET /schools/{sourcedId}
getCourse GET /courses/{sourcedId}
getGradingPeriod GET /gradingPeriods/{sourcedId}
getUser GET /users/{sourcedId}
getTerm GET /terms/{sourcedId}
getAllTerms GET /terms
getAllAcademicSessions GET /academicSessions
getAllOrgs GET /orgs
getEnrollment GET /enrollments/{sourcedId}
getClass GET /classes/{sourcedId}
getAllSchools GET /schools
getAllEnrollments GET /enrollments
getAllStudents GET /students
getAllUsers GET /users
getAcademicSession GET /academicSessions/{sourcedId}
getAllCourses GET /courses
getStudent GET /students/{sourcedId}
getAllGradingPeriods GET /gradingPeriods
getAllTeachers GET /teachers
getOrg GET /orgs/{sourcedId}

https://purl.imsglobal.org/spec/or/v1p2/scope/roster-demographics.readonly

Operation HTTP Verb Endpoint
getDemographics GET /demographics/{sourcedId}
getAllDemographics GET /demographics

Data Model

Data Classes

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
email 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

Enumeration Classes

AcadSessionGUIDRefTypeEnum Enumeration

This is the fixed enumeration for a GUIDRef that points to an 'Academic Session'.

Attribute Type Description Multiplicity Privacy
academicSession String An object that is an 'Academic Session'. [1] N/A

BaseStatusEnum Enumeration

The set of permitted values for the type of status of a record.

Attribute Type Description Multiplicity Privacy
active String An active record. [1] N/A
tobedeleted String Denotes that it is safe to delete the record. [1] N/A

ClassGUIDRefTypeEnum Enumeration

This is the fixed enumeration for a GUIDRef that points to a 'Class'.

Attribute Type Description Multiplicity Privacy
class String An object that is a 'Class'. [1] N/A

ClassTypeEnum Enumeration

The set of permitted values for the type of class.

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

ClassTypeEnumExt Enumeration

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

CourseGUIDRefTypeEnum Enumeration

This is the fixed enumeration for a GUIDRef that points to a 'Course'.

Attribute Type Description Multiplicity Privacy
course String An object that is a 'Course'. [1] N/A

EnrolRoleEnum Enumeration

The set of permitted values for the type of role for an enrollment.

Attribute Type Description Multiplicity Privacy
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

EnrolRoleEnumExt Enumeration

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

GenderEnum Enumeration

The set of permitted values for the gender of a user.

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

GenderEnumExt Enumeration

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

OrgGUIDRefTypeEnum Enumeration

This is the fixed enumeration for a GUIDRef that points to an 'Org'.

Attribute Type Description Multiplicity Privacy
org String An object that is an 'Org'. [1] N/A

OrgTypeEnum Enumeration

The set of permitted values for the type of orgs.

Attribute Type Description Multiplicity Privacy
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

OrgTypeEnumExt Enumeration

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

ResourceGUIDRefTypeEnum Enumeration

This is the fixed enumeration for a GUIDRef that points to a 'Resource'.

Attribute Type Description Multiplicity Privacy
resource String An object that is a 'Resource'. [1] N/A

RoleEnum Enumeration

The set of permitted values for the type of role for a user.

Attribute Type Description Multiplicity Privacy
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

RoleEnumExt Enumeration

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

RoleTypeEnum Enumeration

The type of role for the role-org mappings. Each mapping must have a role type of which only one must have a roleType of 'primary' and the others must be 'secondary'.

Attribute Type Description Multiplicity Privacy
primary String Denotes that this is the primary role within the associated org. Only one role can be primary for each org. [1] N/A
secondary String Denotes this is a secondary role within the associated org i.e. some other role is the primary. [1] N/A

SessionTypeEnum Enumeration

The set of permitted values for the academic session of a user.

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

SessionTypeEnumExt Enumeration

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

TrueFalseEnum Enumeration

This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.

Attribute Type Description Multiplicity Privacy
true String Requires the boolean value to be given as 'true'. [1] N/A
false String Requires the boolean value to be given as 'false'. [1] N/A

UserGUIDRefTypeEnum Enumeration

This is the fixed enumeration for a GUIDRef that points to a 'User.

Attribute Type Description Multiplicity Privacy
user String An object that is a 'User'. [1] N/A

imsx_CodeMajorEnum Enumeration

The permitted vocabulary for the values for the CodeMajor field.

Attribute Type Description Multiplicity Privacy
success String Denotes that the request has been successfully completed. If the associated 'severity' value is 'warning' then the request has been partially successful i.e. best effort by the service provider. Other parts of the status information may provide more insight into a partial success response. [1] N/A
processing String Denotes that the request is being processed at the destination or there has been a local transmission failure. This value is used in asynchronous services. [1] N/A
failure String Denotes that the transaction request has failed. The detailed reason will be reported in the accompanying 'codeMinor' fields. [1] N/A
unsupported String Denotes that the service provider does not support the requested operation. This is the required default response for an unsupported operation by an implementation. [1] N/A

imsx_CodeMinorValueEnum Enumeration

The permitted vocabulary for the values for the CodeMinorValue field.

Attribute Type Description Multiplicity Privacy
fullsuccess String The request has been fully and successfully implemented by the Service Provider. For a REST binding this will have an HTTP code of '200' for a successful 'GET' request; '201' for a successful 'PUT' request; '204' for a successful 'DELETE' request. [1] N/A
invalid_filter_field String An invalid filter field was supplied and so the sorting was not possible. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '400'. [1] N/A
invalid_selection_field String An invalid selection field was supplied and data filtering on the selection criteria was not possible. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '400'. [1] N/A
invaliddata String This error condition may occur if a JSON request/response body contains well-formed (i.e. syntactically correct), but semantically erroneous, JSON instructions. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and a HTTP code of '422'. [1] N/A
unauthorisedrequest String The request was not correctly authorised. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '401'. [1] N/A
forbidden String This is used to indicate that the server can be reached and process the request but refuses to take any further action. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '403'. [1] N/A
server_busy String The server is receiving too many requests. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '429'. [1] N/A
unknownobject String The supplied identifier is unknown in the Service Provider and so the object could not be changed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '404'. [1] N/A
internal_server_error String This should be used only if there is catastrophic error and there is not a more appropriate code. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '500'. [1] N/A

imsx_SeverityEnum Enumeration

The permitted vocabulary for the values for the Severity field.

Attribute Type Description Multiplicity Privacy
status String The request has been completed and a response was received from the Service Provider. [1] N/A
warning String The request has only been partially completed. For an asynchronous service a further response should be expected. [1] N/A
error String A significant error has occurred in processing the request and so the request was not completed (the Service Provider may not even have received the request). [1] N/A

OrderByEnum Enumeration

No Description

Attribute Type Description Multiplicity Privacy
asc String No Description [1] N/A
desc String No Description [1] N/A

Derived Classes

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.

AnyURI Class

No Description

Boolean Class

No Description

Date Class

No Description

DateTime Class

No Description

Decimal Class

No Description

Integer Class

No Description

Namespace Class

No Description

This class can be extended with additional properties.

NonNegativeInteger Class

No Description

NormalizedString Class

No Description

PositiveInteger Class

No Description

String Class

No Description

Void Class

No Description

Union Classes

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

Primitive Types

AnyURI Primitive Type

No Description

Boolean Primitive Type

No Description

Date Primitive Type

No Description

DateTime Primitive Type

No Description

Decimal Primitive Type

No Description

Integer Primitive Type

No Description

Namespace Primitive Type

No Description

This class can be extended with additional properties.

NonNegativeInteger Primitive Type

No Description

NormalizedString Primitive Type

No Description

PositiveInteger Primitive Type

No Description

String Primitive Type

No Description

Void Primitive Type

No Description

Extending and Profiling the Binding

This Section is NON-NORMATIVE.

Extending the Binding

Proprietary extensions of the service are based upon three approaches:

The extension of the data models being manipulated by the current set of operations (including extending vocabularies); The inclusion of new operations to support new proprietary functionality; The inclusion of proprietary OAuth 2 scopes. 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. A new version of the OpenAPI files should also be generated with the new operation definitions.

An example of creating such an extension is given in the accompanying Implementation Guide document 1EdTech OneRoster 1.2 Implementation Guide Final Release 1.0.

Proprietary Scopes

It is permitted to create extra OAuth 2 scopes to provide more control over the availability of various endpoints.

An example of creating such an extension is given in the accompanying Implementation Guide 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.

These extensions take the form of name/value pairs. The name is the label of the extension field, and the value is the value of the extension. For example, if wanting to show the extension of field "classification", with value "private" that was added/provided by "ims", the name/value pair is: "ims.classification" : "private".

It is RECOMMENDED that where extensions are used, whenever possible the name/value pairs are based upon vocabulary controlled files. This eliminates a proliferation of free text equivalencies from entering the data e.g. "Florida" vs "FL", vs "Florida, USA". In such cases either the attribute, or the value (or both) MUST be a URI that references the attribute and/or value from an appropriate vocabulary file. For example:

"http://www.nbrs.org" : "FL"

Within the OpenAPI files, uncontrolled data extensions are explicitly prohibited by the JSON Schema definition.

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:'. An example is adding the two proprietary roles of 'ext:teachingasssistant' and 'ext:principal' to the 'RoleEnum' vocabulary.

Profiling the Binding

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, OpenAPI files, 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.

OpenAPI Listings

This Section is NORMATIVE.

Listing of the OpenAPI (JSON) File

{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "OpenAPI schema for OneRoster Rostering Service",
    "description" : "The OneRoster Rostering Service enables the exchange of K-12 oriented roster data. This exchange is typically between the Student Information System and the learning delivery systems. The service provides a number of operations, collected as several endpoints, primarily based upon read, create and delete of the first class objects. ",
    "termsOfService" : "https://www.imsglobal.org/license.html",
    "contact" : {
      "name" : "IMS Global",
      "url" : "https://www.imsglobal.org",
      "email" : "support@imsglobal.org"
    },
    "license" : {
      "name" : "IMS Global Specification Document License",
      "url" : "https://www.imsglobal.org/license.html"
    },
    "version" : "1.2",
    "x-status" : "Final",
    "x-model-pid" : "org.1edtech.orrostering.v1p2.model",
    "x-service-pid" : "org.1edtech.orrostering.v1p2.rest.servicemodel",
    "x-src-operation-count" : 41,
    "x-oas-operation-count" : 41
  },
  "servers" : [ {
    "url" : "https://example.org/ims/oneroster/rostering/v1p2",
    "description" : "The above Server URL should be changed to the actual server location."
  } ],
  "tags" : [ {
    "name" : "OrgsManagement",
    "description" : "This enables the management of orgs i.e. an organization involved in the learning in some form or other."
  }, {
    "name" : "CoursesManagement",
    "description" : "This enables the management of Courses i.e. programme of study."
  }, {
    "name" : "ClassesManagement",
    "description" : "This enables the management of Classes i.e. scheduled learning of courses."
  }, {
    "name" : "EnrollmentsManagement",
    "description" : "This enables the management of the enrollments of users (teachers, students, etc.) on classes supplied by schools."
  }, {
    "name" : "DemographicsManagement",
    "description" : "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."
  }, {
    "name" : "AcademicSessionsManagement",
    "description" : "This enables the management of academic sessions i.e. periods of academic activity."
  }, {
    "name" : "SchoolsManagement",
    "description" : "This enables the management of information about schools. A school is a type of 'org'."
  }, {
    "name" : "TermsManagement",
    "description" : "This enables the management of information about terms (a term is a type of 'academicSession')."
  }, {
    "name" : "GradingPeriodsManagement",
    "description" : "This enables the management of grading periods i.e. specific academic sessions."
  }, {
    "name" : "StudentsManagement",
    "description" : "This enables the management of information about students (a student is a type of 'user')."
  }, {
    "name" : "TeachersManagement",
    "description" : "This enables the management of information about teachers (a teacher is a type of 'user')."
  }, {
    "name" : "UsersManagement",
    "description" : "This enables the management of information about users (including students and teachers)."
  } ],
  "paths" : {
    "/orgs" : {
      "get" : {
        "tags" : [ "OrgsManagement" ],
        "summary" : "The REST GET operation for the getAllOrgs() API call.",
        "description" : "To read, get, a collection of orgs i.e. all orgs.",
        "operationId" : "getAllOrgs",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllOrgs() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllOrgs() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OrgSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllOrgs() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllOrgs() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllOrgs() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllOrgs() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllOrgs() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllOrgs() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllOrgs() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallorgs.operation"
      }
    },
    "/orgs/{sourcedId}" : {
      "get" : {
        "tags" : [ "OrgsManagement" ],
        "summary" : "The REST GET operation for the getOrg() API call.",
        "description" : "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.",
        "operationId" : "getOrg",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this org.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleOrg"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getOrg() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getorg.operation"
      }
    },
    "/courses" : {
      "get" : {
        "tags" : [ "CoursesManagement" ],
        "summary" : "The REST GET operation for the getAllCourses() API call.",
        "description" : "To read, get, a collection of courses i.e. all courses.",
        "operationId" : "getAllCourses",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllCourses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllCourses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CourseSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllCourses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllCourses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllCourses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllCourses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllCourses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllCourses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllCourses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallcourses.operation"
      }
    },
    "/courses/{sourcedId}" : {
      "get" : {
        "tags" : [ "CoursesManagement" ],
        "summary" : "The REST GET operation for the getCourse() API call.",
        "description" : "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.",
        "operationId" : "getCourse",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this course.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleCourse"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getcourse.operation"
      }
    },
    "/courses/{courseSourcedId}/classes" : {
      "get" : {
        "tags" : [ "CoursesManagement" ],
        "summary" : "The REST GET operation for the getClassesForCourse() API call.",
        "description" : "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.",
        "operationId" : "getClassesForCourse",
        "parameters" : [ {
          "name" : "courseSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific course.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getClassesForCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getClassesForCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ClassSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getClassesForCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getClassesForCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getClassesForCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getClassesForCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getClassesForCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForCourse() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getclassesforcourse.operation"
      }
    },
    "/classes" : {
      "get" : {
        "tags" : [ "ClassesManagement" ],
        "summary" : "The REST GET operation for the getAllClasses() API call.",
        "description" : "To read, get, a collection of classes i.e. all classes.",
        "operationId" : "getAllClasses",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllClasses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllClasses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ClassSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllClasses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllClasses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllClasses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllClasses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllClasses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllClasses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllClasses() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallclasses.operation"
      }
    },
    "/classes/{sourcedId}" : {
      "get" : {
        "tags" : [ "ClassesManagement" ],
        "summary" : "The REST GET operation for the getClass() API call.",
        "description" : "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.",
        "operationId" : "getClass",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this class.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleClass"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getclass.operation"
      }
    },
    "/classes/{classSourcedId}/students" : {
      "get" : {
        "tags" : [ "ClassesManagement" ],
        "summary" : "The REST GET operation for the getStudentsForClass() API call.",
        "description" : "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.",
        "operationId" : "getStudentsForClass",
        "parameters" : [ {
          "name" : "classSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the class.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getStudentsForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getStudentsForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getStudentsForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getStudentsForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getStudentsForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getStudentsForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getStudentsForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getStudentsForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getStudentsForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getstudentsforclass.operation"
      }
    },
    "/classes/{classSourcedId}/teachers" : {
      "get" : {
        "tags" : [ "ClassesManagement" ],
        "summary" : "The REST GET operation for the getTeachersForClass() API call.",
        "description" : "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.",
        "operationId" : "getTeachersForClass",
        "parameters" : [ {
          "name" : "classSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the class.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getTeachersForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getTeachersForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getTeachersForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getTeachersForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getTeachersForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getTeachersForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getTeachersForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getTeachersForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getTeachersForClass() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getteachersforclass.operation"
      }
    },
    "/enrollments" : {
      "get" : {
        "tags" : [ "EnrollmentsManagement" ],
        "summary" : "The REST GET operation for the getAllEnrollments() API call.",
        "description" : "To read, get, a collection of enrollments i.e. all enrollments.",
        "operationId" : "getAllEnrollments",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllEnrollments() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllEnrollments() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnrollmentSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllEnrollments() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllEnrollments() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllEnrollments() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllEnrollments() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllEnrollments() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllEnrollments() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllEnrollments() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallenrollments.operation"
      }
    },
    "/enrollments/{sourcedId}" : {
      "get" : {
        "tags" : [ "EnrollmentsManagement" ],
        "summary" : "The REST GET operation for the getEnrollment() API call.",
        "description" : "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.",
        "operationId" : "getEnrollment",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this enrollment.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleEnrollment"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getEnrollment() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getenrollment.operation"
      }
    },
    "/demographics" : {
      "get" : {
        "tags" : [ "DemographicsManagement" ],
        "summary" : "The REST GET operation for the getAllDemographics() API call.",
        "description" : "To read, get, a collection of demographics i.e. all demographics.",
        "operationId" : "getAllDemographics",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DemographicsSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-demographics.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getalldemographics.operation"
      }
    },
    "/demographics/{sourcedId}" : {
      "get" : {
        "tags" : [ "DemographicsManagement" ],
        "summary" : "The REST GET operation for the getDemographics() API call.",
        "description" : "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.",
        "operationId" : "getDemographics",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this user demographics.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleDemographics"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getDemographics() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-demographics.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getdemographics.operation"
      }
    },
    "/academicSessions" : {
      "get" : {
        "tags" : [ "AcademicSessionsManagement" ],
        "summary" : "The REST GET operation for the getAllAcademicSessions() API call.",
        "description" : "To read, get, a collection of academic sessions i.e. all academic sessions.",
        "operationId" : "getAllAcademicSessions",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllAcademicSessions() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllAcademicSessions() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AcademicSessionSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllAcademicSessions() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllAcademicSessions() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllAcademicSessions() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllAcademicSessions() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllAcademicSessions() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllAcademicSessions() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllAcademicSessions() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallacademicsessions.operation"
      }
    },
    "/academicSessions/{sourcedId}" : {
      "get" : {
        "tags" : [ "AcademicSessionsManagement" ],
        "summary" : "The REST GET operation for the getAcademicSession() API call.",
        "description" : "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.",
        "operationId" : "getAcademicSession",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this academic session.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleAcademicSession"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAcademicSession() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getacademicsession.operation"
      }
    },
    "/schools" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getAllSchools() API call.",
        "description" : "To read, get, a collection of schools i.e. all schools.",
        "operationId" : "getAllSchools",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllSchools() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllSchools() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OrgSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllSchools() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllSchools() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllSchools() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllSchools() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllSchools() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllSchools() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllSchools() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallschools.operation"
      }
    },
    "/schools/{sourcedId}" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getSchool() API call.",
        "description" : "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.",
        "operationId" : "getSchool",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleOrg"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getschool.operation"
      }
    },
    "/schools/{schoolSourcedId}/courses" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getCoursesForSchool() API call.",
        "description" : "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.",
        "operationId" : "getCoursesForSchool",
        "parameters" : [ {
          "name" : "schoolSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getCoursesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getCoursesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CourseSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getCoursesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getCoursesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getCoursesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getCoursesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getCoursesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getCoursesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getCoursesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getcoursesforschool.operation"
      }
    },
    "/schools/{schoolSourcedId}/classes/{classSourcedId}/enrollments" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getEnrollmentsForClassInSchool() API call.",
        "description" : "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.",
        "operationId" : "getEnrollmentsForClassInSchool",
        "parameters" : [ {
          "name" : "schoolSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "name" : "classSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the class.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getEnrollmentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getEnrollmentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnrollmentSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getEnrollmentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getEnrollmentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getEnrollmentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getEnrollmentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getEnrollmentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getEnrollmentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getEnrollmentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getenrollmentsforclassinschool.operation"
      }
    },
    "/schools/{schoolSourcedId}/classes/{classSourcedId}/students" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getStudentsForClassInSchool() API call.",
        "description" : "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.",
        "operationId" : "getStudentsForClassInSchool",
        "parameters" : [ {
          "name" : "schoolSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "name" : "classSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the class.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getStudentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getStudentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getStudentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getStudentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getStudentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getStudentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getStudentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getStudentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getStudentsForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getstudentsforclassinschool.operation"
      }
    },
    "/schools/{schoolSourcedId}/classes/{classSourcedId}/teachers" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getTeachersForClassInSchool() API call.",
        "description" : "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.",
        "operationId" : "getTeachersForClassInSchool",
        "parameters" : [ {
          "name" : "schoolSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "name" : "classSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the class.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getTeachersForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getTeachersForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getTeachersForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getTeachersForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getTeachersForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getTeachersForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getTeachersForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getTeachersForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getTeachersForClassInSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getteachersforclassinschool.operation"
      }
    },
    "/schools/{schoolSourcedId}/enrollments" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getEnrollmentsForSchool() API call.",
        "description" : "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.",
        "operationId" : "getEnrollmentsForSchool",
        "parameters" : [ {
          "name" : "schoolSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getEnrollmentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getEnrollmentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnrollmentSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getEnrollmentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getEnrollmentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getEnrollmentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getEnrollmentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getEnrollmentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getEnrollmentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getEnrollmentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getenrollmentsforschool.operation"
      }
    },
    "/schools/{schoolSourcedId}/students" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getStudentsForSchool() API call.",
        "description" : "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.",
        "operationId" : "getStudentsForSchool",
        "parameters" : [ {
          "name" : "schoolSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getStudentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getStudentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getStudentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getStudentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getStudentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getStudentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getStudentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getStudentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getStudentsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getstudentsforschool.operation"
      }
    },
    "/schools/{schoolSourcedId}/teachers" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getTeachersForSchool() API call.",
        "description" : "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.",
        "operationId" : "getTeachersForSchool",
        "parameters" : [ {
          "name" : "schoolSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getTeachersForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getTeachersForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getTeachersForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getTeachersForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getTeachersForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getTeachersForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getTeachersForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getTeachersForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getTeachersForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getteachersforschool.operation"
      }
    },
    "/schools/{schoolSourcedId}/terms" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getTermsForSchool() API call.",
        "description" : "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.",
        "operationId" : "getTermsForSchool",
        "parameters" : [ {
          "name" : "schoolSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getTermsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getTermsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AcademicSessionSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getTermsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getTermsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getTermsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getTermsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getTermsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getTermsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getTermsForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.gettermsforschool.operation"
      }
    },
    "/schools/{schoolSourcedId}/classes" : {
      "get" : {
        "tags" : [ "SchoolsManagement" ],
        "summary" : "The REST GET operation for the getClassesForSchool() API call.",
        "description" : "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.",
        "operationId" : "getClassesForSchool",
        "parameters" : [ {
          "name" : "schoolSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific school.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getClassesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getClassesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ClassSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getClassesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getClassesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getClassesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getClassesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getClassesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForSchool() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getclassesforschool.operation"
      }
    },
    "/terms" : {
      "get" : {
        "tags" : [ "TermsManagement" ],
        "summary" : "The REST GET operation for the getAllTerms() API call.",
        "description" : "To read, get, a collection of terms i.e. all terms.",
        "operationId" : "getAllTerms",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllTerms() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllTerms() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AcademicSessionSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllTerms() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllTerms() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllTerms() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllTerms() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllTerms() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllTerms() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllTerms() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallterms.operation"
      }
    },
    "/terms/{sourcedId}" : {
      "get" : {
        "tags" : [ "TermsManagement" ],
        "summary" : "The REST GET operation for the getTerm() API call.",
        "description" : "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.",
        "operationId" : "getTerm",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this term.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleAcademicSession"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getterm.operation"
      }
    },
    "/terms/{termSourcedId}/classes" : {
      "get" : {
        "tags" : [ "TermsManagement" ],
        "summary" : "The REST GET operation for the getClassesForTerm() API call.",
        "description" : "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.",
        "operationId" : "getClassesForTerm",
        "parameters" : [ {
          "name" : "termSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific term.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getClassesForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getClassesForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ClassSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getClassesForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getClassesForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getClassesForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getClassesForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getClassesForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getclassesforterm.operation"
      }
    },
    "/terms/{termSourcedId}/gradingPeriods" : {
      "get" : {
        "tags" : [ "TermsManagement" ],
        "summary" : "The REST GET operation for the getGradingPeriodsForTerm() API call.",
        "description" : "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.",
        "operationId" : "getGradingPeriodsForTerm",
        "parameters" : [ {
          "name" : "termSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific term.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getGradingPeriodsForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getGradingPeriodsForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AcademicSessionSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getGradingPeriodsForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getGradingPeriodsForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getGradingPeriodsForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getGradingPeriodsForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getGradingPeriodsForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getGradingPeriodsForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getGradingPeriodsForTerm() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getgradingperiodsforterm.operation"
      }
    },
    "/gradingPeriods" : {
      "get" : {
        "tags" : [ "GradingPeriodsManagement" ],
        "summary" : "The REST GET operation for the getAllGradingPeriods() API call.",
        "description" : "To read, get, a collection of grading periods i.e. all academic sessions.",
        "operationId" : "getAllGradingPeriods",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllGradingPeriods() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllGradingPeriods() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AcademicSessionSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllGradingPeriods() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllGradingPeriods() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllGradingPeriods() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllGradingPeriods() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllGradingPeriods() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllGradingPeriods() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllGradingPeriods() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallgradingperiods.operation"
      }
    },
    "/gradingPeriods/{sourcedId}" : {
      "get" : {
        "tags" : [ "GradingPeriodsManagement" ],
        "summary" : "The REST GET operation for the getGradingPeriod() API call.",
        "description" : "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.",
        "operationId" : "getGradingPeriod",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this grading period.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleAcademicSession"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getGradingPeriod() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getgradingperiod.operation"
      }
    },
    "/students" : {
      "get" : {
        "tags" : [ "StudentsManagement" ],
        "summary" : "The REST GET operation for the getAllStudents() API call.",
        "description" : "To read, get, a collection of students i.e. all students.",
        "operationId" : "getAllStudents",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllStudents() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllStudents() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllStudents() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllStudents() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllStudents() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllStudents() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllStudents() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllStudents() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllStudents() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallstudents.operation"
      }
    },
    "/students/{sourcedId}" : {
      "get" : {
        "tags" : [ "StudentsManagement" ],
        "summary" : "The REST GET operation for the getStudent() API call.",
        "description" : "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.",
        "operationId" : "getStudent",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this student.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleUser"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getstudent.operation"
      }
    },
    "/students/{studentSourcedId}/classes" : {
      "get" : {
        "tags" : [ "StudentsManagement" ],
        "summary" : "The REST GET operation for the getClassesForStudent() API call.",
        "description" : "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.",
        "operationId" : "getClassesForStudent",
        "parameters" : [ {
          "name" : "studentSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific student.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getClassesForStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getClassesForStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ClassSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getClassesForStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getClassesForStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getClassesForStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getClassesForStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getClassesForStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForStudent() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getclassesforstudent.operation"
      }
    },
    "/teachers" : {
      "get" : {
        "tags" : [ "TeachersManagement" ],
        "summary" : "The REST GET operation for the getAllTeachers() API call.",
        "description" : "To read, get, a collection of teachers i.e. all teachers.",
        "operationId" : "getAllTeachers",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllTeachers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllTeachers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllTeachers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllTeachers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllTeachers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllTeachers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllTeachers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllTeachers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllTeachers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallteachers.operation"
      }
    },
    "/teachers/{sourcedId}" : {
      "get" : {
        "tags" : [ "TeachersManagement" ],
        "summary" : "The REST GET operation for the getTeacher() API call.",
        "description" : "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.",
        "operationId" : "getTeacher",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this teacher.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleUser"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getteacher.operation"
      }
    },
    "/teachers/{teacherSourcedId}/classes" : {
      "get" : {
        "tags" : [ "TeachersManagement" ],
        "summary" : "The REST GET operation for the getClassesForTeacher() API call.",
        "description" : "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.",
        "operationId" : "getClassesForTeacher",
        "parameters" : [ {
          "name" : "teacherSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific teacher.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getClassesForTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getClassesForTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ClassSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getClassesForTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getClassesForTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getClassesForTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getClassesForTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getClassesForTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForTeacher() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getclassesforteacher.operation"
      }
    },
    "/users" : {
      "get" : {
        "tags" : [ "UsersManagement" ],
        "summary" : "The REST GET operation for the getAllUsers() API call.",
        "description" : "To read, get, a collection of users i.e. all users (including students and teachers).",
        "operationId" : "getAllUsers",
        "parameters" : [ {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getAllUsers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getAllUsers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getAllUsers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getAllUsers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getAllUsers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getAllUsers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getAllUsers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getAllUsers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getAllUsers() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getallusers.operation"
      }
    },
    "/users/{sourcedId}" : {
      "get" : {
        "tags" : [ "UsersManagement" ],
        "summary" : "The REST GET operation for the getUser() API call.",
        "description" : "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.",
        "operationId" : "getUser",
        "parameters" : [ {
          "name" : "sourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for this user.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SingleUser"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "404" : {
            "description" : "The 404 (NOT_FOUND) response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly", "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getuser.operation"
      }
    },
    "/users/{userSourcedId}/classes" : {
      "get" : {
        "tags" : [ "UsersManagement" ],
        "summary" : "The REST GET operation for the getClassesForUser() API call.",
        "description" : "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.",
        "operationId" : "getClassesForUser",
        "parameters" : [ {
          "name" : "userSourcedId",
          "in" : "path",
          "description" : "The unique identifier, GUID, for the specific user.",
          "required" : true,
          "allowEmptyValue" : false,
          "style" : "simple",
          "schema" : {
            "type" : "string",
            "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness."
          }
        }, {
          "$ref" : "#/components/parameters/limit"
        }, {
          "$ref" : "#/components/parameters/offset"
        }, {
          "$ref" : "#/components/parameters/sort"
        }, {
          "$ref" : "#/components/parameters/orderBy"
        }, {
          "$ref" : "#/components/parameters/filter"
        }, {
          "$ref" : "#/components/parameters/fields"
        } ],
        "responses" : {
          "default" : {
            "description" : "The default response to the getClassesForUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "The 200 (OK) response to the getClassesForUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ClassSet"
                }
              }
            }
          },
          "400" : {
            "description" : "The 400 (BAD_REQUEST) response to the getClassesForUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "The 401 (UNAUTHORIZED) response to the getClassesForUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "403" : {
            "description" : "The 403 (FORBIDDEN) response to the getClassesForUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "405" : {
            "description" : "The 405 (METHOD_NOT_ALLOWED) response to the getClassesForUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "422" : {
            "description" : "The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "429" : {
            "description" : "The 429 (TOO_MANY_REQUESTS) response to the getClassesForUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForUser() API call.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/imsx_StatusInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2CC" : [ "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" ]
        } ],
        "x-operation-pid" : "org.1edtech.orrostering.v1p2.rest.getclassesforuser.operation"
      }
    }
  },
  "components" : {
    "schemas" : {
      "UserGUIDRef" : {
        "required" : [ "type", "href", "sourcedId" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "The globally unique identifier of the object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "href" : {
            "type" : "string",
            "description" : "The URI for the type of object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.anyuri.class"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of object being referenced i.e. a 'user'.",
            "enum" : [ "user" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.userguidreftypeenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for reference to a OneRoster 'User' object that has an allocated sourcedId (GUID).",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.userguidref.class"
      },
      "OrgGUIDRef" : {
        "required" : [ "type", "href", "sourcedId" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "The globally unique identifier of the object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "href" : {
            "type" : "string",
            "description" : "The URI for the type of object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.anyuri.class"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of object being referenced i.e. an 'org'.",
            "enum" : [ "org" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.orgguidreftypeenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.orgguidref.class"
      },
      "SingleOrg" : {
        "required" : [ "org" ],
        "type" : "object",
        "properties" : {
          "org" : {
            "$ref" : "#/components/schemas/Org"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for a single org instance for a message payload.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.singleorg.class"
      },
      "User" : {
        "required" : [ "sourcedId", "status", "dateLastModified", "enabledUser", "givenName", "familyName", "roles" ],
        "type" : "object",
        "properties" : {
          "primaryOrg" : {
            "$ref" : "#/components/schemas/OrgGUIDRef"
          },
          "metadata" : {
            "$ref" : "#/components/schemas/MetadataUser"
          },
          "roles" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "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.",
            "items" : {
              "$ref" : "#/components/schemas/Role"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.role.class"
          },
          "preferredLastName" : {
            "type" : "string",
            "description" : "The user's preferred last name. This attribute was added in version 1.2.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "grades" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "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.",
            "items" : {
              "type" : "string"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "password" : {
            "type" : "string",
            "description" : "A top-level password for the user. Care should be taken when using this field and the password SHOULD be encrypted.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.string.class"
          },
          "dateLastModified" : {
            "type" : "string",
            "description" : "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].",
            "format" : "date-time",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.datetime.class"
          },
          "userIds" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "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.",
            "items" : {
              "$ref" : "#/components/schemas/UserId"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.userid.class"
          },
          "familyName" : {
            "type" : "string",
            "description" : "The family name. Also, known as the last name.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "sms" : {
            "type" : "string",
            "description" : "The SMS number for the user.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "email" : {
            "type" : "string",
            "description" : "The email address for the user.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "sourcedId" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "identifier" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.identifier.class"
          },
          "enabledUser" : {
            "type" : "string",
            "description" : "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.",
            "enum" : [ "true", "false" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.truefalseenum.class"
          },
          "givenName" : {
            "type" : "string",
            "description" : "The given name. Also, known as the first name.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "userProfiles" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The set of system/app/tool profiles for the user.",
            "items" : {
              "$ref" : "#/components/schemas/UserProfile"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.userprofile.class"
          },
          "userMasterIdentifier" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "resources" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "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].",
            "items" : {
              "$ref" : "#/components/schemas/ResourceGUIDRef"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.resourceguidref.class"
          },
          "preferredMiddleName" : {
            "type" : "string",
            "description" : "The user's preferred middle name(s). This attribute was added in version 1.2.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "agents" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The links to other people i.e. User 'sourcedIds'.",
            "items" : {
              "$ref" : "#/components/schemas/UserGUIDRef"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.userguidref.class"
          },
          "phone" : {
            "type" : "string",
            "description" : "The phone number for the user.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "preferredFirstName" : {
            "type" : "string",
            "description" : "The user's preferred first name. This attribute was added in version 1.2.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "middleName" : {
            "type" : "string",
            "description" : "The set of middle names. If more than one middle name is needed separate using a space e.g. 'Wingarde Granville'.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "pronouns" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "status" : {
            "type" : "string",
            "description" : "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'.",
            "enum" : [ "active", "tobedeleted" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.basestatusenum.class"
          },
          "username" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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. ",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.user.class"
      },
      "UserProfile" : {
        "required" : [ "profileId", "profileType", "vendorId" ],
        "type" : "object",
        "properties" : {
          "profileType" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "credentials" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The set of credentials that are available for access to this profile.",
            "items" : {
              "$ref" : "#/components/schemas/Credential"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.credential.class"
          },
          "profileId" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.anyuri.class"
          },
          "vendorId" : {
            "type" : "string",
            "description" : "The unique identifier for the vendor of the system, tool, app, etc. which requires the use of this profile.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "description" : {
            "type" : "string",
            "description" : "A human readable description of the use of the profile. This should not contain any security information for access to the account.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.string.class"
          },
          "applicationId" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          }
        },
        "additionalProperties" : false,
        "description" : "The container for the information about a User Profile that will provide the user with access to some system, application, tool, etc.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.userprofile.class"
      },
      "MetadataGeneral" : {
        "type" : "object",
        "properties" : { },
        "additionalProperties" : true,
        "description" : "The container for the proprietary extensions.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.metadatageneral.class"
      },
      "UserSet" : {
        "type" : "object",
        "properties" : {
          "users" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The collection of user instances. The order is not significant. The corresponding query constraints may result in no instances being returned.",
            "items" : {
              "$ref" : "#/components/schemas/User"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.user.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.userset.class"
      },
      "CourseGUIDRef" : {
        "required" : [ "type", "href", "sourcedId" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "The globally unique identifier of the object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "href" : {
            "type" : "string",
            "description" : "The URI for the type of object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.anyuri.class"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of object being referenced i.e. a 'course'.",
            "enum" : [ "course" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.courseguidreftypeenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for reference to a OneRoster 'Course' object that has an allocated sourcedId (GUID).",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.courseguidref.class"
      },
      "Org" : {
        "required" : [ "sourcedId", "status", "dateLastModified", "name", "type", "identifier" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "identifier" : {
            "type" : "string",
            "description" : "Human readable identifier for this org e.g. NCES ID.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.identifier.class"
          },
          "parent" : {
            "$ref" : "#/components/schemas/OrgGUIDRef"
          },
          "metadata" : {
            "$ref" : "#/components/schemas/MetadataOrg"
          },
          "dateLastModified" : {
            "type" : "string",
            "description" : "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].",
            "format" : "date-time",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.datetime.class"
          },
          "children" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The 'sourcedIds' for the set of child organizations.",
            "items" : {
              "$ref" : "#/components/schemas/OrgGUIDRef"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.orgguidref.class"
          },
          "name" : {
            "type" : "string",
            "description" : "The name of the organization.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "type" : {
            "description" : "The type of organization. This uses a predefined vocabulary.",
            "anyOf" : [ {
              "type" : "string",
              "enum" : [ "department", "district", "local", "national", "school", "state" ]
            }, {
              "pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
              "type" : "string"
            } ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.orgtypeenumext.class"
          },
          "status" : {
            "type" : "string",
            "description" : "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'.",
            "enum" : [ "active", "tobedeleted" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.basestatusenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.org.class"
      },
      "EnrollmentSet" : {
        "type" : "object",
        "properties" : {
          "enrollments" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The collection of enrollment instances. The order is not significant. The corresponding query constraints may result in no instances being returned.",
            "items" : {
              "$ref" : "#/components/schemas/Enrollment"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.enrollment.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.enrollmentset.class"
      },
      "AcadSessionGUIDRef" : {
        "required" : [ "type", "href", "sourcedId" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "The globally unique identifier of the object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "href" : {
            "type" : "string",
            "description" : "The URI for the type of object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.anyuri.class"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of object being referenced i.e. an 'academicSession'.",
            "enum" : [ "academicSession" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.acadsessionguidreftypeenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for reference to a OneRoster 'Academic Session' object that has an allocated sourcedId (GUID).",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.acadsessionguidref.class"
      },
      "MetadataOrg" : {
        "type" : "object",
        "properties" : { },
        "additionalProperties" : true,
        "description" : "The container for the proprietary extensions for the Org class.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.metadataorg.class"
      },
      "SingleAcademicSession" : {
        "required" : [ "academicSession" ],
        "type" : "object",
        "properties" : {
          "academicSession" : {
            "$ref" : "#/components/schemas/AcademicSession"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for a single academicSession instance for a message payload.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.singleacademicsession.class"
      },
      "imsx_CodeMinorField" : {
        "required" : [ "imsx_codeMinorFieldName", "imsx_codeMinorFieldValue" ],
        "type" : "object",
        "properties" : {
          "imsx_codeMinorFieldName" : {
            "type" : "string",
            "description" : "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'.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "imsx_codeMinorFieldValue" : {
            "type" : "string",
            "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).",
            "enum" : [ "fullsuccess", "invalid_filter_field", "invalid_selection_field", "invaliddata", "unauthorisedrequest", "forbidden", "server_busy", "unknownobject", "internal_server_error" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.imsx_codeminorvalueenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for a single code minor status code.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.imsx_codeminorfield.class"
      },
      "ClassGUIDRef" : {
        "required" : [ "type", "href", "sourcedId" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "The globally unique identifier of the object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "href" : {
            "type" : "string",
            "description" : "The URI for the type of object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.anyuri.class"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of object being referenced i.e. a 'class'.",
            "enum" : [ "class" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.classguidreftypeenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for reference to a OneRoster 'Class' object that has an allocated sourcedId (GUID).",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.classguidref.class"
      },
      "Demographics" : {
        "required" : [ "sourcedId", "status", "dateLastModified" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "metadata" : {
            "$ref" : "#/components/schemas/MetadataGeneral"
          },
          "nativeHawaiianOrOtherPacificIslander" : {
            "type" : "string",
            "description" : "Identification of whether or not the user is Native Hawaiian or Other Pacific Islander ethnicity.",
            "enum" : [ "true", "false" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.truefalseenum.class"
          },
          "countryOfBirthCode" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "sex" : {
            "description" : "The sex of the individual. The permitted values are from an enumerated list.",
            "anyOf" : [ {
              "type" : "string",
              "enum" : [ "male", "female", "unspecified", "other" ]
            }, {
              "pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
              "type" : "string"
            } ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.genderenumext.class"
          },
          "hispanicOrLatinoEthnicity" : {
            "type" : "string",
            "description" : "Identification of whether or not the user is Hispanic or of Latino ethnicity.",
            "enum" : [ "true", "false" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.truefalseenum.class"
          },
          "asian" : {
            "type" : "string",
            "description" : "Identification of whether or not the user is of Asian ethnicity.",
            "enum" : [ "true", "false" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.truefalseenum.class"
          },
          "demographicRaceTwoOrMoreRaces" : {
            "type" : "string",
            "description" : "Identification of whether or not the user has a demographic of two or more race ethnicities.",
            "enum" : [ "true", "false" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.truefalseenum.class"
          },
          "birthDate" : {
            "type" : "string",
            "description" : "The date of birth. The format is [ISO 8601] of 'YYYY-MM-DD'.",
            "format" : "date",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.date.class"
          },
          "americanIndianOrAlaskaNative" : {
            "type" : "string",
            "description" : "Identification of whether or not the user is an American Indian or Alaska Native ethnicity.",
            "enum" : [ "true", "false" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.truefalseenum.class"
          },
          "publicSchoolResidenceStatus" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "cityOfBirth" : {
            "type" : "string",
            "description" : "The name of the city in which the user was born.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "dateLastModified" : {
            "type" : "string",
            "description" : "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].",
            "format" : "date-time",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.datetime.class"
          },
          "white" : {
            "type" : "string",
            "description" : "Identification of whether or not the user is of white ethnicity.",
            "enum" : [ "true", "false" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.truefalseenum.class"
          },
          "blackOrAfricanAmerican" : {
            "type" : "string",
            "description" : "Identification of whether or not the user is black or African American ethnicity.",
            "enum" : [ "true", "false" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.truefalseenum.class"
          },
          "stateOfBirthAbbreviation" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "status" : {
            "type" : "string",
            "description" : "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'.",
            "enum" : [ "active", "tobedeleted" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.basestatusenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.demographics.class"
      },
      "MetadataCourse" : {
        "type" : "object",
        "properties" : { },
        "additionalProperties" : true,
        "description" : "The container for the proprietary extensions in the Course class.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.metadatacourse.class"
      },
      "SingleClass" : {
        "required" : [ "class" ],
        "type" : "object",
        "properties" : {
          "class" : {
            "$ref" : "#/components/schemas/Class"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for a single class instance for a message payload.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.singleclass.class"
      },
      "SingleUser" : {
        "required" : [ "user" ],
        "type" : "object",
        "properties" : {
          "user" : {
            "$ref" : "#/components/schemas/User"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for a single user instance for a message payload.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.singleuser.class"
      },
      "DemographicsSet" : {
        "type" : "object",
        "properties" : {
          "demographics" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The collection of demographics instances. The order is not significant. The corresponding query constraints may result in no instances being returned.",
            "items" : {
              "$ref" : "#/components/schemas/Demographics"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.demographics.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.demographicsset.class"
      },
      "MetadataClass" : {
        "type" : "object",
        "properties" : { },
        "additionalProperties" : true,
        "description" : "The container for the proprietary extensions in the Class class.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.metadataclass.class"
      },
      "imsx_StatusInfo" : {
        "required" : [ "imsx_codeMajor", "imsx_severity" ],
        "type" : "object",
        "properties" : {
          "imsx_CodeMinor" : {
            "$ref" : "#/components/schemas/imsx_CodeMinor"
          },
          "imsx_codeMajor" : {
            "type" : "string",
            "description" : "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.",
            "enum" : [ "success", "processing", "failure", "unsupported" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.imsx_codemajorenum.class"
          },
          "imsx_description" : {
            "type" : "string",
            "description" : "A human readable description supplied by the entity creating the status code information.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.string.class"
          },
          "imsx_severity" : {
            "type" : "string",
            "description" : "The severity value (from the corresponding enumerated vocabulary). See Appendix B for further information on the interpretation of this set of codes.",
            "enum" : [ "status", "warning", "error" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.imsx_severityenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.imsx_statusinfo.class"
      },
      "Enrollment" : {
        "required" : [ "sourcedId", "status", "dateLastModified", "user", "class", "school", "role" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "beginDate" : {
            "type" : "string",
            "description" : "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'.",
            "format" : "date",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.date.class"
          },
          "metadata" : {
            "$ref" : "#/components/schemas/MetadataEnrollment"
          },
          "dateLastModified" : {
            "type" : "string",
            "description" : "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].",
            "format" : "date-time",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.datetime.class"
          },
          "role" : {
            "description" : "The role of the user for this class in the school e.g teacher, student, etc. This is from an enumerated vocabulary.",
            "anyOf" : [ {
              "type" : "string",
              "enum" : [ "administrator", "proctor", "student", "teacher" ]
            }, {
              "pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
              "type" : "string"
            } ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.enrolroleenumext.class"
          },
          "school" : {
            "$ref" : "#/components/schemas/OrgGUIDRef"
          },
          "endDate" : {
            "type" : "string",
            "description" : "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'.",
            "format" : "date",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.date.class"
          },
          "user" : {
            "$ref" : "#/components/schemas/UserGUIDRef"
          },
          "class" : {
            "$ref" : "#/components/schemas/ClassGUIDRef"
          },
          "status" : {
            "type" : "string",
            "description" : "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'.",
            "enum" : [ "active", "tobedeleted" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.basestatusenum.class"
          },
          "primary" : {
            "type" : "string",
            "description" : "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.",
            "enum" : [ "true", "false" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.truefalseenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.enrollment.class"
      },
      "SingleCourse" : {
        "required" : [ "course" ],
        "type" : "object",
        "properties" : {
          "course" : {
            "$ref" : "#/components/schemas/Course"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for a single course instance for a message payload.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.singlecourse.class"
      },
      "AcademicSession" : {
        "required" : [ "sourcedId", "status", "dateLastModified", "title", "startDate", "endDate", "type", "schoolYear" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "parent" : {
            "$ref" : "#/components/schemas/AcadSessionGUIDRef"
          },
          "metadata" : {
            "$ref" : "#/components/schemas/MetadataGeneral"
          },
          "dateLastModified" : {
            "type" : "string",
            "description" : "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.",
            "format" : "date-time",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.datetime.class"
          },
          "endDate" : {
            "type" : "string",
            "description" : "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'.",
            "format" : "date",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.date.class"
          },
          "children" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The set of links to the child AcademicSessions i.e. a set of AcademicSession 'sourcedIds'.",
            "items" : {
              "$ref" : "#/components/schemas/AcadSessionGUIDRef"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.acadsessionguidref.class"
          },
          "schoolYear" : {
            "type" : "string",
            "description" : "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'.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "title" : {
            "type" : "string",
            "description" : "The title/label for the academic session.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "type" : {
            "description" : "The type of academic session. This is based upon an enumerated vocabulary.",
            "anyOf" : [ {
              "type" : "string",
              "enum" : [ "gradingPeriod", "semester", "schoolYear", "term" ]
            }, {
              "pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
              "type" : "string"
            } ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.sessiontypeenumext.class"
          },
          "startDate" : {
            "type" : "string",
            "description" : "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'.",
            "format" : "date",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.date.class"
          },
          "status" : {
            "type" : "string",
            "description" : "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'.",
            "enum" : [ "active", "tobedeleted" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.basestatusenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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. ",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.academicsession.class"
      },
      "Course" : {
        "required" : [ "sourcedId", "status", "dateLastModified", "title", "courseCode" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "metadata" : {
            "$ref" : "#/components/schemas/MetadataCourse"
          },
          "dateLastModified" : {
            "type" : "string",
            "description" : "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].",
            "format" : "date-time",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.datetime.class"
          },
          "org" : {
            "$ref" : "#/components/schemas/OrgGUIDRef"
          },
          "subjectCodes" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "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).",
            "items" : {
              "type" : "string"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "courseCode" : {
            "type" : "string",
            "description" : "The assigned course code.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "subjects" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The set of subjects addressed by this course. This is a set of human readable strings.  ",
            "items" : {
              "type" : "string"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "schoolYear" : {
            "$ref" : "#/components/schemas/AcadSessionGUIDRef"
          },
          "resources" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The links to the associated resources if applicable i.e. the resource 'sourcedIds'.",
            "items" : {
              "$ref" : "#/components/schemas/ResourceGUIDRef"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.resourceguidref.class"
          },
          "grades" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "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.",
            "items" : {
              "type" : "string"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "title" : {
            "type" : "string",
            "description" : "The title of the course.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "status" : {
            "type" : "string",
            "description" : "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'.",
            "enum" : [ "active", "tobedeleted" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.basestatusenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.course.class"
      },
      "AcademicSessionSet" : {
        "type" : "object",
        "properties" : {
          "academicSessions" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The collection of academicSession instances. The order is not significant. The corresponding query constraints may result in no instances being returned.",
            "items" : {
              "$ref" : "#/components/schemas/AcademicSession"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.academicsession.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.academicsessionset.class"
      },
      "ResourceGUIDRef" : {
        "required" : [ "type", "href", "sourcedId" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "The globally unique identifier of the object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "href" : {
            "type" : "string",
            "description" : "The URI for the type of object being referenced.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.anyuri.class"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of object being referenced i.e. a 'resource'.",
            "enum" : [ "resource" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.resourceguidreftypeenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for reference to a OneRoster 'Resource' object that has an allocated sourcedId (GUID).",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.resourceguidref.class"
      },
      "Credential" : {
        "required" : [ "type", "username" ],
        "type" : "object",
        "properties" : {
          "password" : {
            "type" : "string",
            "description" : "The password in this set of credentials.  Care should be taken to ensure that no unencrypted value is revealed.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.string.class"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of credentials for the profile. This should be indicative of when this specific credential should be used.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.string.class"
          },
          "username" : {
            "type" : "string",
            "description" : "The username.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          }
        },
        "additionalProperties" : true,
        "description" : "The container for a single set of credentials for an account.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.credential.class"
      },
      "Role" : {
        "required" : [ "roleType", "role", "org" ],
        "type" : "object",
        "properties" : {
          "beginDate" : {
            "type" : "string",
            "description" : "The start date on which the role becomes active (inclusive). ",
            "format" : "date",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.date.class"
          },
          "role" : {
            "description" : "The role of the user in the org. The permitted values are from an enumerated list. ",
            "anyOf" : [ {
              "type" : "string",
              "enum" : [ "aide", "counselor", "districtAdministrator", "guardian", "parent", "principal", "proctor", "relative", "siteAdministrator", "student", "systemAdministrator", "teacher" ]
            }, {
              "pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
              "type" : "string"
            } ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.roleenumext.class"
          },
          "org" : {
            "$ref" : "#/components/schemas/OrgGUIDRef"
          },
          "endDate" : {
            "type" : "string",
            "description" : "The end date on which the role becomes inactive (exclusive). ",
            "format" : "date",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.date.class"
          },
          "roleType" : {
            "type" : "string",
            "description" : "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.",
            "enum" : [ "primary", "secondary" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.roletypeenum.class"
          },
          "userProfile" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.anyuri.class"
          }
        },
        "additionalProperties" : false,
        "description" : "The container for one mapping between a role and an org for the user.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.role.class"
      },
      "imsx_CodeMinor" : {
        "required" : [ "imsx_codeMinorField" ],
        "type" : "object",
        "properties" : {
          "imsx_codeMinorField" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "Each reported code minor status code.",
            "items" : {
              "$ref" : "#/components/schemas/imsx_CodeMinorField"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.imsx_codeminorfield.class"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.imsx_codeminor.class"
      },
      "ClassSet" : {
        "type" : "object",
        "properties" : {
          "classes" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The collection of class instances. The order is not significant. The corresponding query constraints may result in no instances being returned.",
            "items" : {
              "$ref" : "#/components/schemas/Class"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.class.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.classset.class"
      },
      "UserId" : {
        "required" : [ "type", "identifier" ],
        "type" : "object",
        "properties" : {
          "identifier" : {
            "type" : "string",
            "description" : "The user identifier.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.identifier.class"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of identifier. This is no predefined vocabulary.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.userid.class"
      },
      "CourseSet" : {
        "type" : "object",
        "properties" : {
          "courses" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The collection of course instances. The order is not significant. The corresponding query constraints may result in no instances being returned.",
            "items" : {
              "$ref" : "#/components/schemas/Course"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.course.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.courseset.class"
      },
      "SingleDemographics" : {
        "required" : [ "demographics" ],
        "type" : "object",
        "properties" : {
          "demographics" : {
            "$ref" : "#/components/schemas/Demographics"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for a single demographics instance for a message payload.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.singledemographics.class"
      },
      "Class" : {
        "required" : [ "sourcedId", "status", "dateLastModified", "title", "course", "school", "terms" ],
        "type" : "object",
        "properties" : {
          "sourcedId" : {
            "type" : "string",
            "description" : "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.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.derived.sourcedid.class"
          },
          "classCode" : {
            "type" : "string",
            "description" : "The class code.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "metadata" : {
            "$ref" : "#/components/schemas/MetadataClass"
          },
          "subjectCodes" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "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).",
            "items" : {
              "type" : "string"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "subjects" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The set of subjects addressed by this class e.g. 'chemistry'.",
            "items" : {
              "type" : "string"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "resources" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The links to the set of associated resources i.e. the Resource 'sourcedIds'.",
            "items" : {
              "$ref" : "#/components/schemas/ResourceGUIDRef"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.resourceguidref.class"
          },
          "grades" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "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.",
            "items" : {
              "type" : "string"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "title" : {
            "type" : "string",
            "description" : "The tile/label for the class.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "dateLastModified" : {
            "type" : "string",
            "description" : "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].",
            "format" : "date-time",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.datetime.class"
          },
          "school" : {
            "$ref" : "#/components/schemas/OrgGUIDRef"
          },
          "terms" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "The links to the set of terms or semesters (academicSession) i.e. the set of 'sourcedIds' for the terms within the associated school year.",
            "items" : {
              "$ref" : "#/components/schemas/AcadSessionGUIDRef"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.acadsessionguidref.class"
          },
          "course" : {
            "$ref" : "#/components/schemas/CourseGUIDRef"
          },
          "periods" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The time slots in the day that the class will be given. Examples are 1 or a list of 1, 3, 5, etc.",
            "items" : {
              "type" : "string"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "location" : {
            "type" : "string",
            "description" : "The location for the class e.g. 'Room 19'.",
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.primitive.normalizedstring.class"
          },
          "classType" : {
            "description" : "The type of class. This is based upon an enumerated vocabulary.",
            "anyOf" : [ {
              "type" : "string",
              "enum" : [ "homeroom", "scheduled" ]
            }, {
              "pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
              "type" : "string"
            } ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.classtypeenumext.class"
          },
          "status" : {
            "type" : "string",
            "description" : "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'.",
            "enum" : [ "active", "tobedeleted" ],
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.basestatusenum.class"
          }
        },
        "additionalProperties" : false,
        "description" : "A class is an instance of a course, onto which students and teachers are enrolled. A class is typically held within a term.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.class.class"
      },
      "MetadataUser" : {
        "type" : "object",
        "properties" : { },
        "additionalProperties" : true,
        "description" : "The container for the proprietary extensions in the User class.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.metadatauser.class"
      },
      "SingleEnrollment" : {
        "required" : [ "enrollment" ],
        "type" : "object",
        "properties" : {
          "enrollment" : {
            "$ref" : "#/components/schemas/Enrollment"
          }
        },
        "additionalProperties" : false,
        "description" : "This is the container for a single enrollment instance for a message payload.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.singleenrollment.class"
      },
      "OrgSet" : {
        "type" : "object",
        "properties" : {
          "orgs" : {
            "minItems" : 0,
            "type" : "array",
            "description" : "The collection of org instances. The order is not significant. The corresponding query constraints may result in no instances being returned.",
            "items" : {
              "$ref" : "#/components/schemas/Org"
            },
            "x-srcprop-pid" : "org.1edtech.orrostering.v1p2.org.class"
          }
        },
        "additionalProperties" : false,
        "description" : "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.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.orgset.class"
      },
      "MetadataEnrollment" : {
        "type" : "object",
        "properties" : { },
        "additionalProperties" : true,
        "description" : "The container for the proprietary extensions in the Enrollment class.",
        "x-class-pid" : "org.1edtech.orrostering.v1p2.metadataenrollment.class"
      }
    },
    "parameters" : {
      "filter" : {
        "name" : "filter",
        "in" : "query",
        "description" : "The filtering rules to be applied when identifying the records to be supplied in the response message. The sort order should follow the [UNICODE, 16] standard.",
        "required" : false,
        "allowEmptyValue" : false,
        "style" : "form",
        "schema" : {
          "type" : "string"
        }
      },
      "offset" : {
        "name" : "offset",
        "in" : "query",
        "description" : "The number of the first record to be supplied in the segmented response message.",
        "required" : false,
        "allowEmptyValue" : false,
        "style" : "form",
        "schema" : {
          "minimum" : 0,
          "type" : "integer",
          "format" : "int32"
        }
      },
      "limit" : {
        "name" : "limit",
        "in" : "query",
        "description" : "To define the download segmentation value i.e. the maximum number of records to be contained in the response.",
        "required" : false,
        "allowEmptyValue" : false,
        "style" : "form",
        "schema" : {
          "minimum" : 1,
          "type" : "integer",
          "format" : "int32"
        }
      },
      "orderBy" : {
        "name" : "orderBy",
        "in" : "query",
        "description" : "The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard.",
        "required" : false,
        "allowEmptyValue" : false,
        "style" : "form",
        "schema" : {
          "type" : "string",
          "enum" : [ "asc", "desc" ]
        }
      },
      "sort" : {
        "name" : "sort",
        "in" : "query",
        "description" : "Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard.",
        "required" : false,
        "allowEmptyValue" : false,
        "style" : "form",
        "schema" : {
          "type" : "string"
        }
      },
      "fields" : {
        "name" : "fields",
        "in" : "query",
        "description" : "To identify the range of fields that should be supplied in the response message.",
        "required" : false,
        "allowEmptyValue" : false,
        "style" : "form",
        "schema" : {
          "type" : "string"
        }
      }
    },
    "securitySchemes" : {
      "OAuth2CC" : {
        "type" : "oauth2",
        "description" : "OAuth 2 Client Credentials (as per the requirements in the IMS Security Framework) is to be used.",
        "flows" : {
          "clientCredentials" : {
            "tokenUrl" : "https://www.imsglobal.org",
            "scopes" : {
              "https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly" : "Support for all of the read operations (excluding demographics) to enable information about collections or a single object to be obtained.",
              "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly" : "The core set of read operations to enable information about collections or a single object to be obtained.",
              "https://purl.imsglobal.org/spec/or/v1p2/scope/roster-demographics.readonly" : "The read operations to provide all demographics or a single demographics object to be obtained."
            }
          }
        }
      }
    }
  }
}

Listing of the OpenAPI (YAML) File

openapi: 3.0.1
info:
  title: OpenAPI schema for OneRoster Rostering Service
  description: "The OneRoster Rostering Service enables the exchange of K-12 oriented\
    \ roster data. This exchange is typically between the Student Information System\
    \ and the learning delivery systems. The service provides a number of operations,\
    \ collected as several endpoints, primarily based upon read, create and delete\
    \ of the first class objects. "
  termsOfService: https://www.imsglobal.org/license.html
  contact:
    name: IMS Global
    url: https://www.imsglobal.org
    email: support@imsglobal.org
  license:
    name: IMS Global Specification Document License
    url: https://www.imsglobal.org/license.html
  version: "1.2"
  x-status: Final
  x-model-pid: org.1edtech.orrostering.v1p2.model
  x-service-pid: org.1edtech.orrostering.v1p2.rest.servicemodel
  x-src-operation-count: 41
  x-oas-operation-count: 41
servers:
- url: https://example.org/ims/oneroster/rostering/v1p2
  description: The above Server URL should be changed to the actual server location.
tags:
- name: OrgsManagement
  description: This enables the management of orgs i.e. an organization involved in
    the learning in some form or other.
- name: CoursesManagement
  description: This enables the management of Courses i.e. programme of study.
- name: ClassesManagement
  description: This enables the management of Classes i.e. scheduled learning of courses.
- name: EnrollmentsManagement
  description: "This enables the management of the enrollments of users (teachers,\
    \ students, etc.) on classes supplied by schools."
- name: DemographicsManagement
  description: 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.
- name: AcademicSessionsManagement
  description: This enables the management of academic sessions i.e. periods of academic
    activity.
- name: SchoolsManagement
  description: This enables the management of information about schools. A school
    is a type of 'org'.
- name: TermsManagement
  description: This enables the management of information about terms (a term is a
    type of 'academicSession').
- name: GradingPeriodsManagement
  description: This enables the management of grading periods i.e. specific academic
    sessions.
- name: StudentsManagement
  description: This enables the management of information about students (a student
    is a type of 'user').
- name: TeachersManagement
  description: This enables the management of information about teachers (a teacher
    is a type of 'user').
- name: UsersManagement
  description: This enables the management of information about users (including students
    and teachers).
paths:
  /orgs:
    get:
      tags:
      - OrgsManagement
      summary: The REST GET operation for the getAllOrgs() API call.
      description: "To read, get, a collection of orgs i.e. all orgs."
      operationId: getAllOrgs
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllOrgs() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllOrgs() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OrgSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllOrgs() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllOrgs() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllOrgs() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllOrgs() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllOrgs()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllOrgs() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllOrgs()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallorgs.operation
  /orgs/{sourcedId}:
    get:
      tags:
      - OrgsManagement
      summary: The REST GET operation for the getOrg() API call.
      description: "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."
      operationId: getOrg
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this org."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getOrg() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getOrg() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleOrg"
        "400":
          description: The 400 (BAD_REQUEST) response to the getOrg() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getOrg() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getOrg() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getOrg() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getOrg() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getOrg() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getOrg() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getOrg() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getorg.operation
  /courses:
    get:
      tags:
      - CoursesManagement
      summary: The REST GET operation for the getAllCourses() API call.
      description: "To read, get, a collection of courses i.e. all courses."
      operationId: getAllCourses
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllCourses() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllCourses() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CourseSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllCourses() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllCourses() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllCourses() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllCourses()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllCourses()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllCourses()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllCourses()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallcourses.operation
  /courses/{sourcedId}:
    get:
      tags:
      - CoursesManagement
      summary: The REST GET operation for the getCourse() API call.
      description: "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."
      operationId: getCourse
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this course."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getCourse() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getCourse() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleCourse"
        "400":
          description: The 400 (BAD_REQUEST) response to the getCourse() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getCourse() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getCourse() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getCourse() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getCourse() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getCourse()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getCourse() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getCourse()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getcourse.operation
  /courses/{courseSourcedId}/classes:
    get:
      tags:
      - CoursesManagement
      summary: The REST GET operation for the getClassesForCourse() API call.
      description: 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.
      operationId: getClassesForCourse
      parameters:
      - name: courseSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific course."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getClassesForCourse() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getClassesForCourse() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getClassesForCourse()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getClassesForCourse()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getClassesForCourse() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getClassesForCourse()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForCourse()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getClassesForCourse()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForCourse()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getclassesforcourse.operation
  /classes:
    get:
      tags:
      - ClassesManagement
      summary: The REST GET operation for the getAllClasses() API call.
      description: "To read, get, a collection of classes i.e. all classes."
      operationId: getAllClasses
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllClasses() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllClasses() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllClasses() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllClasses() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllClasses() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllClasses()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllClasses()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllClasses()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllClasses()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallclasses.operation
  /classes/{sourcedId}:
    get:
      tags:
      - ClassesManagement
      summary: The REST GET operation for the getClass() API call.
      description: "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."
      operationId: getClass
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this class."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleClass"
        "400":
          description: The 400 (BAD_REQUEST) response to the getClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getClass() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getClass() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getclass.operation
  /classes/{classSourcedId}/students:
    get:
      tags:
      - ClassesManagement
      summary: The REST GET operation for the getStudentsForClass() API call.
      description: "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."
      operationId: getStudentsForClass
      parameters:
      - name: classSourcedId
        in: path
        description: "The unique identifier, GUID, for the class."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getStudentsForClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getStudentsForClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getStudentsForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getStudentsForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getStudentsForClass() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getStudentsForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getStudentsForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getStudentsForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getStudentsForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getstudentsforclass.operation
  /classes/{classSourcedId}/teachers:
    get:
      tags:
      - ClassesManagement
      summary: The REST GET operation for the getTeachersForClass() API call.
      description: "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."
      operationId: getTeachersForClass
      parameters:
      - name: classSourcedId
        in: path
        description: "The unique identifier, GUID, for the class."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getTeachersForClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getTeachersForClass() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getTeachersForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getTeachersForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getTeachersForClass() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getTeachersForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getTeachersForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getTeachersForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getTeachersForClass()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getteachersforclass.operation
  /enrollments:
    get:
      tags:
      - EnrollmentsManagement
      summary: The REST GET operation for the getAllEnrollments() API call.
      description: "To read, get, a collection of enrollments i.e. all enrollments."
      operationId: getAllEnrollments
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllEnrollments() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllEnrollments() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnrollmentSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllEnrollments() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllEnrollments()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllEnrollments() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllEnrollments()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllEnrollments()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllEnrollments()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllEnrollments()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallenrollments.operation
  /enrollments/{sourcedId}:
    get:
      tags:
      - EnrollmentsManagement
      summary: The REST GET operation for the getEnrollment() API call.
      description: "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."
      operationId: getEnrollment
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this enrollment."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getEnrollment() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getEnrollment() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleEnrollment"
        "400":
          description: The 400 (BAD_REQUEST) response to the getEnrollment() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getEnrollment() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getEnrollment() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getEnrollment() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getEnrollment()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getEnrollment()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getEnrollment()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getEnrollment()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getenrollment.operation
  /demographics:
    get:
      tags:
      - DemographicsManagement
      summary: The REST GET operation for the getAllDemographics() API call.
      description: "To read, get, a collection of demographics i.e. all demographics."
      operationId: getAllDemographics
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllDemographics() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllDemographics() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DemographicsSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllDemographics() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-demographics.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getalldemographics.operation
  /demographics/{sourcedId}:
    get:
      tags:
      - DemographicsManagement
      summary: The REST GET operation for the getDemographics() API call.
      description: "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."
      operationId: getDemographics
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this user demographics."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getDemographics() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getDemographics() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleDemographics"
        "400":
          description: The 400 (BAD_REQUEST) response to the getDemographics() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getDemographics() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getDemographics() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getDemographics() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getDemographics()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-demographics.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getdemographics.operation
  /academicSessions:
    get:
      tags:
      - AcademicSessionsManagement
      summary: The REST GET operation for the getAllAcademicSessions() API call.
      description: "To read, get, a collection of academic sessions i.e. all academic\
        \ sessions."
      operationId: getAllAcademicSessions
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllAcademicSessions() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllAcademicSessions() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AcademicSessionSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllAcademicSessions()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllAcademicSessions()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllAcademicSessions()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllAcademicSessions()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllAcademicSessions()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllAcademicSessions()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllAcademicSessions()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallacademicsessions.operation
  /academicSessions/{sourcedId}:
    get:
      tags:
      - AcademicSessionsManagement
      summary: The REST GET operation for the getAcademicSession() API call.
      description: "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."
      operationId: getAcademicSession
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this academic session."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAcademicSession() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAcademicSession() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleAcademicSession"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAcademicSession()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAcademicSession()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAcademicSession() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getAcademicSession() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAcademicSession()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAcademicSession()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAcademicSession()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAcademicSession()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getacademicsession.operation
  /schools:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getAllSchools() API call.
      description: "To read, get, a collection of schools i.e. all schools."
      operationId: getAllSchools
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllSchools() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllSchools() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OrgSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllSchools() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllSchools() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllSchools() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllSchools()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllSchools()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllSchools()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllSchools()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallschools.operation
  /schools/{sourcedId}:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getSchool() API call.
      description: "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."
      operationId: getSchool
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleOrg"
        "400":
          description: The 400 (BAD_REQUEST) response to the getSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getSchool() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getSchool() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getschool.operation
  /schools/{schoolSourcedId}/courses:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getCoursesForSchool() API call.
      description: "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."
      operationId: getCoursesForSchool
      parameters:
      - name: schoolSourcedId
        in: path
        description: "The unique identifier, GUID, for the school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getCoursesForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getCoursesForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CourseSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getCoursesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getCoursesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getCoursesForSchool() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getCoursesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getCoursesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getCoursesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getCoursesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getcoursesforschool.operation
  /schools/{schoolSourcedId}/classes/{classSourcedId}/enrollments:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getEnrollmentsForClassInSchool() API
        call.
      description: "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."
      operationId: getEnrollmentsForClassInSchool
      parameters:
      - name: schoolSourcedId
        in: path
        description: "The unique identifier, GUID, for the school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - name: classSourcedId
        in: path
        description: "The unique identifier, GUID, for the class."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getEnrollmentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getEnrollmentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnrollmentSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getEnrollmentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getEnrollmentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getEnrollmentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getEnrollmentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getEnrollmentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getEnrollmentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getEnrollmentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getenrollmentsforclassinschool.operation
  /schools/{schoolSourcedId}/classes/{classSourcedId}/students:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getStudentsForClassInSchool() API call.
      description: "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."
      operationId: getStudentsForClassInSchool
      parameters:
      - name: schoolSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - name: classSourcedId
        in: path
        description: "The unique identifier, GUID, for the class."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getStudentsForClassInSchool() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getStudentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getStudentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getStudentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getStudentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getStudentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getStudentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getStudentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getStudentsForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getstudentsforclassinschool.operation
  /schools/{schoolSourcedId}/classes/{classSourcedId}/teachers:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getTeachersForClassInSchool() API call.
      description: "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."
      operationId: getTeachersForClassInSchool
      parameters:
      - name: schoolSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - name: classSourcedId
        in: path
        description: "The unique identifier, GUID, for the class."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getTeachersForClassInSchool() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getTeachersForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getTeachersForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getTeachersForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getTeachersForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getTeachersForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getTeachersForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getTeachersForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getTeachersForClassInSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getteachersforclassinschool.operation
  /schools/{schoolSourcedId}/enrollments:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getEnrollmentsForSchool() API call.
      description: "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."
      operationId: getEnrollmentsForSchool
      parameters:
      - name: schoolSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getEnrollmentsForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getEnrollmentsForSchool() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnrollmentSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getEnrollmentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getEnrollmentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getEnrollmentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getEnrollmentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getEnrollmentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getEnrollmentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getEnrollmentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getenrollmentsforschool.operation
  /schools/{schoolSourcedId}/students:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getStudentsForSchool() API call.
      description: "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."
      operationId: getStudentsForSchool
      parameters:
      - name: schoolSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getStudentsForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getStudentsForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getStudentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getStudentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getStudentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getStudentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getStudentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getStudentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getStudentsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getstudentsforschool.operation
  /schools/{schoolSourcedId}/teachers:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getTeachersForSchool() API call.
      description: "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."
      operationId: getTeachersForSchool
      parameters:
      - name: schoolSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getTeachersForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getTeachersForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getTeachersForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getTeachersForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getTeachersForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getTeachersForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getTeachersForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getTeachersForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getTeachersForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getteachersforschool.operation
  /schools/{schoolSourcedId}/terms:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getTermsForSchool() API call.
      description: "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."
      operationId: getTermsForSchool
      parameters:
      - name: schoolSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getTermsForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getTermsForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AcademicSessionSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getTermsForSchool() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getTermsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getTermsForSchool() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getTermsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getTermsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getTermsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getTermsForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.gettermsforschool.operation
  /schools/{schoolSourcedId}/classes:
    get:
      tags:
      - SchoolsManagement
      summary: The REST GET operation for the getClassesForSchool() API call.
      description: "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."
      operationId: getClassesForSchool
      parameters:
      - name: schoolSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific school."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getClassesForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getClassesForSchool() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getClassesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getClassesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getClassesForSchool() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getClassesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getClassesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForSchool()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getclassesforschool.operation
  /terms:
    get:
      tags:
      - TermsManagement
      summary: The REST GET operation for the getAllTerms() API call.
      description: "To read, get, a collection of terms i.e. all terms."
      operationId: getAllTerms
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllTerms() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllTerms() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AcademicSessionSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllTerms() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllTerms() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllTerms() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllTerms()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllTerms()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllTerms() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllTerms()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallterms.operation
  /terms/{sourcedId}:
    get:
      tags:
      - TermsManagement
      summary: The REST GET operation for the getTerm() API call.
      description: "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."
      operationId: getTerm
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this term."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getTerm() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getTerm() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleAcademicSession"
        "400":
          description: The 400 (BAD_REQUEST) response to the getTerm() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getTerm() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getTerm() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getTerm() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getTerm() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getTerm() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getTerm() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getTerm() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getterm.operation
  /terms/{termSourcedId}/classes:
    get:
      tags:
      - TermsManagement
      summary: The REST GET operation for the getClassesForTerm() API call.
      description: 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.
      operationId: getClassesForTerm
      parameters:
      - name: termSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific term."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getClassesForTerm() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getClassesForTerm() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getClassesForTerm() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getClassesForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getClassesForTerm() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getClassesForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getClassesForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getclassesforterm.operation
  /terms/{termSourcedId}/gradingPeriods:
    get:
      tags:
      - TermsManagement
      summary: The REST GET operation for the getGradingPeriodsForTerm() API call.
      description: 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.
      operationId: getGradingPeriodsForTerm
      parameters:
      - name: termSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific term."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getGradingPeriodsForTerm() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getGradingPeriodsForTerm() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AcademicSessionSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getGradingPeriodsForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getGradingPeriodsForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getGradingPeriodsForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getGradingPeriodsForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getGradingPeriodsForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getGradingPeriodsForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getGradingPeriodsForTerm()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getgradingperiodsforterm.operation
  /gradingPeriods:
    get:
      tags:
      - GradingPeriodsManagement
      summary: The REST GET operation for the getAllGradingPeriods() API call.
      description: "To read, get, a collection of grading periods i.e. all academic\
        \ sessions."
      operationId: getAllGradingPeriods
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllGradingPeriods() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllGradingPeriods() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AcademicSessionSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllGradingPeriods()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllGradingPeriods()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllGradingPeriods()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllGradingPeriods()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllGradingPeriods()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllGradingPeriods()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllGradingPeriods()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallgradingperiods.operation
  /gradingPeriods/{sourcedId}:
    get:
      tags:
      - GradingPeriodsManagement
      summary: The REST GET operation for the getGradingPeriod() API call.
      description: "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."
      operationId: getGradingPeriod
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this grading period."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getGradingPeriod() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getGradingPeriod() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleAcademicSession"
        "400":
          description: The 400 (BAD_REQUEST) response to the getGradingPeriod() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getGradingPeriod() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getGradingPeriod() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getGradingPeriod() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getGradingPeriod()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getGradingPeriod()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getGradingPeriod()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getGradingPeriod()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getgradingperiod.operation
  /students:
    get:
      tags:
      - StudentsManagement
      summary: The REST GET operation for the getAllStudents() API call.
      description: "To read, get, a collection of students i.e. all students."
      operationId: getAllStudents
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllStudents() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllStudents() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllStudents() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllStudents() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllStudents() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllStudents()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllStudents()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllStudents()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllStudents()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallstudents.operation
  /students/{sourcedId}:
    get:
      tags:
      - StudentsManagement
      summary: The REST GET operation for the getStudent() API call.
      description: "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."
      operationId: getStudent
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this student."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getStudent() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getStudent() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleUser"
        "400":
          description: The 400 (BAD_REQUEST) response to the getStudent() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getStudent() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getStudent() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getStudent() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getStudent() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getStudent() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getStudent()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getStudent()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getstudent.operation
  /students/{studentSourcedId}/classes:
    get:
      tags:
      - StudentsManagement
      summary: The REST GET operation for the getClassesForStudent() API call.
      description: 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.
      operationId: getClassesForStudent
      parameters:
      - name: studentSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific student."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getClassesForStudent() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getClassesForStudent() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getClassesForStudent()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getClassesForStudent()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getClassesForStudent()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getClassesForStudent()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForStudent()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getClassesForStudent()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForStudent()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getclassesforstudent.operation
  /teachers:
    get:
      tags:
      - TeachersManagement
      summary: The REST GET operation for the getAllTeachers() API call.
      description: "To read, get, a collection of teachers i.e. all teachers."
      operationId: getAllTeachers
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllTeachers() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllTeachers() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllTeachers() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllTeachers() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllTeachers() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllTeachers()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllTeachers()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllTeachers()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllTeachers()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallteachers.operation
  /teachers/{sourcedId}:
    get:
      tags:
      - TeachersManagement
      summary: The REST GET operation for the getTeacher() API call.
      description: "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."
      operationId: getTeacher
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this teacher."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getTeacher() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getTeacher() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleUser"
        "400":
          description: The 400 (BAD_REQUEST) response to the getTeacher() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getTeacher() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getTeacher() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getTeacher() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getTeacher() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getTeacher() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getTeacher()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getTeacher()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getteacher.operation
  /teachers/{teacherSourcedId}/classes:
    get:
      tags:
      - TeachersManagement
      summary: The REST GET operation for the getClassesForTeacher() API call.
      description: 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.
      operationId: getClassesForTeacher
      parameters:
      - name: teacherSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific teacher."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getClassesForTeacher() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getClassesForTeacher() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getClassesForTeacher()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getClassesForTeacher()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getClassesForTeacher()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getClassesForTeacher()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForTeacher()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getClassesForTeacher()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForTeacher()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getclassesforteacher.operation
  /users:
    get:
      tags:
      - UsersManagement
      summary: The REST GET operation for the getAllUsers() API call.
      description: "To read, get, a collection of users i.e. all users (including\
        \ students and teachers)."
      operationId: getAllUsers
      parameters:
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getAllUsers() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getAllUsers() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getAllUsers() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getAllUsers() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getAllUsers() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getAllUsers()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getAllUsers()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getAllUsers() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getAllUsers()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getallusers.operation
  /users/{sourcedId}:
    get:
      tags:
      - UsersManagement
      summary: The REST GET operation for the getUser() API call.
      description: "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."
      operationId: getUser
      parameters:
      - name: sourcedId
        in: path
        description: "The unique identifier, GUID, for this user."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getUser() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getUser() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SingleUser"
        "400":
          description: The 400 (BAD_REQUEST) response to the getUser() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getUser() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getUser() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "404":
          description: The 404 (NOT_FOUND) response to the getUser() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getUser() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getUser() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getUser() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getUser() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getuser.operation
  /users/{userSourcedId}/classes:
    get:
      tags:
      - UsersManagement
      summary: The REST GET operation for the getClassesForUser() API call.
      description: 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.
      operationId: getClassesForUser
      parameters:
      - name: userSourcedId
        in: path
        description: "The unique identifier, GUID, for the specific user."
        required: true
        allowEmptyValue: false
        style: simple
        schema:
          type: string
          description: The data-type for establishing a Unique Identifier. There is
            no predefined structure for the identifier and the scope MUST NOT assume
            globally uniqueness.
      - $ref: "#/components/parameters/limit"
      - $ref: "#/components/parameters/offset"
      - $ref: "#/components/parameters/sort"
      - $ref: "#/components/parameters/orderBy"
      - $ref: "#/components/parameters/filter"
      - $ref: "#/components/parameters/fields"
      responses:
        default:
          description: The default response to the getClassesForUser() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "200":
          description: The 200 (OK) response to the getClassesForUser() API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassSet"
        "400":
          description: The 400 (BAD_REQUEST) response to the getClassesForUser() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "401":
          description: The 401 (UNAUTHORIZED) response to the getClassesForUser()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "403":
          description: The 403 (FORBIDDEN) response to the getClassesForUser() API
            call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "405":
          description: The 405 (METHOD_NOT_ALLOWED) response to the getClassesForUser()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "422":
          description: The 422 (UNPROCESSABLE_ENTTITY) response to the getClassesForUser()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "429":
          description: The 429 (TOO_MANY_REQUESTS) response to the getClassesForUser()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
        "500":
          description: The 500 (INTERNAL_SERVER_ERROR) response to the getClassesForUser()
            API call.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/imsx_StatusInfo"
      security:
      - OAuth2CC:
        - https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly
      x-operation-pid: org.1edtech.orrostering.v1p2.rest.getclassesforuser.operation
components:
  schemas:
    UserGUIDRef:
      required:
      - type
      - href
      - sourcedId
      type: object
      properties:
        sourcedId:
          type: string
          description: The globally unique identifier of the object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        href:
          type: string
          description: The URI for the type of object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.anyuri.class
        type:
          type: string
          description: The type of object being referenced i.e. a 'user'.
          enum:
          - user
          x-srcprop-pid: org.1edtech.orrostering.v1p2.userguidreftypeenum.class
      additionalProperties: false
      description: This is the container for reference to a OneRoster 'User' object
        that has an allocated sourcedId (GUID).
      x-class-pid: org.1edtech.orrostering.v1p2.userguidref.class
    OrgGUIDRef:
      required:
      - type
      - href
      - sourcedId
      type: object
      properties:
        sourcedId:
          type: string
          description: The globally unique identifier of the object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        href:
          type: string
          description: The URI for the type of object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.anyuri.class
        type:
          type: string
          description: The type of object being referenced i.e. an 'org'.
          enum:
          - org
          x-srcprop-pid: org.1edtech.orrostering.v1p2.orgguidreftypeenum.class
      additionalProperties: false
      description: This is the container for reference to a OneRoster 'Org' object
        that has an allocated sourcedId (GUID).
      x-class-pid: org.1edtech.orrostering.v1p2.orgguidref.class
    SingleOrg:
      required:
      - org
      type: object
      properties:
        org:
          $ref: "#/components/schemas/Org"
      additionalProperties: false
      description: This is the container for a single org instance for a message payload.
      x-class-pid: org.1edtech.orrostering.v1p2.singleorg.class
    User:
      required:
      - sourcedId
      - status
      - dateLastModified
      - enabledUser
      - givenName
      - familyName
      - roles
      type: object
      properties:
        primaryOrg:
          $ref: "#/components/schemas/OrgGUIDRef"
        metadata:
          $ref: "#/components/schemas/MetadataUser"
        roles:
          minItems: 1
          type: array
          description: 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.
          items:
            $ref: "#/components/schemas/Role"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.role.class
        preferredLastName:
          type: string
          description: The user's preferred last name. This attribute was added in
            version 1.2.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        grades:
          minItems: 0
          type: array
          description: "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."
          items:
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        password:
          type: string
          description: A top-level password for the user. Care should be taken when
            using this field and the password SHOULD be encrypted.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.string.class
        dateLastModified:
          type: string
          description: "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]."
          format: date-time
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.datetime.class
        userIds:
          minItems: 0
          type: array
          description: "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."
          items:
            $ref: "#/components/schemas/UserId"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.userid.class
        familyName:
          type: string
          description: "The family name. Also, known as the last name."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        sms:
          type: string
          description: The SMS number for the user.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        email:
          type: string
          description: The email address for the user.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        sourcedId:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        identifier:
          type: string
          description: 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.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.identifier.class
        enabledUser:
          type: string
          description: 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.
          enum:
          - "true"
          - "false"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.truefalseenum.class
        givenName:
          type: string
          description: "The given name. Also, known as the first name."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        userProfiles:
          minItems: 0
          type: array
          description: The set of system/app/tool profiles for the user.
          items:
            $ref: "#/components/schemas/UserProfile"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.userprofile.class
        userMasterIdentifier:
          type: string
          description: 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.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        resources:
          minItems: 0
          type: array
          description: "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]."
          items:
            $ref: "#/components/schemas/ResourceGUIDRef"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.resourceguidref.class
        preferredMiddleName:
          type: string
          description: The user's preferred middle name(s). This attribute was added
            in version 1.2.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        agents:
          minItems: 0
          type: array
          description: The links to other people i.e. User 'sourcedIds'.
          items:
            $ref: "#/components/schemas/UserGUIDRef"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.userguidref.class
        phone:
          type: string
          description: The phone number for the user.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        preferredFirstName:
          type: string
          description: The user's preferred first name. This attribute was added in
            version 1.2.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        middleName:
          type: string
          description: The set of middle names. If more than one middle name is needed
            separate using a space e.g. 'Wingarde Granville'.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        pronouns:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        status:
          type: string
          description: "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'."
          enum:
          - active
          - tobedeleted
          x-srcprop-pid: org.1edtech.orrostering.v1p2.basestatusenum.class
        username:
          type: string
          description: 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.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
      additionalProperties: false
      description: "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. "
      x-class-pid: org.1edtech.orrostering.v1p2.user.class
    UserProfile:
      required:
      - profileId
      - profileType
      - vendorId
      type: object
      properties:
        profileType:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        credentials:
          minItems: 0
          type: array
          description: The set of credentials that are available for access to this
            profile.
          items:
            $ref: "#/components/schemas/Credential"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.credential.class
        profileId:
          type: string
          description: 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.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.anyuri.class
        vendorId:
          type: string
          description: "The unique identifier for the vendor of the system, tool,\
            \ app, etc. which requires the use of this profile."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        description:
          type: string
          description: A human readable description of the use of the profile. This
            should not contain any security information for access to the account.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.string.class
        applicationId:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
      additionalProperties: false
      description: "The container for the information about a User Profile that will\
        \ provide the user with access to some system, application, tool, etc."
      x-class-pid: org.1edtech.orrostering.v1p2.userprofile.class
    MetadataGeneral:
      type: object
      properties: {}
      additionalProperties: true
      description: The container for the proprietary extensions.
      x-class-pid: org.1edtech.orrostering.v1p2.metadatageneral.class
    UserSet:
      type: object
      properties:
        users:
          minItems: 0
          type: array
          description: The collection of user instances. The order is not significant.
            The corresponding query constraints may result in no instances being returned.
          items:
            $ref: "#/components/schemas/User"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.user.class
      additionalProperties: false
      description: 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.
      x-class-pid: org.1edtech.orrostering.v1p2.userset.class
    CourseGUIDRef:
      required:
      - type
      - href
      - sourcedId
      type: object
      properties:
        sourcedId:
          type: string
          description: The globally unique identifier of the object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        href:
          type: string
          description: The URI for the type of object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.anyuri.class
        type:
          type: string
          description: The type of object being referenced i.e. a 'course'.
          enum:
          - course
          x-srcprop-pid: org.1edtech.orrostering.v1p2.courseguidreftypeenum.class
      additionalProperties: false
      description: This is the container for reference to a OneRoster 'Course' object
        that has an allocated sourcedId (GUID).
      x-class-pid: org.1edtech.orrostering.v1p2.courseguidref.class
    Org:
      required:
      - sourcedId
      - status
      - dateLastModified
      - name
      - type
      - identifier
      type: object
      properties:
        sourcedId:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        identifier:
          type: string
          description: Human readable identifier for this org e.g. NCES ID.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.identifier.class
        parent:
          $ref: "#/components/schemas/OrgGUIDRef"
        metadata:
          $ref: "#/components/schemas/MetadataOrg"
        dateLastModified:
          type: string
          description: "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]."
          format: date-time
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.datetime.class
        children:
          minItems: 0
          type: array
          description: The 'sourcedIds' for the set of child organizations.
          items:
            $ref: "#/components/schemas/OrgGUIDRef"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.orgguidref.class
        name:
          type: string
          description: The name of the organization.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        type:
          description: The type of organization. This uses a predefined vocabulary.
          anyOf:
          - type: string
            enum:
            - department
            - district
            - local
            - national
            - school
            - state
          - pattern: "(ext:)[a-zA-Z0-9\\.\\-_]+"
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.orgtypeenumext.class
        status:
          type: string
          description: "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'."
          enum:
          - active
          - tobedeleted
          x-srcprop-pid: org.1edtech.orrostering.v1p2.basestatusenum.class
      additionalProperties: false
      description: "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."
      x-class-pid: org.1edtech.orrostering.v1p2.org.class
    EnrollmentSet:
      type: object
      properties:
        enrollments:
          minItems: 0
          type: array
          description: The collection of enrollment instances. The order is not significant.
            The corresponding query constraints may result in no instances being returned.
          items:
            $ref: "#/components/schemas/Enrollment"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.enrollment.class
      additionalProperties: false
      description: 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.
      x-class-pid: org.1edtech.orrostering.v1p2.enrollmentset.class
    AcadSessionGUIDRef:
      required:
      - type
      - href
      - sourcedId
      type: object
      properties:
        sourcedId:
          type: string
          description: The globally unique identifier of the object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        href:
          type: string
          description: The URI for the type of object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.anyuri.class
        type:
          type: string
          description: The type of object being referenced i.e. an 'academicSession'.
          enum:
          - academicSession
          x-srcprop-pid: org.1edtech.orrostering.v1p2.acadsessionguidreftypeenum.class
      additionalProperties: false
      description: This is the container for reference to a OneRoster 'Academic Session'
        object that has an allocated sourcedId (GUID).
      x-class-pid: org.1edtech.orrostering.v1p2.acadsessionguidref.class
    MetadataOrg:
      type: object
      properties: {}
      additionalProperties: true
      description: The container for the proprietary extensions for the Org class.
      x-class-pid: org.1edtech.orrostering.v1p2.metadataorg.class
    SingleAcademicSession:
      required:
      - academicSession
      type: object
      properties:
        academicSession:
          $ref: "#/components/schemas/AcademicSession"
      additionalProperties: false
      description: This is the container for a single academicSession instance for
        a message payload.
      x-class-pid: org.1edtech.orrostering.v1p2.singleacademicsession.class
    imsx_CodeMinorField:
      required:
      - imsx_codeMinorFieldName
      - imsx_codeMinorFieldValue
      type: object
      properties:
        imsx_codeMinorFieldName:
          type: string
          description: 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'.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        imsx_codeMinorFieldValue:
          type: string
          description: The code minor status code (this is a value from the corresponding
            enumerated vocabulary).
          enum:
          - fullsuccess
          - invalid_filter_field
          - invalid_selection_field
          - invaliddata
          - unauthorisedrequest
          - forbidden
          - server_busy
          - unknownobject
          - internal_server_error
          x-srcprop-pid: org.1edtech.orrostering.v1p2.imsx_codeminorvalueenum.class
      additionalProperties: false
      description: This is the container for a single code minor status code.
      x-class-pid: org.1edtech.orrostering.v1p2.imsx_codeminorfield.class
    ClassGUIDRef:
      required:
      - type
      - href
      - sourcedId
      type: object
      properties:
        sourcedId:
          type: string
          description: The globally unique identifier of the object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        href:
          type: string
          description: The URI for the type of object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.anyuri.class
        type:
          type: string
          description: The type of object being referenced i.e. a 'class'.
          enum:
          - class
          x-srcprop-pid: org.1edtech.orrostering.v1p2.classguidreftypeenum.class
      additionalProperties: false
      description: This is the container for reference to a OneRoster 'Class' object
        that has an allocated sourcedId (GUID).
      x-class-pid: org.1edtech.orrostering.v1p2.classguidref.class
    Demographics:
      required:
      - sourcedId
      - status
      - dateLastModified
      type: object
      properties:
        sourcedId:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        metadata:
          $ref: "#/components/schemas/MetadataGeneral"
        nativeHawaiianOrOtherPacificIslander:
          type: string
          description: Identification of whether or not the user is Native Hawaiian
            or Other Pacific Islander ethnicity.
          enum:
          - "true"
          - "false"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.truefalseenum.class
        countryOfBirthCode:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        sex:
          description: The sex of the individual. The permitted values are from an
            enumerated list.
          anyOf:
          - type: string
            enum:
            - male
            - female
            - unspecified
            - other
          - pattern: "(ext:)[a-zA-Z0-9\\.\\-_]+"
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.genderenumext.class
        hispanicOrLatinoEthnicity:
          type: string
          description: Identification of whether or not the user is Hispanic or of
            Latino ethnicity.
          enum:
          - "true"
          - "false"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.truefalseenum.class
        asian:
          type: string
          description: Identification of whether or not the user is of Asian ethnicity.
          enum:
          - "true"
          - "false"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.truefalseenum.class
        demographicRaceTwoOrMoreRaces:
          type: string
          description: Identification of whether or not the user has a demographic
            of two or more race ethnicities.
          enum:
          - "true"
          - "false"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.truefalseenum.class
        birthDate:
          type: string
          description: "The date of birth. The format is [ISO 8601] of 'YYYY-MM-DD'."
          format: date
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.date.class
        americanIndianOrAlaskaNative:
          type: string
          description: Identification of whether or not the user is an American Indian
            or Alaska Native ethnicity.
          enum:
          - "true"
          - "false"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.truefalseenum.class
        publicSchoolResidenceStatus:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        cityOfBirth:
          type: string
          description: The name of the city in which the user was born.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        dateLastModified:
          type: string
          description: "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]."
          format: date-time
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.datetime.class
        white:
          type: string
          description: Identification of whether or not the user is of white ethnicity.
          enum:
          - "true"
          - "false"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.truefalseenum.class
        blackOrAfricanAmerican:
          type: string
          description: Identification of whether or not the user is black or African
            American ethnicity.
          enum:
          - "true"
          - "false"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.truefalseenum.class
        stateOfBirthAbbreviation:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        status:
          type: string
          description: "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'."
          enum:
          - active
          - tobedeleted
          x-srcprop-pid: org.1edtech.orrostering.v1p2.basestatusenum.class
      additionalProperties: false
      description: "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."
      x-class-pid: org.1edtech.orrostering.v1p2.demographics.class
    MetadataCourse:
      type: object
      properties: {}
      additionalProperties: true
      description: The container for the proprietary extensions in the Course class.
      x-class-pid: org.1edtech.orrostering.v1p2.metadatacourse.class
    SingleClass:
      required:
      - class
      type: object
      properties:
        class:
          $ref: "#/components/schemas/Class"
      additionalProperties: false
      description: This is the container for a single class instance for a message
        payload.
      x-class-pid: org.1edtech.orrostering.v1p2.singleclass.class
    SingleUser:
      required:
      - user
      type: object
      properties:
        user:
          $ref: "#/components/schemas/User"
      additionalProperties: false
      description: This is the container for a single user instance for a message
        payload.
      x-class-pid: org.1edtech.orrostering.v1p2.singleuser.class
    DemographicsSet:
      type: object
      properties:
        demographics:
          minItems: 0
          type: array
          description: The collection of demographics instances. The order is not
            significant. The corresponding query constraints may result in no instances
            being returned.
          items:
            $ref: "#/components/schemas/Demographics"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.demographics.class
      additionalProperties: false
      description: 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.
      x-class-pid: org.1edtech.orrostering.v1p2.demographicsset.class
    MetadataClass:
      type: object
      properties: {}
      additionalProperties: true
      description: The container for the proprietary extensions in the Class class.
      x-class-pid: org.1edtech.orrostering.v1p2.metadataclass.class
    imsx_StatusInfo:
      required:
      - imsx_codeMajor
      - imsx_severity
      type: object
      properties:
        imsx_CodeMinor:
          $ref: "#/components/schemas/imsx_CodeMinor"
        imsx_codeMajor:
          type: string
          description: 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.
          enum:
          - success
          - processing
          - failure
          - unsupported
          x-srcprop-pid: org.1edtech.orrostering.v1p2.imsx_codemajorenum.class
        imsx_description:
          type: string
          description: A human readable description supplied by the entity creating
            the status code information.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.string.class
        imsx_severity:
          type: string
          description: The severity value (from the corresponding enumerated vocabulary).
            See Appendix B for further information on the interpretation of this set
            of codes.
          enum:
          - status
          - warning
          - error
          x-srcprop-pid: org.1edtech.orrostering.v1p2.imsx_severityenum.class
      additionalProperties: false
      description: 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.
      x-class-pid: org.1edtech.orrostering.v1p2.imsx_statusinfo.class
    Enrollment:
      required:
      - sourcedId
      - status
      - dateLastModified
      - user
      - class
      - school
      - role
      type: object
      properties:
        sourcedId:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        beginDate:
          type: string
          description: "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'."
          format: date
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.date.class
        metadata:
          $ref: "#/components/schemas/MetadataEnrollment"
        dateLastModified:
          type: string
          description: "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]."
          format: date-time
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.datetime.class
        role:
          description: "The role of the user for this class in the school e.g teacher,\
            \ student, etc. This is from an enumerated vocabulary."
          anyOf:
          - type: string
            enum:
            - administrator
            - proctor
            - student
            - teacher
          - pattern: "(ext:)[a-zA-Z0-9\\.\\-_]+"
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.enrolroleenumext.class
        school:
          $ref: "#/components/schemas/OrgGUIDRef"
        endDate:
          type: string
          description: "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'."
          format: date
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.date.class
        user:
          $ref: "#/components/schemas/UserGUIDRef"
        class:
          $ref: "#/components/schemas/ClassGUIDRef"
        status:
          type: string
          description: "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'."
          enum:
          - active
          - tobedeleted
          x-srcprop-pid: org.1edtech.orrostering.v1p2.basestatusenum.class
        primary:
          type: string
          description: 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.
          enum:
          - "true"
          - "false"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.truefalseenum.class
      additionalProperties: false
      description: "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."
      x-class-pid: org.1edtech.orrostering.v1p2.enrollment.class
    SingleCourse:
      required:
      - course
      type: object
      properties:
        course:
          $ref: "#/components/schemas/Course"
      additionalProperties: false
      description: This is the container for a single course instance for a message
        payload.
      x-class-pid: org.1edtech.orrostering.v1p2.singlecourse.class
    AcademicSession:
      required:
      - sourcedId
      - status
      - dateLastModified
      - title
      - startDate
      - endDate
      - type
      - schoolYear
      type: object
      properties:
        sourcedId:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        parent:
          $ref: "#/components/schemas/AcadSessionGUIDRef"
        metadata:
          $ref: "#/components/schemas/MetadataGeneral"
        dateLastModified:
          type: string
          description: "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."
          format: date-time
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.datetime.class
        endDate:
          type: string
          description: "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'."
          format: date
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.date.class
        children:
          minItems: 0
          type: array
          description: The set of links to the child AcademicSessions i.e. a set of
            AcademicSession 'sourcedIds'.
          items:
            $ref: "#/components/schemas/AcadSessionGUIDRef"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.acadsessionguidref.class
        schoolYear:
          type: string
          description: "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'."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        title:
          type: string
          description: The title/label for the academic session.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        type:
          description: The type of academic session. This is based upon an enumerated
            vocabulary.
          anyOf:
          - type: string
            enum:
            - gradingPeriod
            - semester
            - schoolYear
            - term
          - pattern: "(ext:)[a-zA-Z0-9\\.\\-_]+"
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.sessiontypeenumext.class
        startDate:
          type: string
          description: "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'."
          format: date
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.date.class
        status:
          type: string
          description: "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'."
          enum:
          - active
          - tobedeleted
          x-srcprop-pid: org.1edtech.orrostering.v1p2.basestatusenum.class
      additionalProperties: false
      description: "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. "
      x-class-pid: org.1edtech.orrostering.v1p2.academicsession.class
    Course:
      required:
      - sourcedId
      - status
      - dateLastModified
      - title
      - courseCode
      type: object
      properties:
        sourcedId:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        metadata:
          $ref: "#/components/schemas/MetadataCourse"
        dateLastModified:
          type: string
          description: "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]."
          format: date-time
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.datetime.class
        org:
          $ref: "#/components/schemas/OrgGUIDRef"
        subjectCodes:
          minItems: 0
          type: array
          description: "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)."
          items:
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        courseCode:
          type: string
          description: The assigned course code.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        subjects:
          minItems: 0
          type: array
          description: 'The set of subjects addressed by this course. This is a set
            of human readable strings.  '
          items:
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        schoolYear:
          $ref: "#/components/schemas/AcadSessionGUIDRef"
        resources:
          minItems: 0
          type: array
          description: The links to the associated resources if applicable i.e. the
            resource 'sourcedIds'.
          items:
            $ref: "#/components/schemas/ResourceGUIDRef"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.resourceguidref.class
        grades:
          minItems: 0
          type: array
          description: "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."
          items:
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        title:
          type: string
          description: The title of the course.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        status:
          type: string
          description: "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'."
          enum:
          - active
          - tobedeleted
          x-srcprop-pid: org.1edtech.orrostering.v1p2.basestatusenum.class
      additionalProperties: false
      description: "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."
      x-class-pid: org.1edtech.orrostering.v1p2.course.class
    AcademicSessionSet:
      type: object
      properties:
        academicSessions:
          minItems: 0
          type: array
          description: The collection of academicSession instances. The order is not
            significant. The corresponding query constraints may result in no instances
            being returned.
          items:
            $ref: "#/components/schemas/AcademicSession"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.academicsession.class
      additionalProperties: false
      description: 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.
      x-class-pid: org.1edtech.orrostering.v1p2.academicsessionset.class
    ResourceGUIDRef:
      required:
      - type
      - href
      - sourcedId
      type: object
      properties:
        sourcedId:
          type: string
          description: The globally unique identifier of the object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        href:
          type: string
          description: The URI for the type of object being referenced.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.anyuri.class
        type:
          type: string
          description: The type of object being referenced i.e. a 'resource'.
          enum:
          - resource
          x-srcprop-pid: org.1edtech.orrostering.v1p2.resourceguidreftypeenum.class
      additionalProperties: false
      description: This is the container for reference to a OneRoster 'Resource' object
        that has an allocated sourcedId (GUID).
      x-class-pid: org.1edtech.orrostering.v1p2.resourceguidref.class
    Credential:
      required:
      - type
      - username
      type: object
      properties:
        password:
          type: string
          description: The password in this set of credentials.  Care should be taken
            to ensure that no unencrypted value is revealed.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.string.class
        type:
          type: string
          description: The type of credentials for the profile. This should be indicative
            of when this specific credential should be used.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.string.class
        username:
          type: string
          description: The username.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
      additionalProperties: true
      description: The container for a single set of credentials for an account.
      x-class-pid: org.1edtech.orrostering.v1p2.credential.class
    Role:
      required:
      - roleType
      - role
      - org
      type: object
      properties:
        beginDate:
          type: string
          description: 'The start date on which the role becomes active (inclusive). '
          format: date
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.date.class
        role:
          description: 'The role of the user in the org. The permitted values are
            from an enumerated list. '
          anyOf:
          - type: string
            enum:
            - aide
            - counselor
            - districtAdministrator
            - guardian
            - parent
            - principal
            - proctor
            - relative
            - siteAdministrator
            - student
            - systemAdministrator
            - teacher
          - pattern: "(ext:)[a-zA-Z0-9\\.\\-_]+"
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.roleenumext.class
        org:
          $ref: "#/components/schemas/OrgGUIDRef"
        endDate:
          type: string
          description: 'The end date on which the role becomes inactive (exclusive). '
          format: date
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.date.class
        roleType:
          type: string
          description: "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."
          enum:
          - primary
          - secondary
          x-srcprop-pid: org.1edtech.orrostering.v1p2.roletypeenum.class
        userProfile:
          type: string
          description: 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.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.anyuri.class
      additionalProperties: false
      description: The container for one mapping between a role and an org for the
        user.
      x-class-pid: org.1edtech.orrostering.v1p2.role.class
    imsx_CodeMinor:
      required:
      - imsx_codeMinorField
      type: object
      properties:
        imsx_codeMinorField:
          minItems: 1
          type: array
          description: Each reported code minor status code.
          items:
            $ref: "#/components/schemas/imsx_CodeMinorField"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.imsx_codeminorfield.class
      additionalProperties: false
      description: This is the container for the set of code minor status codes reported
        in the responses from the Service Provider.
      x-class-pid: org.1edtech.orrostering.v1p2.imsx_codeminor.class
    ClassSet:
      type: object
      properties:
        classes:
          minItems: 0
          type: array
          description: The collection of class instances. The order is not significant.
            The corresponding query constraints may result in no instances being returned.
          items:
            $ref: "#/components/schemas/Class"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.class.class
      additionalProperties: false
      description: 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.
      x-class-pid: org.1edtech.orrostering.v1p2.classset.class
    UserId:
      required:
      - type
      - identifier
      type: object
      properties:
        identifier:
          type: string
          description: The user identifier.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.identifier.class
        type:
          type: string
          description: The type of identifier. This is no predefined vocabulary.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
      additionalProperties: false
      description: "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."
      x-class-pid: org.1edtech.orrostering.v1p2.userid.class
    CourseSet:
      type: object
      properties:
        courses:
          minItems: 0
          type: array
          description: The collection of course instances. The order is not significant.
            The corresponding query constraints may result in no instances being returned.
          items:
            $ref: "#/components/schemas/Course"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.course.class
      additionalProperties: false
      description: 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.
      x-class-pid: org.1edtech.orrostering.v1p2.courseset.class
    SingleDemographics:
      required:
      - demographics
      type: object
      properties:
        demographics:
          $ref: "#/components/schemas/Demographics"
      additionalProperties: false
      description: This is the container for a single demographics instance for a
        message payload.
      x-class-pid: org.1edtech.orrostering.v1p2.singledemographics.class
    Class:
      required:
      - sourcedId
      - status
      - dateLastModified
      - title
      - course
      - school
      - terms
      type: object
      properties:
        sourcedId:
          type: string
          description: "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."
          x-srcprop-pid: org.1edtech.orrostering.v1p2.derived.sourcedid.class
        classCode:
          type: string
          description: The class code.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        metadata:
          $ref: "#/components/schemas/MetadataClass"
        subjectCodes:
          minItems: 0
          type: array
          description: "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)."
          items:
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        subjects:
          minItems: 0
          type: array
          description: The set of subjects addressed by this class e.g. 'chemistry'.
          items:
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        resources:
          minItems: 0
          type: array
          description: The links to the set of associated resources i.e. the Resource
            'sourcedIds'.
          items:
            $ref: "#/components/schemas/ResourceGUIDRef"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.resourceguidref.class
        grades:
          minItems: 0
          type: array
          description: "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."
          items:
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        title:
          type: string
          description: The tile/label for the class.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        dateLastModified:
          type: string
          description: "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]."
          format: date-time
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.datetime.class
        school:
          $ref: "#/components/schemas/OrgGUIDRef"
        terms:
          minItems: 1
          type: array
          description: The links to the set of terms or semesters (academicSession)
            i.e. the set of 'sourcedIds' for the terms within the associated school
            year.
          items:
            $ref: "#/components/schemas/AcadSessionGUIDRef"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.acadsessionguidref.class
        course:
          $ref: "#/components/schemas/CourseGUIDRef"
        periods:
          minItems: 0
          type: array
          description: "The time slots in the day that the class will be given. Examples\
            \ are 1 or a list of 1, 3, 5, etc."
          items:
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        location:
          type: string
          description: The location for the class e.g. 'Room 19'.
          x-srcprop-pid: org.1edtech.orrostering.v1p2.primitive.normalizedstring.class
        classType:
          description: The type of class. This is based upon an enumerated vocabulary.
          anyOf:
          - type: string
            enum:
            - homeroom
            - scheduled
          - pattern: "(ext:)[a-zA-Z0-9\\.\\-_]+"
            type: string
          x-srcprop-pid: org.1edtech.orrostering.v1p2.classtypeenumext.class
        status:
          type: string
          description: "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'."
          enum:
          - active
          - tobedeleted
          x-srcprop-pid: org.1edtech.orrostering.v1p2.basestatusenum.class
      additionalProperties: false
      description: "A class is an instance of a course, onto which students and teachers\
        \ are enrolled. A class is typically held within a term."
      x-class-pid: org.1edtech.orrostering.v1p2.class.class
    MetadataUser:
      type: object
      properties: {}
      additionalProperties: true
      description: The container for the proprietary extensions in the User class.
      x-class-pid: org.1edtech.orrostering.v1p2.metadatauser.class
    SingleEnrollment:
      required:
      - enrollment
      type: object
      properties:
        enrollment:
          $ref: "#/components/schemas/Enrollment"
      additionalProperties: false
      description: This is the container for a single enrollment instance for a message
        payload.
      x-class-pid: org.1edtech.orrostering.v1p2.singleenrollment.class
    OrgSet:
      type: object
      properties:
        orgs:
          minItems: 0
          type: array
          description: The collection of org instances. The order is not significant.
            The corresponding query constraints may result in no instances being returned.
          items:
            $ref: "#/components/schemas/Org"
          x-srcprop-pid: org.1edtech.orrostering.v1p2.org.class
      additionalProperties: false
      description: 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.
      x-class-pid: org.1edtech.orrostering.v1p2.orgset.class
    MetadataEnrollment:
      type: object
      properties: {}
      additionalProperties: true
      description: The container for the proprietary extensions in the Enrollment
        class.
      x-class-pid: org.1edtech.orrostering.v1p2.metadataenrollment.class
  parameters:
    filter:
      name: filter
      in: query
      description: "The filtering rules to be applied when identifying the records\
        \ to be supplied in the response message. The sort order should follow the\
        \ [UNICODE, 16] standard."
      required: false
      allowEmptyValue: false
      style: form
      schema:
        type: string
    offset:
      name: offset
      in: query
      description: The number of the first record to be supplied in the segmented
        response message.
      required: false
      allowEmptyValue: false
      style: form
      schema:
        minimum: 0
        type: integer
        format: int32
    limit:
      name: limit
      in: query
      description: To define the download segmentation value i.e. the maximum number
        of records to be contained in the response.
      required: false
      allowEmptyValue: false
      style: form
      schema:
        minimum: 1
        type: integer
        format: int32
    orderBy:
      name: orderBy
      in: query
      description: "The form of ordering for response to the sorted request i.e. ascending\
        \ (asc) or descending (desc). The sort order should follow the [UNICODE, 16]\
        \ standard."
      required: false
      allowEmptyValue: false
      style: form
      schema:
        type: string
        enum:
        - asc
        - desc
    sort:
      name: sort
      in: query
      description: "Identifies the sort criteria to be used for the records in the\
        \ response message. Use with the orderBy parameter. The sort order should\
        \ follow the [UNICODE, 16] standard."
      required: false
      allowEmptyValue: false
      style: form
      schema:
        type: string
    fields:
      name: fields
      in: query
      description: To identify the range of fields that should be supplied in the
        response message.
      required: false
      allowEmptyValue: false
      style: form
      schema:
        type: string
  securitySchemes:
    OAuth2CC:
      type: oauth2
      description: OAuth 2 Client Credentials (as per the requirements in the IMS
        Security Framework) is to be used.
      flows:
        clientCredentials:
          tokenUrl: https://www.imsglobal.org
          scopes:
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly: Support
              for all of the read operations (excluding demographics) to enable information
              about collections or a single object to be obtained.
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly: The
              core set of read operations to enable information about collections
              or a single object to be obtained.
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster-demographics.readonly: The
              read operations to provide all demographics or a single demographics
              object to be obtained.

JSON Schema Listings

This Section is NORMATIVE.

JSON Schemas for Payload Validation

AcademicSessionSet

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "AcademicSessionSet",
  "title" : "JSON Schema for the AcademicSessionSet class.",
  "description" : "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.",
  "type" : "object",
  "properties" : {
    "academicSessions" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/$defs/AcademicSession"
      }
    }
  },
  "required" : [ ],
  "additionalProperties" : false,
  "$defs" : {
    "AcademicSession" : {
      "description" : "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. ",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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.",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "title" : {
          "description" : "The title/label for the academic session.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "startDate" : {
          "description" : "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'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "endDate" : {
          "description" : "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'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "type" : {
          "description" : "The type of academic session. This is based upon an enumerated vocabulary.",
          "$comment" : "Origin: SessionTypeEnumExt (Union); The data-type for the type of academic session. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "gradingPeriod", "semester", "schoolYear", "term" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "parent" : {
          "$ref" : "#/$defs/AcadSessionGUIDRef"
        },
        "children" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/AcadSessionGUIDRef"
          }
        },
        "schoolYear" : {
          "description" : "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'.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataGeneral"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "title", "startDate", "endDate", "type", "schoolYear" ],
      "additionalProperties" : false
    },
    "MetadataGeneral" : {
      "description" : "The container for the proprietary extensions.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    },
    "AcadSessionGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Academic Session' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'academicSession'.",
          "$comment" : "Origin: AcadSessionGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Academic Session'.",
          "type" : "string",
          "enum" : [ "academicSession" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    }
  }
}

ClassSet

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "ClassSet",
  "title" : "JSON Schema for the ClassSet class.",
  "description" : "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.",
  "type" : "object",
  "properties" : {
    "classes" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/$defs/Class"
      }
    }
  },
  "required" : [ ],
  "additionalProperties" : false,
  "$defs" : {
    "Class" : {
      "description" : "A class is an instance of a course, onto which students and teachers are enrolled. A class is typically held within a term.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "title" : {
          "description" : "The tile/label for the class.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "classCode" : {
          "description" : "The class code.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "classType" : {
          "description" : "The type of class. This is based upon an enumerated vocabulary.",
          "$comment" : "Origin: ClassTypeEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "homeroom", "scheduled" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "location" : {
          "description" : "The location for the class e.g. 'Room 19'.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "grades" : {
          "type" : "array",
          "items" : {
            "description" : "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.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "subjects" : {
          "type" : "array",
          "items" : {
            "description" : "The set of subjects addressed by this class e.g. 'chemistry'.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "course" : {
          "$ref" : "#/$defs/CourseGUIDRef"
        },
        "school" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "terms" : {
          "type" : "array",
          "minItems" : 1,
          "items" : {
            "$ref" : "#/$defs/AcadSessionGUIDRef"
          }
        },
        "subjectCodes" : {
          "type" : "array",
          "items" : {
            "description" : "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).",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "periods" : {
          "type" : "array",
          "items" : {
            "description" : "The time slots in the day that the class will be given. Examples are 1 or a list of 1, 3, 5, etc.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "resources" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceGUIDRef"
          }
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataClass"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "title", "course", "school", "terms" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "CourseGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Course' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'course'.",
          "$comment" : "Origin: CourseGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Course'.",
          "type" : "string",
          "enum" : [ "course" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "ResourceGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Resource' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'resource'.",
          "$comment" : "Origin: ResourceGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Resource'.",
          "type" : "string",
          "enum" : [ "resource" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "AcadSessionGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Academic Session' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'academicSession'.",
          "$comment" : "Origin: AcadSessionGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Academic Session'.",
          "type" : "string",
          "enum" : [ "academicSession" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataClass" : {
      "description" : "The container for the proprietary extensions in the Class class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    }
  }
}

CourseSet

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "CourseSet",
  "title" : "JSON Schema for the CourseSet class.",
  "description" : "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.",
  "type" : "object",
  "properties" : {
    "courses" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/$defs/Course"
      }
    }
  },
  "required" : [ ],
  "additionalProperties" : false,
  "$defs" : {
    "Course" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "title" : {
          "description" : "The title of the course.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "schoolYear" : {
          "$ref" : "#/$defs/AcadSessionGUIDRef"
        },
        "courseCode" : {
          "description" : "The assigned course code.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "grades" : {
          "type" : "array",
          "items" : {
            "description" : "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.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "subjects" : {
          "type" : "array",
          "items" : {
            "description" : "The set of subjects addressed by this course. This is a set of human readable strings.  ",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "org" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "subjectCodes" : {
          "type" : "array",
          "items" : {
            "description" : "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).",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "resources" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceGUIDRef"
          }
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataCourse"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "title", "courseCode" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataCourse" : {
      "description" : "The container for the proprietary extensions in the Course class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    },
    "ResourceGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Resource' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'resource'.",
          "$comment" : "Origin: ResourceGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Resource'.",
          "type" : "string",
          "enum" : [ "resource" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "AcadSessionGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Academic Session' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'academicSession'.",
          "$comment" : "Origin: AcadSessionGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Academic Session'.",
          "type" : "string",
          "enum" : [ "academicSession" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    }
  }
}

DemographicsSet

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "DemographicsSet",
  "title" : "JSON Schema for the DemographicsSet class.",
  "description" : "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.",
  "type" : "object",
  "properties" : {
    "demographics" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/$defs/Demographics"
      }
    }
  },
  "required" : [ ],
  "additionalProperties" : false,
  "$defs" : {
    "Demographics" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "birthDate" : {
          "description" : "The date of birth. The format is [ISO 8601] of 'YYYY-MM-DD'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "sex" : {
          "description" : "The sex of the individual. The permitted values are from an enumerated list.",
          "$comment" : "Origin: GenderEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "male", "female", "unspecified", "other" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "americanIndianOrAlaskaNative" : {
          "description" : "Identification of whether or not the user is an American Indian or Alaska Native ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "asian" : {
          "description" : "Identification of whether or not the user is of Asian ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "blackOrAfricanAmerican" : {
          "description" : "Identification of whether or not the user is black or African American ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "nativeHawaiianOrOtherPacificIslander" : {
          "description" : "Identification of whether or not the user is Native Hawaiian or Other Pacific Islander ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "white" : {
          "description" : "Identification of whether or not the user is of white ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "demographicRaceTwoOrMoreRaces" : {
          "description" : "Identification of whether or not the user has a demographic of two or more race ethnicities.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "hispanicOrLatinoEthnicity" : {
          "description" : "Identification of whether or not the user is Hispanic or of Latino ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "countryOfBirthCode" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "stateOfBirthAbbreviation" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "cityOfBirth" : {
          "description" : "The name of the city in which the user was born.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "publicSchoolResidenceStatus" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataGeneral"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified" ],
      "additionalProperties" : false
    },
    "MetadataGeneral" : {
      "description" : "The container for the proprietary extensions.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    }
  }
}

EnrollmentSet

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "EnrollmentSet",
  "title" : "JSON Schema for the EnrollmentSet class.",
  "description" : "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.",
  "type" : "object",
  "properties" : {
    "enrollments" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/$defs/Enrollment"
      }
    }
  },
  "required" : [ ],
  "additionalProperties" : false,
  "$defs" : {
    "Enrollment" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "user" : {
          "$ref" : "#/$defs/UserGUIDRef"
        },
        "class" : {
          "$ref" : "#/$defs/ClassGUIDRef"
        },
        "school" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "role" : {
          "description" : "The role of the user for this class in the school e.g teacher, student, etc. This is from an enumerated vocabulary.",
          "$comment" : "Origin: EnrolRoleEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "administrator", "proctor", "student", "teacher" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "primary" : {
          "description" : "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.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "beginDate" : {
          "description" : "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'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "endDate" : {
          "description" : "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'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataEnrollment"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "user", "class", "school", "role" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "ClassGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Class' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'class'.",
          "$comment" : "Origin: ClassGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Class'.",
          "type" : "string",
          "enum" : [ "class" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataEnrollment" : {
      "description" : "The container for the proprietary extensions in the Enrollment class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    },
    "UserGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'User' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'user'.",
          "$comment" : "Origin: UserGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'User.",
          "type" : "string",
          "enum" : [ "user" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    }
  }
}

NonNegativeInteger

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "NonNegativeInteger",
  "title" : "JSON Schema for the NonNegativeInteger class.",
  "description" : "No description supplied.",
  "type" : "object",
  "properties" : { },
  "required" : [ ],
  "additionalProperties" : false
}

OrderByEnum

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "OrderByEnum",
  "title" : "JSON Schema for the OrderByEnum class.",
  "description" : "No description supplied.",
  "type" : "object",
  "properties" : {
    "asc" : {
      "description" : "No description supplied.",
      "$comment" : "Origin: String (PrimitiveType)",
      "type" : "string"
    },
    "desc" : {
      "description" : "No description supplied.",
      "$comment" : "Origin: String (PrimitiveType)",
      "type" : "string"
    }
  },
  "required" : [ "asc", "desc" ],
  "additionalProperties" : false
}

OrgSet

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "OrgSet",
  "title" : "JSON Schema for the OrgSet class.",
  "description" : "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.",
  "type" : "object",
  "properties" : {
    "orgs" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/$defs/Org"
      }
    }
  },
  "required" : [ ],
  "additionalProperties" : false,
  "$defs" : {
    "Org" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "name" : {
          "description" : "The name of the organization.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "type" : {
          "description" : "The type of organization. This uses a predefined vocabulary.",
          "$comment" : "Origin: OrgTypeEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "department", "district", "local", "national", "school", "state" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "identifier" : {
          "description" : "Human readable identifier for this org e.g. NCES ID.",
          "$comment" : "Origin: Identifier (DerivedType); The data-type for a local unique identifier. The scope of the uniqueness of this identifier is determined by the organization assigning it.",
          "type" : "string"
        },
        "parent" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "children" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/OrgGUIDRef"
          }
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataOrg"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "name", "type", "identifier" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataOrg" : {
      "description" : "The container for the proprietary extensions for the Org class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    }
  }
}

PositiveInteger

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "PositiveInteger",
  "title" : "JSON Schema for the PositiveInteger class.",
  "description" : "No description supplied.",
  "type" : "object",
  "properties" : { },
  "required" : [ ],
  "additionalProperties" : false
}

SingleAcademicSession

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "SingleAcademicSession",
  "title" : "JSON Schema for the SingleAcademicSession class.",
  "description" : "This is the container for a single academicSession instance for a message payload.",
  "type" : "object",
  "properties" : {
    "academicSession" : {
      "$ref" : "#/$defs/AcademicSession"
    }
  },
  "required" : [ "academicSession" ],
  "additionalProperties" : false,
  "$defs" : {
    "AcademicSession" : {
      "description" : "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. ",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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.",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "title" : {
          "description" : "The title/label for the academic session.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "startDate" : {
          "description" : "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'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "endDate" : {
          "description" : "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'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "type" : {
          "description" : "The type of academic session. This is based upon an enumerated vocabulary.",
          "$comment" : "Origin: SessionTypeEnumExt (Union); The data-type for the type of academic session. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "gradingPeriod", "semester", "schoolYear", "term" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "parent" : {
          "$ref" : "#/$defs/AcadSessionGUIDRef"
        },
        "children" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/AcadSessionGUIDRef"
          }
        },
        "schoolYear" : {
          "description" : "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'.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataGeneral"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "title", "startDate", "endDate", "type", "schoolYear" ],
      "additionalProperties" : false
    },
    "MetadataGeneral" : {
      "description" : "The container for the proprietary extensions.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    },
    "AcadSessionGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Academic Session' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'academicSession'.",
          "$comment" : "Origin: AcadSessionGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Academic Session'.",
          "type" : "string",
          "enum" : [ "academicSession" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    }
  }
}

SingleClass

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "SingleClass",
  "title" : "JSON Schema for the SingleClass class.",
  "description" : "This is the container for a single class instance for a message payload.",
  "type" : "object",
  "properties" : {
    "class" : {
      "$ref" : "#/$defs/Class"
    }
  },
  "required" : [ "class" ],
  "additionalProperties" : false,
  "$defs" : {
    "Class" : {
      "description" : "A class is an instance of a course, onto which students and teachers are enrolled. A class is typically held within a term.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "title" : {
          "description" : "The tile/label for the class.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "classCode" : {
          "description" : "The class code.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "classType" : {
          "description" : "The type of class. This is based upon an enumerated vocabulary.",
          "$comment" : "Origin: ClassTypeEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "homeroom", "scheduled" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "location" : {
          "description" : "The location for the class e.g. 'Room 19'.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "grades" : {
          "type" : "array",
          "items" : {
            "description" : "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.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "subjects" : {
          "type" : "array",
          "items" : {
            "description" : "The set of subjects addressed by this class e.g. 'chemistry'.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "course" : {
          "$ref" : "#/$defs/CourseGUIDRef"
        },
        "school" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "terms" : {
          "type" : "array",
          "minItems" : 1,
          "items" : {
            "$ref" : "#/$defs/AcadSessionGUIDRef"
          }
        },
        "subjectCodes" : {
          "type" : "array",
          "items" : {
            "description" : "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).",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "periods" : {
          "type" : "array",
          "items" : {
            "description" : "The time slots in the day that the class will be given. Examples are 1 or a list of 1, 3, 5, etc.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "resources" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceGUIDRef"
          }
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataClass"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "title", "course", "school", "terms" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "CourseGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Course' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'course'.",
          "$comment" : "Origin: CourseGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Course'.",
          "type" : "string",
          "enum" : [ "course" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "ResourceGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Resource' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'resource'.",
          "$comment" : "Origin: ResourceGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Resource'.",
          "type" : "string",
          "enum" : [ "resource" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "AcadSessionGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Academic Session' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'academicSession'.",
          "$comment" : "Origin: AcadSessionGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Academic Session'.",
          "type" : "string",
          "enum" : [ "academicSession" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataClass" : {
      "description" : "The container for the proprietary extensions in the Class class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    }
  }
}

SingleCourse

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "SingleCourse",
  "title" : "JSON Schema for the SingleCourse class.",
  "description" : "This is the container for a single course instance for a message payload.",
  "type" : "object",
  "properties" : {
    "course" : {
      "$ref" : "#/$defs/Course"
    }
  },
  "required" : [ "course" ],
  "additionalProperties" : false,
  "$defs" : {
    "Course" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "title" : {
          "description" : "The title of the course.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "schoolYear" : {
          "$ref" : "#/$defs/AcadSessionGUIDRef"
        },
        "courseCode" : {
          "description" : "The assigned course code.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "grades" : {
          "type" : "array",
          "items" : {
            "description" : "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.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "subjects" : {
          "type" : "array",
          "items" : {
            "description" : "The set of subjects addressed by this course. This is a set of human readable strings.  ",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "org" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "subjectCodes" : {
          "type" : "array",
          "items" : {
            "description" : "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).",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "resources" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceGUIDRef"
          }
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataCourse"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "title", "courseCode" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataCourse" : {
      "description" : "The container for the proprietary extensions in the Course class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    },
    "ResourceGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Resource' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'resource'.",
          "$comment" : "Origin: ResourceGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Resource'.",
          "type" : "string",
          "enum" : [ "resource" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "AcadSessionGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Academic Session' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'academicSession'.",
          "$comment" : "Origin: AcadSessionGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Academic Session'.",
          "type" : "string",
          "enum" : [ "academicSession" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    }
  }
}

SingleDemographics

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "SingleDemographics",
  "title" : "JSON Schema for the SingleDemographics class.",
  "description" : "This is the container for a single demographics instance for a message payload.",
  "type" : "object",
  "properties" : {
    "demographics" : {
      "$ref" : "#/$defs/Demographics"
    }
  },
  "required" : [ "demographics" ],
  "additionalProperties" : false,
  "$defs" : {
    "Demographics" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "birthDate" : {
          "description" : "The date of birth. The format is [ISO 8601] of 'YYYY-MM-DD'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "sex" : {
          "description" : "The sex of the individual. The permitted values are from an enumerated list.",
          "$comment" : "Origin: GenderEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "male", "female", "unspecified", "other" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "americanIndianOrAlaskaNative" : {
          "description" : "Identification of whether or not the user is an American Indian or Alaska Native ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "asian" : {
          "description" : "Identification of whether or not the user is of Asian ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "blackOrAfricanAmerican" : {
          "description" : "Identification of whether or not the user is black or African American ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "nativeHawaiianOrOtherPacificIslander" : {
          "description" : "Identification of whether or not the user is Native Hawaiian or Other Pacific Islander ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "white" : {
          "description" : "Identification of whether or not the user is of white ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "demographicRaceTwoOrMoreRaces" : {
          "description" : "Identification of whether or not the user has a demographic of two or more race ethnicities.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "hispanicOrLatinoEthnicity" : {
          "description" : "Identification of whether or not the user is Hispanic or of Latino ethnicity.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "countryOfBirthCode" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "stateOfBirthAbbreviation" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "cityOfBirth" : {
          "description" : "The name of the city in which the user was born.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "publicSchoolResidenceStatus" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataGeneral"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified" ],
      "additionalProperties" : false
    },
    "MetadataGeneral" : {
      "description" : "The container for the proprietary extensions.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    }
  }
}

SingleEnrollment

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "SingleEnrollment",
  "title" : "JSON Schema for the SingleEnrollment class.",
  "description" : "This is the container for a single enrollment instance for a message payload.",
  "type" : "object",
  "properties" : {
    "enrollment" : {
      "$ref" : "#/$defs/Enrollment"
    }
  },
  "required" : [ "enrollment" ],
  "additionalProperties" : false,
  "$defs" : {
    "Enrollment" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "user" : {
          "$ref" : "#/$defs/UserGUIDRef"
        },
        "class" : {
          "$ref" : "#/$defs/ClassGUIDRef"
        },
        "school" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "role" : {
          "description" : "The role of the user for this class in the school e.g teacher, student, etc. This is from an enumerated vocabulary.",
          "$comment" : "Origin: EnrolRoleEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "administrator", "proctor", "student", "teacher" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "primary" : {
          "description" : "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.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "beginDate" : {
          "description" : "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'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "endDate" : {
          "description" : "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'.",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataEnrollment"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "user", "class", "school", "role" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "ClassGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Class' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'class'.",
          "$comment" : "Origin: ClassGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Class'.",
          "type" : "string",
          "enum" : [ "class" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataEnrollment" : {
      "description" : "The container for the proprietary extensions in the Enrollment class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    },
    "UserGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'User' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'user'.",
          "$comment" : "Origin: UserGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'User.",
          "type" : "string",
          "enum" : [ "user" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    }
  }
}

SingleOrg

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "SingleOrg",
  "title" : "JSON Schema for the SingleOrg class.",
  "description" : "This is the container for a single org instance for a message payload.",
  "type" : "object",
  "properties" : {
    "org" : {
      "$ref" : "#/$defs/Org"
    }
  },
  "required" : [ "org" ],
  "additionalProperties" : false,
  "$defs" : {
    "Org" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "name" : {
          "description" : "The name of the organization.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "type" : {
          "description" : "The type of organization. This uses a predefined vocabulary.",
          "$comment" : "Origin: OrgTypeEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "department", "district", "local", "national", "school", "state" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "identifier" : {
          "description" : "Human readable identifier for this org e.g. NCES ID.",
          "$comment" : "Origin: Identifier (DerivedType); The data-type for a local unique identifier. The scope of the uniqueness of this identifier is determined by the organization assigning it.",
          "type" : "string"
        },
        "parent" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "children" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/OrgGUIDRef"
          }
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataOrg"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "name", "type", "identifier" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataOrg" : {
      "description" : "The container for the proprietary extensions for the Org class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    }
  }
}

SingleUser

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "SingleUser",
  "title" : "JSON Schema for the SingleUser class.",
  "description" : "This is the container for a single user instance for a message payload.",
  "type" : "object",
  "properties" : {
    "user" : {
      "$ref" : "#/$defs/User"
    }
  },
  "required" : [ "user" ],
  "additionalProperties" : false,
  "$defs" : {
    "User" : {
      "description" : "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. ",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "userMasterIdentifier" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "username" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "userIds" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/UserId"
          }
        },
        "enabledUser" : {
          "description" : "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.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "givenName" : {
          "description" : "The given name. Also, known as the first name.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "familyName" : {
          "description" : "The family name. Also, known as the last name.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "middleName" : {
          "description" : "The set of middle names. If more than one middle name is needed separate using a space e.g. 'Wingarde Granville'.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "preferredFirstName" : {
          "description" : "The user's preferred first name. This attribute was added in version 1.2.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "preferredMiddleName" : {
          "description" : "The user's preferred middle name(s). This attribute was added in version 1.2.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "preferredLastName" : {
          "description" : "The user's preferred last name. This attribute was added in version 1.2.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "pronouns" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "roles" : {
          "type" : "array",
          "minItems" : 1,
          "items" : {
            "$ref" : "#/$defs/Role"
          }
        },
        "userProfiles" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/UserProfile"
          }
        },
        "primaryOrg" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "identifier" : {
          "description" : "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.",
          "$comment" : "Origin: Identifier (DerivedType); The data-type for a local unique identifier. The scope of the uniqueness of this identifier is determined by the organization assigning it.",
          "type" : "string"
        },
        "email" : {
          "description" : "The email address for the user.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "sms" : {
          "description" : "The SMS number for the user.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "phone" : {
          "description" : "The phone number for the user.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "agents" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/UserGUIDRef"
          }
        },
        "grades" : {
          "type" : "array",
          "items" : {
            "description" : "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.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "password" : {
          "description" : "A top-level password for the user. Care should be taken when using this field and the password SHOULD be encrypted.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        },
        "resources" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceGUIDRef"
          }
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataUser"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "enabledUser", "givenName", "familyName", "roles" ],
      "additionalProperties" : false
    },
    "UserProfile" : {
      "description" : "The container for the information about a User Profile that will provide the user with access to some system, application, tool, etc.",
      "type" : "object",
      "properties" : {
        "profileId" : {
          "description" : "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.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "profileType" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "vendorId" : {
          "description" : "The unique identifier for the vendor of the system, tool, app, etc. which requires the use of this profile.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "applicationId" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "description" : {
          "description" : "A human readable description of the use of the profile. This should not contain any security information for access to the account.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        },
        "credentials" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/Credential"
          }
        }
      },
      "required" : [ "profileId", "profileType", "vendorId" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataUser" : {
      "description" : "The container for the proprietary extensions in the User class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    },
    "Role" : {
      "description" : "The container for one mapping between a role and an org for the user.",
      "type" : "object",
      "properties" : {
        "roleType" : {
          "description" : "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.",
          "$comment" : "Origin: RoleTypeEnum (Enumeration); The type of role for the role-org mappings. Each mapping must have a role type of which only one must have a roleType of 'primary' and the others must be 'secondary'. ",
          "type" : "string",
          "enum" : [ "primary", "secondary" ]
        },
        "role" : {
          "description" : "The role of the user in the org. The permitted values are from an enumerated list. ",
          "$comment" : "Origin: RoleEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "aide", "counselor", "districtAdministrator", "guardian", "parent", "principal", "proctor", "relative", "siteAdministrator", "student", "systemAdministrator", "teacher" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "org" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "userProfile" : {
          "description" : "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.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "beginDate" : {
          "description" : "The start date on which the role becomes active (inclusive). ",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "endDate" : {
          "description" : "The end date on which the role becomes inactive (exclusive). ",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        }
      },
      "required" : [ "roleType", "role", "org" ],
      "additionalProperties" : false
    },
    "ResourceGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Resource' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'resource'.",
          "$comment" : "Origin: ResourceGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Resource'.",
          "type" : "string",
          "enum" : [ "resource" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "UserId" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of identifier. This is no predefined vocabulary.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "identifier" : {
          "description" : "The user identifier.",
          "$comment" : "Origin: Identifier (DerivedType); The data-type for a local unique identifier. The scope of the uniqueness of this identifier is determined by the organization assigning it.",
          "type" : "string"
        }
      },
      "required" : [ "type", "identifier" ],
      "additionalProperties" : false
    },
    "Credential" : {
      "description" : "The container for a single set of credentials for an account.",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of credentials for the profile. This should be indicative of when this specific credential should be used.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        },
        "username" : {
          "description" : "The username.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "password" : {
          "description" : "The password in this set of credentials.  Care should be taken to ensure that no unencrypted value is revealed.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        }
      },
      "required" : [ "type", "username" ],
      "additionalProperties" : true
    },
    "UserGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'User' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'user'.",
          "$comment" : "Origin: UserGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'User.",
          "type" : "string",
          "enum" : [ "user" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    }
  }
}

SourcedId

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "SourcedId",
  "title" : "JSON Schema for the SourcedId class.",
  "description" : "The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
  "type" : "object",
  "properties" : { },
  "required" : [ ],
  "additionalProperties" : false
}

String

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "String",
  "title" : "JSON Schema for the String class.",
  "description" : "No description supplied.",
  "type" : "object",
  "properties" : { },
  "required" : [ ],
  "additionalProperties" : false
}

UserSet

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "UserSet",
  "title" : "JSON Schema for the UserSet class.",
  "description" : "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.",
  "type" : "object",
  "properties" : {
    "users" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/$defs/User"
      }
    }
  },
  "required" : [ ],
  "additionalProperties" : false,
  "$defs" : {
    "User" : {
      "description" : "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. ",
      "type" : "object",
      "properties" : {
        "sourcedId" : {
          "description" : "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.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        },
        "status" : {
          "description" : "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'.",
          "$comment" : "Origin: BaseStatusEnum (Enumeration); The set of permitted values for the type of status of a record. ",
          "type" : "string",
          "enum" : [ "active", "tobedeleted" ]
        },
        "dateLastModified" : {
          "description" : "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].",
          "$comment" : "Origin: DateTime (PrimitiveType)",
          "type" : "string",
          "format" : "date-time"
        },
        "userMasterIdentifier" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "username" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "userIds" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/UserId"
          }
        },
        "enabledUser" : {
          "description" : "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.",
          "$comment" : "Origin: TrueFalseEnum (Enumeration); This enumeration is used to limit the permitted tokens for a Boolean data-type to values of 'true' or 'false' ONLY.",
          "type" : "string",
          "enum" : [ "true", "false" ]
        },
        "givenName" : {
          "description" : "The given name. Also, known as the first name.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "familyName" : {
          "description" : "The family name. Also, known as the last name.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "middleName" : {
          "description" : "The set of middle names. If more than one middle name is needed separate using a space e.g. 'Wingarde Granville'.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "preferredFirstName" : {
          "description" : "The user's preferred first name. This attribute was added in version 1.2.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "preferredMiddleName" : {
          "description" : "The user's preferred middle name(s). This attribute was added in version 1.2.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "preferredLastName" : {
          "description" : "The user's preferred last name. This attribute was added in version 1.2.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "pronouns" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "roles" : {
          "type" : "array",
          "minItems" : 1,
          "items" : {
            "$ref" : "#/$defs/Role"
          }
        },
        "userProfiles" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/UserProfile"
          }
        },
        "primaryOrg" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "identifier" : {
          "description" : "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.",
          "$comment" : "Origin: Identifier (DerivedType); The data-type for a local unique identifier. The scope of the uniqueness of this identifier is determined by the organization assigning it.",
          "type" : "string"
        },
        "email" : {
          "description" : "The email address for the user.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "sms" : {
          "description" : "The SMS number for the user.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "phone" : {
          "description" : "The phone number for the user.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "agents" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/UserGUIDRef"
          }
        },
        "grades" : {
          "type" : "array",
          "items" : {
            "description" : "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.",
            "$comment" : "Origin: NormalizedString (PrimitiveType)",
            "type" : "string"
          }
        },
        "password" : {
          "description" : "A top-level password for the user. Care should be taken when using this field and the password SHOULD be encrypted.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        },
        "resources" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceGUIDRef"
          }
        },
        "metadata" : {
          "$ref" : "#/$defs/MetadataUser"
        }
      },
      "required" : [ "sourcedId", "status", "dateLastModified", "enabledUser", "givenName", "familyName", "roles" ],
      "additionalProperties" : false
    },
    "UserProfile" : {
      "description" : "The container for the information about a User Profile that will provide the user with access to some system, application, tool, etc.",
      "type" : "object",
      "properties" : {
        "profileId" : {
          "description" : "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.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "profileType" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "vendorId" : {
          "description" : "The unique identifier for the vendor of the system, tool, app, etc. which requires the use of this profile.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "applicationId" : {
          "description" : "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.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "description" : {
          "description" : "A human readable description of the use of the profile. This should not contain any security information for access to the account.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        },
        "credentials" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/Credential"
          }
        }
      },
      "required" : [ "profileId", "profileType", "vendorId" ],
      "additionalProperties" : false
    },
    "OrgGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Org' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. an 'org'.",
          "$comment" : "Origin: OrgGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to an 'Org'.",
          "type" : "string",
          "enum" : [ "org" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "MetadataUser" : {
      "description" : "The container for the proprietary extensions in the User class.",
      "type" : "object",
      "properties" : { },
      "required" : [ ],
      "additionalProperties" : true
    },
    "Role" : {
      "description" : "The container for one mapping between a role and an org for the user.",
      "type" : "object",
      "properties" : {
        "roleType" : {
          "description" : "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.",
          "$comment" : "Origin: RoleTypeEnum (Enumeration); The type of role for the role-org mappings. Each mapping must have a role type of which only one must have a roleType of 'primary' and the others must be 'secondary'. ",
          "type" : "string",
          "enum" : [ "primary", "secondary" ]
        },
        "role" : {
          "description" : "The role of the user in the org. The permitted values are from an enumerated list. ",
          "$comment" : "Origin: RoleEnumExt (Union); 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.",
          "oneOf" : [ {
            "type" : "string",
            "enum" : [ "aide", "counselor", "districtAdministrator", "guardian", "parent", "principal", "proctor", "relative", "siteAdministrator", "student", "systemAdministrator", "teacher" ]
          }, {
            "type" : "string",
            "pattern" : "(ext:)[a-z|A-Z|0-9|.|-|_]+"
          } ]
        },
        "org" : {
          "$ref" : "#/$defs/OrgGUIDRef"
        },
        "userProfile" : {
          "description" : "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.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "beginDate" : {
          "description" : "The start date on which the role becomes active (inclusive). ",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        },
        "endDate" : {
          "description" : "The end date on which the role becomes inactive (exclusive). ",
          "$comment" : "Origin: Date (PrimitiveType)",
          "type" : "string",
          "format" : "date"
        }
      },
      "required" : [ "roleType", "role", "org" ],
      "additionalProperties" : false
    },
    "ResourceGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'Resource' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'resource'.",
          "$comment" : "Origin: ResourceGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'Resource'.",
          "type" : "string",
          "enum" : [ "resource" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    },
    "UserId" : {
      "description" : "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.",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of identifier. This is no predefined vocabulary.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "identifier" : {
          "description" : "The user identifier.",
          "$comment" : "Origin: Identifier (DerivedType); The data-type for a local unique identifier. The scope of the uniqueness of this identifier is determined by the organization assigning it.",
          "type" : "string"
        }
      },
      "required" : [ "type", "identifier" ],
      "additionalProperties" : false
    },
    "Credential" : {
      "description" : "The container for a single set of credentials for an account.",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of credentials for the profile. This should be indicative of when this specific credential should be used.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        },
        "username" : {
          "description" : "The username.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "password" : {
          "description" : "The password in this set of credentials.  Care should be taken to ensure that no unencrypted value is revealed.",
          "$comment" : "Origin: String (PrimitiveType)",
          "type" : "string"
        }
      },
      "required" : [ "type", "username" ],
      "additionalProperties" : true
    },
    "UserGUIDRef" : {
      "description" : "This is the container for reference to a OneRoster 'User' object that has an allocated sourcedId (GUID).",
      "type" : "object",
      "properties" : {
        "type" : {
          "description" : "The type of object being referenced i.e. a 'user'.",
          "$comment" : "Origin: UserGUIDRefTypeEnum (Enumeration); This is the fixed enumeration for a GUIDRef that points to a 'User.",
          "type" : "string",
          "enum" : [ "user" ]
        },
        "href" : {
          "description" : "The URI for the type of object being referenced.",
          "$comment" : "Origin: AnyURI (PrimitiveType)",
          "type" : "string"
        },
        "sourcedId" : {
          "description" : "The globally unique identifier of the object being referenced.",
          "$comment" : "Origin: SourcedId (DerivedType); The data-type for establishing a Unique Identifier. There is no predefined structure for the identifier and the scope MUST NOT assume globally uniqueness.",
          "type" : "string"
        }
      },
      "required" : [ "type", "href", "sourcedId" ],
      "additionalProperties" : false
    }
  }
}

imsx_StatusInfo

{
  "$schema" : "https://json-schema.org/draft/2019-09/schema#",
  "$id" : "imsx_StatusInfo",
  "title" : "JSON Schema for the imsx_StatusInfo class.",
  "description" : "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.",
  "type" : "object",
  "properties" : {
    "imsx_codeMajor" : {
      "description" : "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.",
      "$comment" : "Origin: imsx_CodeMajorEnum (Enumeration); The permitted vocabulary for the values for the CodeMajor field.",
      "type" : "string",
      "enum" : [ "success", "processing", "failure", "unsupported" ]
    },
    "imsx_severity" : {
      "description" : "The severity value (from the corresponding enumerated vocabulary). See Appendix B for further information on the interpretation of this set of codes.",
      "$comment" : "Origin: imsx_SeverityEnum (Enumeration); The permitted vocabulary for the values for the Severity field.",
      "type" : "string",
      "enum" : [ "status", "warning", "error" ]
    },
    "imsx_description" : {
      "description" : "A human readable description supplied by the entity creating the status code information.",
      "$comment" : "Origin: String (PrimitiveType)",
      "type" : "string"
    },
    "imsx_CodeMinor" : {
      "$ref" : "#/$defs/imsx_CodeMinor"
    }
  },
  "required" : [ "imsx_codeMajor", "imsx_severity" ],
  "additionalProperties" : false,
  "$defs" : {
    "imsx_CodeMinor" : {
      "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.",
      "type" : "object",
      "properties" : {
        "imsx_codeMinorField" : {
          "type" : "array",
          "minItems" : 1,
          "items" : {
            "$ref" : "#/$defs/imsx_CodeMinorField"
          }
        }
      },
      "required" : [ "imsx_codeMinorField" ],
      "additionalProperties" : false
    },
    "imsx_CodeMinorField" : {
      "description" : "This is the container for a single code minor status code.",
      "type" : "object",
      "properties" : {
        "imsx_codeMinorFieldName" : {
          "description" : "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'.",
          "$comment" : "Origin: NormalizedString (PrimitiveType)",
          "type" : "string"
        },
        "imsx_codeMinorFieldValue" : {
          "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).",
          "$comment" : "Origin: imsx_CodeMinorValueEnum (Enumeration); The permitted vocabulary for the values for the CodeMinorValue field.",
          "type" : "string",
          "enum" : [ "fullsuccess", "invalid_filter_field", "invalid_selection_field", "invaliddata", "unauthorisedrequest", "forbidden", "server_busy", "unknownobject", "internal_server_error" ]
        }
      },
      "required" : [ "imsx_codeMinorFieldName", "imsx_codeMinorFieldValue" ],
      "additionalProperties" : false
    }
  }
}

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

VersionDoc VersionDateComments
Final2015-07-01First release of the OneRoster Service specification.
Final2016-11-01This second release includes new operations to create and delete single objects, support for the exchange of Result, LineItem, Category and Resource objects.
Final2022-09-19This 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.
Final2023-06-01This is an editorial revision of the specification. The changes from document version 1.0 are: TBD.

Related resources

Data Model

Class JSON Schema
AcademicSessionSet https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_academicsessionset-jsonschema1.json
ClassSet https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_classset-jsonschema1.json
CourseSet https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_courseset-jsonschema1.json
DemographicsSet https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_demographicsset-jsonschema1.json
EnrollmentSet https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_enrollmentset-jsonschema1.json
OrgSet https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_orgset-jsonschema1.json
SingleAcademicSession https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_singleacademicsession-jsonschema1.json
SingleClass https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_singleclass-jsonschema1.json
SingleCourse https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_singlecourse-jsonschema1.json
SingleDemographics https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_singledemographics-jsonschema1.json
SingleEnrollment https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_singleenrollment-jsonschema1.json
SingleOrg https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_singleorg-jsonschema1.json
SingleUser https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_singleuser-jsonschema1.json
UserSet https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_userset-jsonschema1.json
imsx_StatusInfo https://purl.imsglobal.org/spec/orrostering/v1p2/schema/json/orrostering_v1p2_imsx_statusinfo-jsonschema1.json

Service Model

The service model is available as an OpenAPI document at the following URL:

Skill

The skill model is available as a JSON file at the following URL: