Abstract

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.

Introduction

This Section is NORMATIVE.

Scope and Context

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:

Changes Between OR 1.1 and 1.2

The differences between versions 1.1 and 1.2 of the OR specification CSV binding are:

Conformance Statements

Structure of this Document

The structure of the rest of this document is:

An outline description of the stucture of the rest of this document.
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.

Acronyms

API
Application Programming Interface
BOM
Beginning of Message
CASE
Compentencies and Academic Standards Exchange
CEDS
Common Education Data Standards
CSV
Comma Separated Values
GUID
Globally Unique Identifier
IETF
Internet Engineering Task Force
LDAP
Lightweight Directory Access Protocol
LIS
Learning Information Services
LMS
Learning Management System
LOR
Learning Object Repository
LTI
Learning Tools Interoperability
RFC
Request For Comment
URN
Uniform Resource Name
UTF
Unicode Transformation Format
UUID
Universally Unique Identifier

CSV Overview

This Section is NORMATIVE.

Binding of the Data

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.

Table 2.1 A summary of the list of files that may be present as part of a OneRoster CSV-based data exchange.
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).

Exchanging the CSV Files

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]].

Compatibility Between V1.0, V1.1 and V1.2

A system that imports both V1.0, V1.1 and V1.2 compliant data sets must differentiate using the following algorithm:

Bulk/Delta Behavior Constraints

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.

State diagram for the CSV bulk/delta modes interaction.
– State diagram for the management of records using bulk/delta processing at the service provider.

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:

CSV Format

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:

'manifest.csv'

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.

Table 3.1 - Format for the contents of the 'manifest.csv' file.
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.

'academicSessions.csv'

This file represents the AcademicSessions dataset from the OneRoster Rostering specification.

The academicSessions.csv file format and contents.
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:

'categories.csv'

This file represents the Categories dataset from the OneRoster Gradebook specification.

The categories.csv file format and contents.
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.

'classes.csv'

This file represents the Classes dataset from the OneRoster Rostering specification.

The classes.csv file format and contents.
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:

'classResources.csv'

This file represents the links between the Resources and Classes datasets from the OneRoster Rostering and Resources specification.

The classResources.csv file format and contents.
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:

'courseResources.csv'

This file represents the links between the Resources and Courses datasets from the OneRoster Rostering and Resources specification.

The 'courseResources.csv' file format and contents.
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:

'courses.csv'

This file represents the Courses dataset from the OneRoster Rostering specification.

The courses.csv file format and contents.
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:

'demographics.csv'

This file represents the Demographics dataset from the OneRoster Rostering specification.

The 'demographics.csv' file format and contents.
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:

'enrollments.csv'

This file represents the Enrollments dataset from the OneRoster Rostering specification.

The enrollments.csv file format and contents.
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:

'lineItemLearningObjectiveIds.csv'

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.

The 'lineItemLearningObjectiveIds.csv' file format and contents.
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:

'lineItems.csv'

This file represents the LineItems dataset from the OneRoster Gradebook specification.

The 'lineItems.csv' file format and contents.
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:

'lineItemScoreScales.csv'

A new file added in version 1.2.

This file represents the mapping between the LineItems and ScoreScales datasets from the OneRoster Gradebook specification.

The 'lineItemScoreScales.csv' file format and contents.
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:

'orgs.csv'

This file represents the Orgs dataset from the OneRoster Rostering specification.

The 'orgs.csv' file format and contents.
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:

'resources.csv'

This file represents the Resources dataset from the OneRoster Resources specification.

The 'resources.csv' file format and contents.
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.

'resultLearningObjectiveIds.csv'

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.

The 'resultLearningObjectiveIds.csv' file format and contents.
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:

'results.csv'

This file represents the Results dataset from the OneRoster Gradebook specification.

The 'results.csv' file format and contents.
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:

'resultScoreScales.csv'

A new file added in version 1.2.

This file represents the mapping between the Results and ScoreScales datasets from the OneRoster Gradebook specification.

The 'resultScoreScales.csv' file format and contents.
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:

'roles.csv'

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.

The 'roles.csv' file format and contents.
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:

'scoreScales.csv'

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.

The 'scoreScales.csv' file format and contents.
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:

'userProfiles.csv'

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.

The userProfiles.csv file format and contents.
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:

'userResources.csv'

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.

The 'userResources.csv' file format and contents.
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:

'users.csv'

This file represents the Users dataset from the OneRoster Rostering specification.

Several columns have been deleted and new ones added in this release.

The 'users.csv' file format and contents.
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.
email 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:

Extending & Profiling the CSV Binding

This Section is NON-NORMATIVE.

Extending the CSV Binding

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 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]].

Proprietary Vocabulary Terms

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]].

Profiling the CSV Binding

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.

File Dependencies Matrix

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

Table A1 - CSV files dependencies matrix.
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.

Revision History

Version History

Publication history and revision details for this specification.
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:
  • Rostering based - 'roles.csv' and 'userProfiles.csv'
  • Resources based - 'userResources.csv'
  • Gradebook based - 'scoreScales.csv', 'resultScoreScales.csv', 'lineItemScoreScales', 'lineItemLearningObjectiveIds.csv' and 'resultLearningObjectiveIds.csv'.

Changes in this Version

The changes made for this Final Release 1.2 document are: