Expanding Edlink Unified Data Model
We're launching a new version of the Edlink Unified Data Model that includes more data types and relationships. This is our first major update to our data model in several years and we're excited to see how developers use this new data to improve their platforms and the lives of students around the world.
This expansion has been the result of a ton of effort from our engineering team and we're thrilled to finally be able to share it with you.
The Goals of this Expansion
Abstraction is hard. Systems are complex. We're not going to pretend that we've got it all figured out, but we spent a lot of time thinking and planning. Our goals were to:
- Make more data accessible to edtech developers without introducing breaking changes to API V2.
- Clarify and provide more detail on the relationships between data types (e.g.
peopleandschools). - Thoughtfully represent attendance data for 99% of use cases.
- Expose "minor" details that were previously hidden from developers, like institution-specific enums.
Not only did we have to write a ton of new models, tables, endpoints, and docs; we also needed to actually implement the syncs for all of our supported LMS & SIS systems.
The New Data Types & Relationships
| Name | Slug | Description |
|---|---|---|
| Attendance Entry Flag | attendance_entry_flag | Qualifiers applied to attendance entries |
| Attendance Entry Method Type | attendance_entry_method_type | Who/What recorded the attendance |
| Attendance Entry Methods | attendance_entry_methods | Standardized attendance entry method mappings |
| Attendance Entry Source Type | attendance_entry_source_type | Device or channel used for entry |
| Attendance Entry Sources | attendance_entry_sources | Standardized attendance entry source mappings |
| Attendance Entry Status | attendance_entry_status | Whether an attendance entry is excused, exempt, N/A, etc. |
| Attendance Entry Type | attendance_entry_type | Whether someone was absent, present, tardy, etc. |
| Attendance Flags | attendance_flags | Standardized attendance flag mappings |
| Attendance Statuses | attendance_statuses | Standardized attendance status mappings |
| Attendance Types | attendance_types | Standardized attendance type mappings |
| Bell Schedule Days | bell_schedule_days | Days that bell schedules apply to |
| Bell Schedule Periods | bell_schedule_periods | Period timing blocks in bell schedules |
| Bell Schedules | bell_schedules | Reusable period time block collections |
| Calendar Day Incidents | calendar_day_incidents | Standardized calendar day incident labels |
| Calendar Type | calendar_type | Classification of calendar purpose |
| Day Incident | day_incident | Categories used in calendar day incidents |
| Day Rotations | day_rotations | Optional school day classifications |
| Day Type | day_type | Classification of school calendar days |
| District Enrollment Roles | district_enrollment_roles | District enrollment role mappings |
| District Enrollments | district_enrollments | Staff/student association periods with district |
| Enrollment Roles | enrollment_roles | Enrollment role mappings to roles |
| Gender Identities | gender_identities | Gender identity enumeration mappings |
| Grade Levels | grade_levels | Grade level enumeration mappings |
| Grading Periods | grading_periods | School year grading time segments |
| Period Type | period_type | Classification of bell schedule periods |
| Person Role | person_role | Custom role values including an "other" value for ambiguous mappings |
| School Calendar Day Incidents | school_calendar_day_incidents | Incidents linked to calendar days |
| School Calendar Days | school_calendar_days | Days assigned to school calendars |
| School Calendars | school_calendars | School year calendar associations |
| School Enrollment Roles | school_enrollment_roles | School enrollment role mappings |
| School Enrollments | school_enrollments | Staff/student school association periods |
| School Flag | school_flag | School characteristics such as charter or year-round |
| School Years | school_years | Academic instruction time periods |
| Staff Period Attendance | staff_period_attendance | Staff period-level attendance outcomes |
| Staff Period Attendance Flags | staff_period_attendance_flags | Flags on staff period attendance |
| Staff Period Attendance Intervals | staff_period_attendance_intervals | Time segments of staff presence |
| Staff Period Meetings | staff_period_meetings | Staff class meetings by period/day |
| Student Day Attendance | student_day_attendance | Student day-level attendance records |
| Student Day Attendance Flags | student_day_attendance_flags | Flags on student day attendance |
| Student Day Attendance Intervals | student_day_attendance_intervals | Time segments of student presence |
| Student Day Meetings | student_day_meetings | Student day meeting attendance context |
| Student Period Attendance | student_period_attendance | Student period-level attendance records |
| Student Period Attendance Flags | student_period_attendance_flags | Flags on student period attendance |
| Student Period Attendance Intervals | student_period_attendance_intervals | Time segments of student presence |
| Student Period Meetings | student_period_meetings | Student class meetings by period |
| Tracks | tracks | School track program definitions |
We tried hard to have this expansion be as non-invasive as possible. We've made a number of additive changes to existing types to ensure that the API remains backwards compatible. This means that you can choose to adopt the new data types and relationships at your own pace.
Changes to Existing Types
| Name | Slug | Description |
|---|---|---|
| Enrollments | enrollments | Added track and enrollment role fields |
| People | people | Added gender identity reference field |
| Rooms | rooms | Added virtual meeting room URI field |
| Schools | schools | Added school characteristic flags field |
If you need help or want to learn more about the new data types and relationships, please don't hesitate to reach out to our support team at support@ed.link or via our live chat.
