For Developers

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:

  1. Make more data accessible to edtech developers without introducing breaking changes to API V2.
  2. Clarify and provide more detail on the relationships between data types (e.g. people and schools).
  3. Thoughtfully represent attendance data for 99% of use cases.
  4. 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

NameSlugDescription
Attendance Entry Flagattendance_entry_flagQualifiers applied to attendance entries
Attendance Entry Method Typeattendance_entry_method_typeWho/What recorded the attendance
Attendance Entry Methodsattendance_entry_methodsStandardized attendance entry method mappings
Attendance Entry Source Typeattendance_entry_source_typeDevice or channel used for entry
Attendance Entry Sourcesattendance_entry_sourcesStandardized attendance entry source mappings
Attendance Entry Statusattendance_entry_statusWhether an attendance entry is excused, exempt, N/A, etc.
Attendance Entry Typeattendance_entry_typeWhether someone was absent, present, tardy, etc.
Attendance Flagsattendance_flagsStandardized attendance flag mappings
Attendance Statusesattendance_statusesStandardized attendance status mappings
Attendance Typesattendance_typesStandardized attendance type mappings
Bell Schedule Daysbell_schedule_daysDays that bell schedules apply to
Bell Schedule Periodsbell_schedule_periodsPeriod timing blocks in bell schedules
Bell Schedulesbell_schedulesReusable period time block collections
Calendar Day Incidentscalendar_day_incidentsStandardized calendar day incident labels
Calendar Typecalendar_typeClassification of calendar purpose
Day Incidentday_incidentCategories used in calendar day incidents
Day Rotationsday_rotationsOptional school day classifications
Day Typeday_typeClassification of school calendar days
District Enrollment Rolesdistrict_enrollment_rolesDistrict enrollment role mappings
District Enrollmentsdistrict_enrollmentsStaff/student association periods with district
Enrollment Rolesenrollment_rolesEnrollment role mappings to roles
Gender Identitiesgender_identitiesGender identity enumeration mappings
Grade Levelsgrade_levelsGrade level enumeration mappings
Grading Periodsgrading_periodsSchool year grading time segments
Period Typeperiod_typeClassification of bell schedule periods
Person Roleperson_roleCustom role values including an "other" value for ambiguous mappings
School Calendar Day Incidentsschool_calendar_day_incidentsIncidents linked to calendar days
School Calendar Daysschool_calendar_daysDays assigned to school calendars
School Calendarsschool_calendarsSchool year calendar associations
School Enrollment Rolesschool_enrollment_rolesSchool enrollment role mappings
School Enrollmentsschool_enrollmentsStaff/student school association periods
School Flagschool_flagSchool characteristics such as charter or year-round
School Yearsschool_yearsAcademic instruction time periods
Staff Period Attendancestaff_period_attendanceStaff period-level attendance outcomes
Staff Period Attendance Flagsstaff_period_attendance_flagsFlags on staff period attendance
Staff Period Attendance Intervalsstaff_period_attendance_intervalsTime segments of staff presence
Staff Period Meetingsstaff_period_meetingsStaff class meetings by period/day
Student Day Attendancestudent_day_attendanceStudent day-level attendance records
Student Day Attendance Flagsstudent_day_attendance_flagsFlags on student day attendance
Student Day Attendance Intervalsstudent_day_attendance_intervalsTime segments of student presence
Student Day Meetingsstudent_day_meetingsStudent day meeting attendance context
Student Period Attendancestudent_period_attendanceStudent period-level attendance records
Student Period Attendance Flagsstudent_period_attendance_flagsFlags on student period attendance
Student Period Attendance Intervalsstudent_period_attendance_intervalsTime segments of student presence
Student Period Meetingsstudent_period_meetingsStudent class meetings by period
TrackstracksSchool 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

NameSlugDescription
EnrollmentsenrollmentsAdded track and enrollment role fields
PeoplepeopleAdded gender identity reference field
RoomsroomsAdded virtual meeting room URI field
SchoolsschoolsAdded 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.