This app serves a OneRoster 1.2 API from data in an Ed-Fi ODS (Data Standard 4.0 and 5.x).
Built by Tom Reitz of Education Analytics for 1EdTech in support of its partnership with the Ed-Fi Alliance.
- Ed-Fi Data Standard 5.x (5.0, 5.1, 5.2)
- Ed-Fi Data Standard 4.0
- Docker testing - Full stack docker deployment guide
- Testing Guide - Performance and compatibility testing
- Database Design - Knex.js abstraction layer
- OneRoster View Mappings - How each
oneroster12view is built from the Ed-Fi ODS, with mapping rules and nuances - Extending Metadata with Custom Fields - Post-refresh hook for adding custom fields to OneRoster
metadata - IIS Deployment - Windows/IIS hosting guide
- Local Development Guide - Environment setup, database schema deployment, running natively, and API validation
The following GET endpoints are fully implemented:
| Endpoint | Ed-Fi Source |
|---|---|
/ims/oneroster/rostering/v1p2/academicSessions |
sessions, schools, schoolCalendars |
/ims/oneroster/rostering/v1p2/academicSessions/{id} |
— |
/ims/oneroster/rostering/v1p2/classes |
sections, courseOfferings, schools |
/ims/oneroster/rostering/v1p2/classes/{id} |
— |
/ims/oneroster/rostering/v1p2/courses |
courses, courseOfferings, schools |
/ims/oneroster/rostering/v1p2/courses/{id} |
— |
/ims/oneroster/rostering/v1p2/demographics |
students, studentEdOrgAssn |
/ims/oneroster/rostering/v1p2/demographics/{id} |
— |
/ims/oneroster/rostering/v1p2/enrollments |
staffSectionAssn, studentSectionAssn, sections |
/ims/oneroster/rostering/v1p2/enrollments/{id} |
— |
/ims/oneroster/rostering/v1p2/orgs |
schools, localEducationAgencies, stateEducationAgencies |
/ims/oneroster/rostering/v1p2/orgs/{id} |
— |
/ims/oneroster/rostering/v1p2/users |
staffs, students, contacts, section/school associations |
/ims/oneroster/rostering/v1p2/users/{id} |
— |
/ims/oneroster/rostering/v1p2/schools |
Subset of orgs |
/ims/oneroster/rostering/v1p2/schools/{id} |
— |
/ims/oneroster/rostering/v1p2/students |
Subset of users |
/ims/oneroster/rostering/v1p2/students/{id} |
— |
/ims/oneroster/rostering/v1p2/teachers |
Subset of users |
/ims/oneroster/rostering/v1p2/teachers/{id} |
— |
/ims/oneroster/rostering/v1p2/gradingPeriods |
Subset of academicSessions |
/ims/oneroster/rostering/v1p2/gradingPeriods/{id} |
— |
/ims/oneroster/rostering/v1p2/terms |
Subset of academicSessions |
/ims/oneroster/rostering/v1p2/terms/{id} |
— |
See the OneRoster 1.2 specification for field definitions and filter syntax.
Supported query parameters on all list endpoints:
| Parameter | Example | Description |
|---|---|---|
limit / offset |
?limit=100&offset=0 |
Pagination |
sort / orderBy |
?sort=familyName&orderBy=asc |
Sorting |
filter |
?filter=familyName='jones' |
Server-side filtering |
fields |
?fields=givenName,familyName |
Field selection |
Copyright (c) 2025 1EdTech Consortium, Inc. and contributors.
Licensed under the Apache License, Version 2.0 (the "License").
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
See NOTICES for additional copyright and license notifications.