The 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-cases are: the exchange of data between a Student Information System (SIS) and Learning Management System (LMS), and the rostering of learning tools [[OR-OVIEW-12]].
The underlying OneRoster specification is available in:
The standard includes a REST-based binding to make it quicker and easier to implement the exchange of information about people, membership, courses and gradebooks. In addition to the REST binding description, a format for CSV file based exchange has also been defined: THIS DOCUMENT.
CSV files are typically exchanged between the school and the vendor to populate the roster information needed to gain access to learning tools, portals and learning environments. This specification defines how the relevant information is to be stored in a set of CSV files. This set of CSV files is exchanged as a zip file (it also contains a 'manifest.csv' file that describes the associated data CSV files). This specificatiions DOES NOT define how the zip file is moved from system to system.
This Section is NORMATIVE.
This document contains the description of how the OneRoster data model is exchanged in a set of CSV files. This binding addresses the format and content of the CSV files: it does NOT define how the CSV files are exchanged between end systems. The other documents that should be used with this CSV binding are:
The differences between versions 1.1 and 1.2 of the OR specification CSV binding are:
The structure of the rest of this document is:
2. CSV OVERVIEW | An overview of the structure of the CSV binding for OneRoster. |
3. CSV CSV FORMAT | The detailed format for the data in the CSV files for OneRoster. |
APPENDIX A – THE FILE DEPENDENCY MATRIX | An explanation of the file dependencies when exchanging bulk processing based CSV files. |
APPENDIX B – REVISION HISTORY | History of the various published versions of this document. This includes details of the changes made with respect to the previously published version. |
APPENDIX C – REFERENCES | The details of the set of documents cited within this document. |
APPENDIX D – LIST OF CONTRIBUTORS | The people who were responsible for the creation of this document. |
This Section is NORMATIVE.
Many districts currently provide student information to tool providers and LMS/LOR vendors as ‘.csv’ formatted files. For those districts that must continue to use CSV files to exchange roster information with vendors, the format defined in the Tables in Section 3 should be used: this format corresponds to the data models in the OneRoster 1.2 Rostering [[!ORROS-SM-12]], Resources [[!ORRES-SM-12]] and Gradebook [[!ORGBK-SM-12]] documents. Districts can choose to upload class rosters/gradebooks by preparing up to twenty (20) files in CSV format outlined in this document. The rosters/gradebooks could be available for both import and export. A summary of the set of files is given in Table 2.1.
CSV File Name | Required | Description |
---|---|---|
manifest.csv | Yes | A control file. The manifest contains the OR version (set as 1.2 for this release of the standard) and the list of files that are supplied in this data set. |
academicSessions.csv | No | A data file. The 'academic sessions' data model content. |
categories.csv | No | A data file. The 'categories' data model content. |
classes.csv | No | A data file. The 'classes' data model content. |
classResources.csv | No | A data file. The links between the 'classes' and 'resources' data model content. |
courseResourses.csv | No | A data file. The links between the 'courses' and 'resources' data model content. |
courses.csv | No | A data file. The 'courses' data model content. |
demographics.csv | No | A data file. The 'demographics' data model content. Data model revised in v1.2. |
enrollments.csv | No | A data file. The 'enrollments' data model content. |
lineItemLearningObjectiveIds.csv* | No | A data file. The 'learning objectives' mapping to 'lineItems' data model content. A new file added in v1.2. |
lineItems.csv | No | A data file. The 'lineItems' data model content. Data model revised in v1.2. |
lineItemScoreScales.csv* | No | A data file. The 'score scales' mapping to 'lineItems' data model content. A new file added in v1.2. |
orgs.csv | No | A data file. The 'orgs' data model content. |
resources.csv | No | A data file. The 'resource' data model content. |
resultLearningObjectiveIds.csv* | No | A data file. The 'learning objectives' mapping to 'results' data model content. A new file added in v1.2. |
results.csv | No | A data file. The 'results' data model content. Data model revised in v1.2. |
resultScoreScales.csv* | No | A data file. The 'score scales' mapping to 'results' data model content. A new file added in v1.2. |
roles.csv* | No | A data file. The mapping between roles, orgs and accounts data model content. A new file added in v1.2. |
scoreScales.csv* | No | A data file. The 'score scales' data model content. A new file added in v1.2. |
userProfiles.csv* | No | A data file. The userProfiles' data model content. A new file added in v1.2. |
userResources.csv* | No | A data file. The userResources' data model content. A new file added in v1.2. |
users.csv | No | A data file. The 'users' data model content. Data model revised in v1.2. |
KEY:
When data is exchanged there will be 1-22 CSV files. An exchange MUST include the 'manifest.csv' file. The case of when only the 'manifest.csv' is supplied is used to denote that no updates occurred. At most, 22 CSV files exchanged i.e. there MUST NOT be more than one of each of the data CSV files. When the set of files are for bulk processing they must be semantically consistent i.e. every object referenced in a file must also be defined in either the same, or one of the other files in the zip package (see Appendix A for more details on this set of file dependencies).
For V1.2 the CSV files will be exchanged as a zip file. The encompassed files must be at the root level i.e. they MUST NOT be contained within an enclosing directory. There is NO constraint on the name of the zip file but it must have a file extension of ‘zip’. The compression MUST conform to [[!RFC1951]].
A system that imports both V1.0, V1.1 and V1.2 compliant data sets must differentiate using the following algorithm:
The existence and management of a record is controlled via the bulk and delta processing options. A record can be in four possible states:
For each state there are four possible types of transition events:
The 'System Deletes the Record' transition is only possible when the record is in the state of 'Record[ToBeDeleted]'. For this transition the system deletes the record (the length of time between this deletion action and the record being set as 'tobedeleted' is implementation dependent).
The state diagram for the creation and management of a record in a service provider is shown in Figure 1.
A OneRoster Service Consumer could issue a 'HTTP GET' request for the record in each of these four states. When such a read request is made the request will result in the following payloads:
This Section is NORMATIVE.
The file format for each of the data files is a Comma Separated Values (CSV) format as specified in [[!RFC4180]] with the extra restriction that carriage-returns are not permitted within a field. Fields containing commas and double-quotes must be enclosed in double-quotes. If double-quotes are used to enclose a field, then a double-quote appearing inside the field must be escaped by preceding it with another double-quote.
The CSV files must be UTF-8 encoded [[!RFC3629]]. Importing processors must tolerate BOM (Byte Order Mark) prefixes and ignore them. In a UTF-8 encoded file with a BOM, the BOM will appear as the 3-byte sequence ‘EF BB BF’ at the beginning of the file. If present, the CSV header will begin at the 4th byte of the file; if not present, the CSV header will begin at the 1st byte of the file.
Other key points are:
When mapping from the data model [[!ORROS-SM-12]], [[!ORRES-SM-12]], [[!ORGBK-SM-12]] to the equivalent column headers the following special rules have been applied:
CSV import/export is envisaged to work in one of two ways, bulk and delta:
The key to the CSV description tables listed in Subsections 3.2 to 3.20 is:
NOTE: The manifest file will consist of just two columns with the headers ‘propertyName’ and ‘value’. Each row will contain a single property/value pair. The list of supported property/value pairs is described in Table 3.1.
Property Name (One per row) |
Required | Format | Value Description |
---|---|---|---|
manifest.version | Yes | String | The version of the manifest. For an initial value this must be “1.0”. |
oneroster.version | Yes | String | The OneRoster version supported by this file set. This must be “1.2” for implementations of this version of the specification. |
file.academicSessions | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.categories | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.classes | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.classResources | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.courses | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.courseResources | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.demographics | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.enrollments | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.lineItemLearningObjectiveIds* | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.lineItems | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.lineItemScoreScales* | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.orgs | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.resources | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.resultLearningObjectiveIds* | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.results | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.resultScoreScales* | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.roles* | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.scoreScales* | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.userProfiles* | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.userResources* | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
file.users | Yes | Enumeration | Permitted values of: { absent | bulk | delta }. |
source.systemName | No | String | The name for the system producing the set of files. |
source.systemCode | No | String | Identification code for the system producing the set of files. |
The '*' denotes the rows that have been added in OR 1.2. In the enumerations in Table 3.1 the interpretations for each permitted value are:
These processing mode hints should be consistent with the data held within the accompanying CSV files but in cases of conflict the values in the data CSV files must take precedence.
This file represents the AcademicSessions dataset from the OneRoster Rostering specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the academicSession. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
title | Yes | String | Name or title of the academic session. |
type | Yes | Enumeration | Permitted values of: { gradingPeriod | semester | schoolYear | term } This vocabulary may be extended. |
startDate | Yes | Date | Inclusive end date for the academic session. ISO 8601 format [[!ISO8601]]. |
endDate | Yes | Date | Exclusive end date for the academic session. ISO 8601 format [[!ISO8601]]. |
parentSourcedId | No | GUID Reference. | SourcedId of the parent of this academic session. |
schoolYear | Yes | Year | The school year for which the academic session contributes. This year should be that in which the school year ends (Format is: YYYY). |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the Categories dataset from the OneRoster Gradebook specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the category. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
title | Yes | String | The title assigned to the set of lineItems to denote its nature e.g. homework, essays, etc. |
weight | No | Integer | Total weight of this grading category in calculation of course final score. This is a Percent value only, e.g. 80%. This is a new column added in version 1.2. |
There are NO dependencies of this file on other files when supporting bulk processing.
This file represents the Classes dataset from the OneRoster Rostering specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the class. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
title | Yes | String | Name of this class. |
grades | No | List of Strings | Grade(s) for which the class is attended. The permitted vocabulary should be agreed as part of the definition of the usage of this specification. |
courseSourcedId | Yes | GUID Reference | SourcedId of the course of which this class is an instance. |
classCode | No | String | Human readable code used to help identify this class. |
classType | Yes | Enumeration | The permitted values are: { homeroom | scheduled } This vocabulary may be extended. |
location | No | String | Human readable description of where the class is physically located. |
schoolSourcedId | Yes | GUID Reference. | SourcedId of the Org that teaches this class of OrgType 'school'. |
termSourcedIds | Yes | List of GUID References. | SourcedIds of the terms (the academicSessions) in which the class is taught. |
subjects | No | List of Strings | Subject name(s) in human readable form. If the 'subjectCodes' attribute is present then the subjects and subjectCodes lists must have the same length and have order significance.
The permitted vocabulary should be agreed as part of the definition of the usage of this specification. If the value of the "Course Title" contains commas, then those commas must be removed. |
subjectCodes | No | List of Strings | Subject codes(s) in machine readable form. If more than one subject code is needed, use double quotes, and separate with commas (per [[!RFC4180]]). If the 'subjects' attribute is present the two lists must have the same length and have order significance. The permitted vocabulary should be agreed as part of the definition of the usage of this specification. |
periods | No | List of Strings | The time slots in the day that the class will be given. If more than one period is needed, use double quotes, and separate with commas (per [[!RFC4180]]). Examples: 1; “1,3,5” |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the links between the Resources and Classes datasets from the OneRoster Rostering and Resources specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the classResource relationship. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
title | No | String | Name of the related class. |
classSourcedId | Yes | GUID Reference. | SourcedId of the reference Class. |
resourceSourcedId | Yes | GUID Reference. | SourcedId of the Resource associated with the Class. |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the links between the Resources and Courses datasets from the OneRoster Rostering and Resources specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the courseResourse relationship. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
title | No | String | Name of the related class. |
courseSourcedId | Yes | GUID Reference. | SourcedId of the reference Course. |
resourceSourcedId | Yes | GUID Reference. | SourcedId of the Resource associated with the Course. |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the Courses dataset from the OneRoster Rostering specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the course. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
schoolYearSourcedId | No | GUID Reference. | SourcedId of the associated AcademicSession with type of 'schoolYear'. |
title | Yes | String | Name of this course. |
courseCode | No | String | Human readable code used to help identify this course. |
grades | No | List of Strings | Grade(s) for which the class is attended. The permitted vocabulary should be agreed as part of the definition of the usage of this specification. |
orgSourcedId | Yes | GUID Reference. | SourcedId of an org to which this course belongs. |
subjects | No | List of Strings | Subject name(s) in human readable form. If the 'subjectCodes' attribute is present then the subjects and subjectCodes lists must have the same length and have order significance.
The permitted vocabulary should be agreed as part of the definition of the usage of this specification. If the value of the "Course Title" contains commas, then those commas must be removed. |
subjectCodes | No | List of Strings | Subject codes(s) in machine readable form. If more than one subject code is needed, use double quotes, and separate with commas (per [[!RFC4180]]). If the 'subjects' attribute is present the two lists must have the same length and have order significance. The permitted vocabulary should be agreed as part of the definition of the usage of this specification. |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the Demographics dataset from the OneRoster Rostering specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the demographics. This MUST be the 'sourcedId' of the User whose demographics are being described. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
birthDate | No | Date | The date of birth. ISO 861 format: 'YYYY-MM-DD'. |
sex | No | Enumeration | Permitted values are: { male | female | unspecified | other }. The terms 'unspecified' and 'other' added in Version 1.2. This vocabulary may be extended. |
americanIndianOrAlaskaNative | No | Enumeration | Permitted values are: { true | false }. |
asian | No | Enumeration | Permitted values are: { true | false }. |
blackOrAfricanAmerican | No | Enumeration | Permitted values are: { true | false }. |
nativeHawaiianOrOtherPacificIslander | No | Enumeration | Permitted values are: { true | false }. |
white | No | Enumeration | Permitted values are: { true | false }. |
demographicRaceTwoOrMoreRaces | No | Enumeration | Permitted values are: { true | false }. |
hispanicOrLatinoEthnicity | No | Enumeration | Permitted values are: { true | false }. |
countryOfBirthCode | No | String | Country where the user was born. The permitted vocabulary should be agreed as part of the definition of the usage of this specification. |
stateOfBirthAbbreviation | No | String | State where the user was born. The permitted vocabulary should be agreed as part of the definition of the usage of this specification. |
cityOfBirth | No | String | City where the user was born. |
publicSchoolResidenceStatus | No | String | An indication of the location of the users legal residence relative to (within or outside) the boundaries of the public school attended and its administrative unit. The permitted vocabulary should be agreed as part of the definition of the usage of this specification. |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the Enrollments dataset from the OneRoster Rostering specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the enrollment. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
classSourcedId | Yes | GUID Reference | SourcedId of the Class. |
schoolSourcedId | Yes | GUID Reference | SourcedId of an Org with type ‘school’. |
userSourcedId | Yes | GUID Reference | SourcedId of the User. |
role | Yes | Enumeration | Permitted values are: { administrator | proctor | student | teacher }. This vocabulary may be extended. |
primary | No | Enumeration | Permitted values are: { true | false }. Applicable only to teachers. Only one teacher should be designated as the primary teacher for a class in the period defined by the begin/end dates. |
beginDate | No | Date | The start date for the enrollment (inclusive). This date must align with the associated academic session (term) identified in the class. |
endDate | No | Date | The end date for the enrollment (exclusive). This date must align with the associated academic session (term) identified for the class. |
The dependencies of this file on other files when supporting bulk processing are:
A new file added in version 1.2.
This file represents the mapping between LineItems and the corresponding Learning Objectives in the OneRoster Gradebook specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the lineItem learning objective relationship. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
lineItemSourcedId | Yes | GUID Reference | SourcedId of the parent LineItem for this learning objective. |
source | Yes | Enumeration. | The type of learning objective identifiers. Enumeration of: { case | unknown }. 'case' is used to denote an 1EdTech CASE identifier. This vocabulary may be extended. |
learningObjectiveId | Yes | String | Unique identifier for the associated learning objective. If an 1EdTech CASE identifier then it MUST be a valid UUID URN. |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the LineItems dataset from the OneRoster Gradebook specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the lineItem. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
title | Yes | String | The title assigned to the lineItem. |
description | No | String | Short description of the role of the lineItem. |
assignDate | Yes | Date | Date the associated activity was assigned. |
dueDate | Yes | Date | Date the associated activity is due to be completed. |
classSourcedId | Yes | GUID Reference | SourcedId of the Class. |
categorySourcedId | Yes | GUID Reference | SourcedId of the Category. |
academicSessionSourcedId | Yes | GUID Reference | SourcedId of the academicSession to which the lineItem is based. |
resultValueMin | No | Float | The minimum value permitted for the score (inclusive) e.g. 0.0. |
resultValueMax | No | Float | The maximum value permitted for the score (inclusive) e.g. 100.0. |
schoolSourcedId | Yes | GUID Reference | SourcedId of the School. This is a new column added in version 1.2. |
The dependencies of this file on other files when supporting bulk processing are:
A new file added in version 1.2.
This file represents the mapping between the LineItems and ScoreScales datasets from the OneRoster Gradebook specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the lineItem scoreScale. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
title | No | String | Name of the related scoreScale. |
lineItemSourcedId | Yes | GUID Reference. | SourcedId of the reference LineItem. |
scoreScaleSourcedId | Yes | GUID Reference. | SourcedId of the reference ScoreScale. |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the Orgs dataset from the OneRoster Rostering specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the org. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
name | Yes | String | Name of the organization. |
type | Yes | Enumeration | Permitted values are: { department | school | district | local | state | national } This vocabulary may be extended. |
identifier | No | String | Human readable identifier for this org e.g. NCES ID. |
parentSourcedId | No | GUID Reference. | SourcedId of an Org representing the Parent organization. |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the Resources dataset from the OneRoster Resources specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the resource. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
vendorResourceId | Yes | ID | Unique ID of this resource as allocated by the vendor. It is unique in the context of resource identifiers allocated by the vendor. |
title | No | String | Name of this resource. |
roles | No | Enumeration List | A comma separated list with permitted values are: { administrator | aide | guardian | parent | proctor | relative | student | teacher } This vocabulary may be extended. |
importance | No | Enumeration | Permitted values are: { primary | secondary }. |
vendorId | No | ID | Identifier of the vendor responsible for this resource. This unique ID will be assigned by 1EdTech during the OneRoster conformance process. |
applicationId | No | ID | Identifier of the application associated with this resource. This identifier is assigned by the creator/vendor of the resource. |
There are NO dependencies of this file on other files when supporting bulk processing.
A new file added in version 1.2.
This file represents the mapping between Results and the corresponding Learning Objectives in the OneRoster Gradebook specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the result learning objective relationship. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
resultSourcedId | Yes | GUID Reference | SourcedId of the parent Result for this learning objective. |
source | Yes | Enumeration | The type of learning objective identifiers. Enumeration of: { case | unknown }. 'case' is used to denote an 1EdTech CASE identifier. This vocabulary may be extended. |
learningObjectiveId | Yes | String | Unique identifier for the associated learning objective. If a CASE identifier then it MUST be a valid UUID URN. |
score | No | Float | The optional mastery score supplied as a numeric value. |
textScore | No | String | The optional mastery score supplied as a string. |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the Results dataset from the OneRoster Gradebook specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the result. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
lineItemSourcedId | Yes | GUID Reference | Unique identifier of the lineItem. |
studentSourcedId | Yes | GUID Reference | Unique identifier of the student (user). References a record that is/was created in the users.csv file with type of 'student'. |
scoreStatus | Yes | Enumeration | Permitted values are: { exempt | fully graded | not submitted | partially graded | submitted } This vocabulary may be extended. |
score | No | Float | A floating point number (the range should be consistent with that defined in the associated lineItem resultValueMin and resultValueMax fields). |
scoreDate | Yes | Date | The date the result was submitted and/or the 'scoreStatus' was changed. |
comment | No | String | Human readable comment about the result. |
textScore | No | String | An optional non-numeric score value. If a scoreScale is assigned then the value must align with the scale. This is a new column added in version 1.2. |
classSourcedId | No | GUID Reference | Unique identifier of the class. References a record that is/was created in the classes.csv file. This is a new column added in version 1.2. |
inProgress | No | Boolean | Permitted values are: { true | false }. Used to denote that work has been assigned and student's work product is not yet expected to have been submitted. This is a new column added in version 1.2. |
incomplete | No | Boolean | Permitted values are: { true | false }. Used to denote that the student's work product has been submitted but deemed incomplete by the teacher. This is a new column added in version 1.2. |
late | No | Boolean | Permitted values are: { true | false }. Used to denote that the student's work product is either past due or it has been submitted past the due date. The score on this result may be impacted as as result of this flag. This is a new column added in version 1.2. |
missing | No | Boolean | Permitted values are: { true | false }. Used to denote that the student's work product has not been submitted and is deemed missing. This is a new column added in version 1.2. |
The dependencies of this file on other files when supporting bulk processing are:
A new file added in version 1.2.
This file represents the mapping between the Results and ScoreScales datasets from the OneRoster Gradebook specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the resultScoreScale. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
title | No | String | Name of the related scoreScale. |
resultSourcedId | Yes | GUID Reference. | SourcedId of the reference Result. |
scoreScaleSourcedId | Yes | GUID Reference. | SourcedId of the reference ScoreScale. |
The dependencies of this file on other files when supporting bulk processing are:
A new file added in version 1.2.
The set of roles for a user in an org. A user can have 1-many roles in 1-many orgs. This is defined as a set of 1-1 mappings.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the role. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
userSourcedId | Yes | GUID Reference | The user whose role is being defined. |
roleType | Yes | Enumeration | Determines if this is the primary role. Only one role per orgnaization can be 'primary'. Permitted values are: { primary | secondary } |
role | Yes | Enumeration | The type of role. Permitted values are: { aide | counselor | districtAdministrator | guardian | parent | principal | proctor | relative | siteAdministrator | student | systemAdministrator | teacher } This vocabulary may be extended. |
beginDate | No | Date | The start date on which the role became active (inclusive). |
endDate | No | Date | The end date on which the role ceased to be active (exclusive). |
orgSourcedId | Yes | GUID Reference | SourcedId of the Org within which the User has the assigned role. |
userProfileSourcedId | No | GUID Reference | SourcedId of the UserProfile for the User. |
The dependencies of this file on other files when supporting bulk processing are:
A new file added in version 1.2.
This file represents the ScoreScales dataset from the OneRoster Gradebook specification. This is a new CSV file added in OR 1.2.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the scoreScale. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
title | Yes | String | A human readable title for the score scale. |
type | Yes | String | The type of score scaling e.g. percent. |
orgSourcedId | Yes | GUID Reference | The org for which the score scale is used. |
courseSourcedId | Yes | GUID Reference | The course for which the score scale is used. |
classSourcedId | Yes | GUID Reference | The class for which the score scale is used. |
scoreScaleValue | Yes | List of Strings | A specific mapping of values between two score scales. The left hand side (LHS) value is the reference point. These values are enclosed in ‘{}’ with a colon used to separate the values. If more than one score scale mapping is needed, use double quotes, and separate with commas (per [[!RFC4180]]). Examples: {Pass:50} and "{A+:100},{A:94},{A-:90}", {A:7-10}, {60-69:B}, etc. |
The dependencies of this file on other files when supporting bulk processing are:
A new file added in version 1.2.
This information is used to enable authentication/authorization/access management of the various systems/tools/apps/etc. available to the user.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the userProfile. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
userSourcedId | Yes | GUID | Unique ID for the corresponding user. |
profileType | Yes | String | The type of user profile. This should be a human readable label that has some significance in the context of the related system, app, tool, etc. |
vendorId | Yes | String | The unique identifier for the vendor of the system, tool, app, etc. which requires the use of this user profile. |
applicationId | No | String | The unique identifier for the vendor of the system, tool, app, etc. which requires the use of this account. |
description | No | String | A human readable description of the use of the account. This should not contain any security information for access to the account. |
credentialType | Yes | String | The type of credentials for the user profile. This should be indicative of when this credential should be used. |
username | Yes | String | The username for this profile. |
password | No | String | The password for the user. This may or may not be an encrypted string. If encrypted, the processing system must be aware of the encryption method. |
The extension mechansim should be used to support the exchange of the appropriate credentials and other details required for the profile.
The dependencies of this file on other files when supporting bulk processing are:
A new file added in version 1.2.
This file represents the links between the Resources and Users datasets from the OneRoster Rostering and Resources specification.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the userResourse relationship. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
userSourcedId | Yes | GUID Reference. | SourcedId of the user who will have access to this resource. |
orgSourcedId | No | GUID Reference. | SourcedId of the reference Organization. |
classSourcedId | No | GUID Reference. | SourcedId of the reference Class. |
resourceSourcedId | Yes | GUID Reference. | SourcedId of the Resource associated with the User. |
The dependencies of this file on other files when supporting bulk processing are:
This file represents the Users dataset from the OneRoster Rostering specification.
Several columns have been deleted and new ones added in this release.
Column Field Header | Required | Format | Description |
---|---|---|---|
sourcedId | Yes | GUID | Unique ID for the user. |
status | Yes for Delta | Enumeration | Permitted values for Delta mode: { active | tobedeleted }. This MUST NOT be used for the Bulk mode. |
dateLastModified | Yes for Delta | DateTime | The date that this record was last modified. ISO 8601 format [[!ISO8601]]. This MUST NOT be used for the Bulk mode. |
enabledUser | Yes | Boolean | Permitted values are: { true | false }. 'false' denotes that the user is an active record but system access is curtailed according to the local administration rules. |
username | Yes | String | User name. |
userIds | No | List of Strings | External machine-readable ID (e.g. LDAP id, LTI id) for this user. The ID must be accompanied by a type to indicate the nature of the Identifier. The Type and ID values are enclosed in ‘{}’ with a colon used to separate the values. If more than one userId is needed, use double quotes, and separate with commas (per [[!RFC4180]]). Examples: {LDAP:Id} and "{LDAP:Id},{LTI:Id},{Fed:Id}" |
givenName | Yes | String | User's first name. |
familyName | Yes | String | User's surname. |
middleName | No | String | User's middle name(s). If more than one then they are separated by a space. |
identifier | No | String | Identifier for the user with a human readable meaning. |
No | String | Email address for the User. | |
sms | No | String | SMS address for the User. |
phone | No | String | Phone number for the User. |
agentSourcedIds | No | List of GUID References | SourcedIds of the Users to which this user has a relationship. If multiple IDs are required then use double quotes and separate with commas. Note: In most cases this will be for indicating parental relationships. |
grades | No | String | Grade(s) for which a user with role 'student' is enrolled. The permitted vocabulary should be agreed as part of the definition of the usage of this specification. |
password | No | String | The password for the user. This may or may not be an encrypted string. If encrypted the processing system must be aware of the encryption method. |
userMasterIdentifier | No | String | The master identifier that could be used to provide globally unique identification of the user across all of the tools, systems, apps, etc. available/accessed by the user. This is a new column added in version 1.2. |
resourceSourcedIds | No | List of GUID References | The list of sourcedIds for the resources that are to be made available to this user. This is a new column added in version 1.2. |
preferredGivenName | No | String | The given name by which the User prefers to be known. This is a new column added in version 1.2. |
preferredMiddleName | No | String | The middle names by which the User prefers to be known. This is a new column added in version 1.2. |
preferredFamilyName | No | String | The family name by which the User prefers to be known. This is a new column added in version 1.2. |
primaryOrgSourcedId | No | GUID Reference | The sourcedId of the primary 'org' for the 'user'. In OR 1.2 a user can have one or more 'roles' in one or more 'org's and so identification of the primary 'org' is now required. This is a new column added in version 1.2. |
pronouns | No | String | 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. |
The dependencies of this file on other files when supporting bulk processing are:
This Section is NON-NORMATIVE.
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 CSV parsers to read those extension attributes. Extensions are ONLY permitted by adding 'metadata' named columns to the end of the set of columns already defined in the specification.
An example of creating such an extension is given in the accompanying Implementation Guide document [[!OR-IG-12]].
In this version the ability to extend some of the enumerated vocabularies has been added: currently, ONLY the 'classType' (classes.csv), 'role' (enrollments.csv and roles.csv), 'roles' (resources.csv), 'scoreStatus' (results.csv), 'SessionTypeEnum', 'sex' (demographics.csv), 'source' (lineItemLearningObjectiveIds.csv and resultLearningObjectiveIds.csv) and 'type' (academicSession.csv and orgs.csv) vocabularies MAY be extended. Each proprietary term must start with the characters 'ext:'.
An example of creating such an extension is given in the accompanying Implementation Guide document [[!OR-IG-12]].
This Service can be profiled. In general, Profiling is used to:
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 Vice President of Operations at: operations@1edtech.org.
This Section is NON-NORMATIVE.
Table A1 is the dependency matrix for the CSV files. This shows the set of CSV files that MUST be supplied for BULK exchange; this dependency is created because the set of supplied CSV files must be semantically complete and the data model defines certain fields must be present within a CSV file. To read the matrix select the CSV file of interest in the left hand column. The entries along that row indicate if some other CSV file is required (R) or may be required (O) if an associated optional field has been included in the source CSV file.
The color coding for Table A1 is:-
File Names | Rostering | Resources | Gradebook | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
academic Sessions |
classes | courses | demographics | enrollments | orgs | roles | user Profiles |
users | resources | class Resources |
course Resources |
user Resources |
categories | line Items |
results | score Scales |
result Score Scales |
line Item Score Scales |
result Learning Objective Ids |
line Item Learning Objective Ids |
|
academicSessions | O(P) | ||||||||||||||||||||
classes [C] | R(T), O[S] | R | R(S), R[S] | ||||||||||||||||||
courses [S] | O(SY) | R | |||||||||||||||||||
demographics | R[U] | R[U] | O[U] | R | |||||||||||||||||
enrollments | R[C], O(SY) | R | R[C] | R(S), R(U) | R[U] | O[U] | R | ||||||||||||||
orgs | O(P) | ||||||||||||||||||||
roles | R | O | R | ||||||||||||||||||
userProfiles | R[U] | R | |||||||||||||||||||
users [U] | R | R | O | O(A) | O | ||||||||||||||||
File Names | academic Sessions |
classes | courses | demographics | enrollments | orgs | roles | user Profiles |
users | resources | class Resources |
course Resources |
user Resources |
categories | line Items |
results | score Scales |
result Score Scales |
line Item Score Scales |
result Learning Objective Ids |
line Item Learning Objective Ids |
resources | |||||||||||||||||||||
classResources | R[C] | R | R[C] | R[C] | R | ||||||||||||||||
courseResources | O[S] | R | R[S] | R | |||||||||||||||||
userResources | O[C] | O | O | R | R | ||||||||||||||||
File Names | academic Sessions |
classes | courses | demographics | enrollments | orgs | roles | user Profiles |
users | resources | class Resources |
course Resources |
user Resources |
categories | line Items |
results | score Scales |
result Score Scales |
line Item Score Scales |
result Learning Objective Ids |
line Item Learning Objective Ids |
categories | |||||||||||||||||||||
lineItems [L] | R(GP), R[C] | R | R[C] | R[C] | R | ||||||||||||||||
results [R] | R[L], O(SY) | R[L] | R[L] | R[L] | R[U] | O[U] | R(S) | R[L] | R | ||||||||||||
scoreScales [X] | R[C], O[S] | R | R, R[C] | R, R[C], R[S] | |||||||||||||||||
resultScoreScales | R[X], R[R] | R[X], R[R] | R[X], R[R] | R[X], R[R] | R[R] | O[R] | R[R] | R[R] | R[R] | R | R | ||||||||||
lineItemScoreScales | R[X], R[L] | R[X], R[L] | R[X], R[L] | R[X], R[L] | R[L] | R | R | ||||||||||||||
resultLearningObjectiveIds | R[R] | R[R] | R[R] | R[R] | R[R] | O[R] | R[R] | R[R] | R[R] | R | |||||||||||
lineItemLearningObjectiveIds | R[L] | R[L] | R[L] | R[L] | R[L] | R |
The key conclusions are:
NOTE: An implementation may impose further constraints on the set of files required for semantic consistency i.e. more files may need to be supplied than the strict minimum.
Version No. | Release Date | Comments |
---|---|---|
Final Release v1.0 | 3rd June 2015 | The first formal release of the Final Release version of this document. |
Final Release v1.1 | 17th April, 2017 | The second formal release of this document. The conformance requirements, for both CSV and REST, have been made considerably more demanding and specific. |
Final Release v1.2 | 6th June, 2022 | The third formal release of this document. A number of new data model features have been added to the operational modes of Rostering, Resources and Gradebook. Support for eight new CSV files has been included, namely:
|
The changes made for this Final Release 1.2 document are: