WI DPI WISEdata Ed-Fi Docs

/calendars and /calendarDates

The calendar endpoint is intended to represent a set of specific dates, usually instructional days.

The calenderDate endpoint represents a specific date and allows additional information to describe the type of date (e.g., Instructional day, Make-up day, Weather day, etc.).

Starting the the 24/25 school year, an optional data collection to enhance the ability to perform additional data checks utilizing endpoints such as /calendars and /calendarDates.

This endpoint is optional for both Public and Choice schools.

Ed-Fi Tech Docs: https://schema.ed-fi.org/datahandbook-v400/index.html#/Calendar2600 and https://schema.ed-fi.org/datahandbook-v400/index.html#/CalendarDate545

 


Data Properties:

#

Endpoint

Property Name

Data Type

Public (Required/ Optional/ Conditional)

Choice (Required/ Optional/ Conditional)

Business Definition

1.0

/calendars

calendarCode

string

Required

Required

The identifier for the Calendar.

2.0

schoolReference
schoolId

integer

Required

Required

The identifier assigned to a school.

3.0

schoolYearTypeReference
schoolYear

integer

Required

Required

Key for School Year

4.0

calendarTypeDescriptor

string

Required

Required

Indicates the type of Calendar

5.0

gradeLevels
gradeLevelDescriptor

string

Optional

Optional

Indicates the GradeLevel associated with the Calendar.

6.0

/calenderDates

calendarEvents
calendarEventDescriptor

string

Required

Required

An unordered collection of calendarDateCalendarEvents. The type of scheduled or unscheduled event for the day.

7.0

date

string

Required

Required

The month, day, and year of the CalendarEvent.

8.0

calendarReference

array

 

 

 

9.0

calendarCode

string

Required

Required

The identifier for the Calendar.

10.0

schoolId

integer

Required

Required

The identifier assigned to a school.

11.0

schoolYear

integer

Required

Required

The identifier for the school year associated with the Calendar.


Descriptors:

Endpoint

Namespace

Code Value

Short Description

Long Description

Endpoint

Namespace

Code Value

Short Description

Long Description

/calendars

uri://ed-fi.org/CalendarTypeDescriptor

Student Specific

Student Specific

Student Specific

School

School

School

IEP

IEP

IEP

Grade Level

Grade Level

Grade Level

Staff

Staff

Staff

uri://ed-fi.org/CalendarEventDescriptor

Emergency day

Emergency day

Instruction cancelled or reduced due to an emergency

Instructional day

Instructional day

Student instructional day

Make-up day

Make-up day

Make-up instructional day

Holiday

Holiday

Instruction cancelled or reduced due to a holiday

Strike

Strike

Instruction cancelled or reduced due to a strike

Teacher only day

Teacher only day

Non-instructional day for students designated for teachers (e.g., staff development, work day)

Other

Other

Other

Student late arrival/early dismissal

Student late arrival/early dismissal

Abbreviated instructional day due to student late arrival or early dismissal

Weather day

Weather day

Instruction cancelled or reduced due to weather

Non-instructional day

Non-instructional day

Non-instructional day

/calenderDates

uri://dpi.wi.gov/GradeLevelDescriptor

KG

5 year old Kindergarten

5 year old Kindergarten

PK

Pre-Kindergarten

Pre-Kindergarten

01

First Grade

First Grade

02

Second Grade

Second Grade

03

Third Grade

Third Grade

04

Fourth Grade

Fourth Grade

05

Fifth Grade

Fifth Grade

06

Sixth Grade

Sixth Grade

07

Seventh Grade

Seventh Grade

08

Eighth Grade

Eighth Grade

09

Ninth Grade

Ninth Grade

10

Tenth Grade

Tenth Grade

11

Eleventh Grade

Eleventh Grade

12

Twelfth Grade

Twelfth Grade

K4

4-year-old Kindergarten

4-year-old Kindergarten


Use Cases:

#

Use Case Title

Use Case Description

What to Submit/retrieve

#

Use Case Title

Use Case Description

What to Submit/retrieve

 

School Calendar

 

 

1.0

Sending the school calendar

The Calendar endpoint represents a set of specific dates, which usually represent instructional days.

  • If the school has only one calendar, then SIS vendors don't have to send the calendarReference on /studentSchoolAssociation.

  • Possible Calendar Types are: School, Grade Level, Student Specific, IEP, and Staff. DPI is not going to restrict the CalendarTypeDescriptor.

  • If a school has grade-level calendars, then there SHOULD be multiple Calendars and the GradeLevels on Calendar (Calendar.GradeLevel collection) for each SHOULD be populated and all calendar dates for that calendar populated. In this case there SHOULD NOT be an overall School calendar listing all GradeLevels, and such calendars should not attempt to show differences or "exceptions" from such an overall model.

----------------------------

The CalendarDate entity models a specific date, and allows additional information to describe the type of date.

  • SIS/LEAs are expected to report a CalendarEventDescriptor for all school days. Days that don't have a calendarDates resource are assumed to be an non-school days.

  • Possible Calendar Events are: Instructional day, Make-up day, Emergency day, Holiday, Strike, Teacher only day, Student late arrival/early dismissal, Weather day, Non-instructional day, and Other. DPI is not going to restrict the CalendarEventDescriptor.

POST on /calendars:

"calendarCode":"020TEST",
"schoolReference":
"schoolId":2097
"schoolYearTypeReference":
"schoolYear":2025
"calendarTypeDescriptor":"uri://ed-fi.org/CalendarTypeDescriptor#School",
"gradeLevels":[ ]

POST on /calendarDates (for each date):

"calendarEvents":
"calendarEventDescriptor": "uri://ed-fi.org/CalendarEventDescriptor#Instructional day"
"date": "2024-08-05",
"calendarReference":
"calendarCode": "020TEST",
"schoolId": 2097,
"schoolYear": 2025,

2.0

Sending multiple calendars

Schools in K12 often have multiple calendars. While schools may have an overall calendar that applies to everyone, others sometimes have slightly different calendars for various grade levels.

When using individual (or small group) calendars, it is RECOMMENDED that the StudentSchoolAssociation. Calendar reference only be populated when and if the student has a unique, individualized calendar, and not a school or grade level calendar. Such calendars SHOULD have a type set to a Ed-Fi standard descriptor value (e.g., "Student Specific" or "IEP") to ensure clarity on the scope and avoid confusion with a school or grade-level calendar. "

  • If the school has only one calendar, then SIS vendors don't have to send the calendarReference on /studentSchoolAssociation.

  • If the school has multiple calendars, then SIS vendors must send the calendarReference on /studentSchoolAssociation.

POST on /calendars: -- overall calendar that applies to everyone
"calendarCode":"030TEST",
"schoolReference":
"schoolId":7522
"schoolYearTypeReference":
"schoolYear":2025
"calendarTypeDescriptor":"uri://ed-fi.org/CalendarTypeDescriptor#Grade Level",
"gradeLevels":
"gradeLevelDescriptor":"uri://dpi.wi.gov/GradeLevelDescriptor#6",
"gradeLevelDescriptor":"uri://dpi.wi.gov/GradeLevelDescriptor#7"

POST on /studentSchoolAssociation:
"entryDate": "2025-08-05",
"calendarReference":
"calendarCode": "030TEST",
"schoolId": 7522 ,
"schoolYear": 2025,
"schoolReference":
"schoolId": 7522
"studentReference":
"studentUniqueId": xxxxxxx
etc......
----------------------

POST on /calendars: -- individualized calendar
"calendarCode":"2010605675",
"schoolReference":
"schoolId":7522 ,
"schoolYearTypeReference":
"schoolYear":2025
"calendarTypeDescriptor":"uri://ed-fi.org/CalendarTypeDescriptor#IEP",
"gradeLevels":[ ]

POST on /studentSchoolAssociation:
"entryDate": "2025-08-05",
"calendarReference":
"calendarCode": "2010605675",
"schoolId": 7522 ,
"schoolYear": 2025,
"schoolReference":
"schoolId": 7522
"studentReference":
"studentUniqueId": xxxxxxx
etc......

 

Student Daily Negative Attendance

 

 

1.0

Sending a student absent for partial or a full-school day

The studentSchoolAttendanceEvent endpoint represents the recording of attendance taken by a teacher for a section.

SIS/LEAs should only report negative attendance for students marked "Excused Absence", "Excused Absence", etc. A separate studentSchoolAttendanceEvent record is submitted for each student, each school of enrollment, and each date on which the student was absent for all or part of the day.

Assumptions:

  • The school has a single calendar. If a school has multiple calendars, the calendar which applies to the student should be used.

  • The student does not have an individual calendar. If a student has an individual calendar, the calendar as defined by studentSchoolAssociation → Calendar reference should be used.

  • The student is enrolled in the school for the entire session and school year.

  • The school's sessions do not overlap, and there's a session with termDescriptor as "Annual"

  • The actual number of days (reported to the one-half day) in attendance during a school term:

  • students who receive at least 66% of district-supervised educational services for the day have accrued a full day (1.0) of actual attendance for that day.

  • students who receive at least 33% and less than 66% of district-supervised educational services for the day have accrued a half day (0.5) of actual attendance for that day.

Note: "positive" attendance is not captured, and only the exceptions to being in attendance are captured ("Excused Absence", "Excused Absence", etc.)

POST on /studentSchoolAttendanceEvent:
"schoolReference":
"schoolId": 7525
"sessionReference":
"schoolId": 7525,
"schoolYear": 2025,
"sessionName": "2025 Cal",
"studentReference": {
"studentUniqueId": "7013013246",
"attendanceEventCategoryDescriptor": "uri://ed-fi.org/AttendanceEventCategoryDescriptor#Excused Absence",
"eventDate": "2025-08-23",

POST on /studentSchoolAssociation:
"schoolReference":
"schoolId": 7525
"studentReference":
"studentUniqueId": "7013013246"
"entryDate": "2024-08-05",
......
"_EXT":
"WI":
"actualDaysAttendance": 5,
"possibleDaysAttendance": 151,
"residencyPeriods":
"residentLocalEducationAgencyReference":
"localEducationAgencyId": 7533
},
"beginDate": "2023-09-12",
"residencyStatusDescriptor": "uri://dpi.wi.gov/ResidencyStatusDescriptor#R",
"endDate": " "
"receivingServices":
"countDateNameDescriptor": "uri://dpi.wi.gov/CountDateNameDescriptor#3FS",
"countDateReceivingServiceDescriptor": "uri://dpi.wi.gov/CountDateReceivingServiceDescriptor#P"

"countDateNameDescriptor": "uri://dpi.wi.gov/CountDateNameDescriptor#M-3FS",
"countDateReceivingServiceDescriptor": "uri://dpi.wi.gov/CountDateReceivingServiceDescriptor#A"

 

POST /session:
"schoolReference":
"schoolId": 7525
"schoolYearTypeReference":
"schoolYear": 2025
"termDescriptor": "uri://dpi.wi.gov/TermDescriptor#A",
"sessionName": "2025 Cal",
"beginDate": "2024-08-05",
"endDate": "2025-06-30",
"totalInstructionalDays": 151,

2.0

Modifying student absence dates for a previously submitted record

At times, the LEA may not mark absences as excused until the approval for homebound status is granted. This delay impacts the student's attendance record, but once the approval is received, the LEA can retroactively designate the absences as excused.

To update a student's attendance, follow these two steps: 1) Delete the inaccurate record, and 2) Create a new record with the correct date.

DELETE on /studentSchoolAttendanceEvent using the Ed-Fi ID (GUID).

THEN

POST on /studentSchoolAttendanceEvent

3.0

Sending attendance for a student who has multiple enrollments with in the same LEA but only one enrollment cover the count date.

Test case for public school only

If a student has multiple enrollment records within the same district, and attendance before and after the count date in the district, the countDateReceivingServiceDescriptor should be reported as Present or Absent.

Exampe:

  • SSA 1 - School A: Present before the count date, but SSA doesn’t cover count date.

  • SSA 2 - School B: Absent all dates, but SSA cover count date.

  • SSA 3 - School C: Present after the count date, but SSA doesn’t cover count date.

In this specific case, if the student is reported as ‘Not Receiving Services’, a warning will be displayed in WISEdata Portal so that LEAs can review this student and verify the data is accurate in the SIS.

LEAs should be able to override the student's countDateReceivingServiceDescriptor to be 'A - Absent'.

POST on /studentSchoolAssociation: -- School A and student was present at least before the count date
"schoolReference":
"schoolId": 7525
"entryDate": "2024-08-05",
"exitWithdrawDate": "2024-09-16",
"exitWithdrawTypeDescriptor": "uri://dpi.wi.gov/exitWithdrawTypeDescriptor#C",
......
"_EXT":
"WI":
"actualDaysAttendance": 10,
"possibleDaysAttendance": 151,
"residencyPeriods":
......
"receivingServices": this enrollment ended before the TFS count date (TFS is 8/20/2025)

POST on /studentSchoolAssociation: -- School B and student was absent all days including the count date
"schoolReference":
"schoolId": 7524
"entryDate": "2024-09-17",
"exitWithdrawDate": "2024-10-11",
"exitWithdrawTypeDescriptor": "uri://dpi.wi.gov/exitWithdrawTypeDescriptor#C",
"primarySchool": "true",
......
"_EXT":
"WI":
"actualDaysAttendance": 40,
"possibleDaysAttendance": 151,
"residencyPeriods":
......
"enrollmentTypeDescriptor": "uri://dpi.wi.gov/EnrollmentTypeDescriptor#P",
"receivingServices":
"countDateNameDescriptor": "uri://dpi.wi.gov/CountDateNameDescriptor#M-1FM",
"countDateReceivingServiceDescriptor": "uri://dpi.wi.gov/CountDateReceivingServiceDescriptor#N"

POST on /studentSchoolAssociation: -- School C and student was present at least after the count date
"schoolReference":
"schoolId": 7523
"entryDate": "2024-10-14",
"exitWithdrawDate": " ",
......
"_EXT":
"WI":
"actualDaysAttendance": 60,
"possibleDaysAttendance": 151,
"residencyPeriods":
......
"receivingServices": this enrollment started after the TFS count date (TFS is 8/20/2025)

4.0

Sending a attendance for a student who has a 'Membership' enrollment type

Test case for public school only

students who are outside of the age requirement that must be met for grade levels are reported with a 'membership' enrollment type. These students will have one of the following residency statuses: R-OUTSIDEAGE, or NR-OUTSIDEAGE.

 

  • Outside age eligibility students are not submitted to DPI for accountability purposes, but are required for membership. Therefore, an enrollment record should be submitted as Membership enrollment type.

  • The attending district submits an enrollment record for the student.

POST on /studentSchoolAttendanceEvent:
"schoolReference":
"schoolId": 7525
"sessionReference":
"schoolId": 7525,
"schoolYear": 2025,
"sessionName": "2025 Fall Semester",
"studentReference": {
"studentUniqueId": "7013013246",
"attendanceEventCategoryDescriptor": "uri://ed-fi.org/AttendanceEventCategoryDescriptor#Excused Absence",
"eventDate": "2025-08-23",

POST on /studentSchoolAssociation:
"schoolReference":
"schoolId": 7525
"studentReference":
"studentUniqueId": "7013013246"
"entryDate": "2024-08-05",
"primarySchool": "true",
......
"_EXT":
"WI":
"actualDaysAttendance": 5,
"possibleDaysAttendance": 151,
"enrollmentTypeDescriptor": "uri://dpi.wi.gov/EnrollmentTypeDescriptor#M"
"residencyPeriods":
"residentLocalEducationAgencyReference":
"localEducationAgencyId": 7533
},
"beginDate": "2023-09-12",
"residencyStatusDescriptor": "uri://dpi.wi.gov/ResidencyStatusDescriptor#R-OUTSIDEAGE",
"endDate": " "
"receivingServices":
"countDateNameDescriptor": "uri://dpi.wi.gov/CountDateNameDescriptor#3FS",
"countDateReceivingServiceDescriptor": "uri://dpi.wi.gov/CountDateReceivingServiceDescriptor#P"

"countDateNameDescriptor": "uri://dpi.wi.gov/CountDateNameDescriptor#M-3FS",
"countDateReceivingServiceDescriptor": "uri://dpi.wi.gov/CountDateReceivingServiceDescriptor#A"

 

POST /session:
"schoolReference":
"schoolId": 7525
"schoolYearTypeReference":
"schoolYear": 2025
"termDescriptor": "uri://dpi.wi.gov/TermDescriptor#A",
"sessionName": "School Calendar",
"beginDate": "2024-08-05",
"endDate": "2025-06-30",
"totalInstructionalDays": 151,

5.0

Sending attendance for a student enrolled part-time in a public school with a 'coursework' enrollment type.

Test case for public school only

students who are primarily homeschooled or enrolled in a private school but taking classes in a public school should have an attendance event. These students will have one of the following residency statuses: R-HOME, R-PRIVATE, and NR-HOME.

 

 

POST on /studentSchoolAttendanceEvent:
"schoolReference":
"schoolId": 7525
"sessionReference":
"schoolId": 7525,
"schoolYear": 2025,
"sessionName": "2025 Fall Semester",
"studentReference": {
"studentUniqueId": "7013013246",
"attendanceEventCategoryDescriptor": "uri://ed-fi.org/AttendanceEventCategoryDescriptor#Unexcused Absence",
"eventDate": "2025-08-23",

POST on /studentSchoolAssociation:
"schoolReference":
"schoolId": 7525
"studentReference":
"studentUniqueId": "7013013246"
"entryDate": "2024-08-05",
"primarySchool": "true",
......
"_EXT":
"WI":
"actualDaysAttendance": 5,
"possibleDaysAttendance": 151,
"enrollmentTypeDescriptor": "uri://dpi.wi.gov/EnrollmentTypeDescriptor#C"
"residencyPeriods":
"residentLocalEducationAgencyReference":
"localEducationAgencyId": 7533
},
"beginDate": "2023-09-12",
"residencyStatusDescriptor": "uri://dpi.wi.gov/ResidencyStatusDescriptor#R-HOME",
"endDate": " "
"receivingServices":
"countDateNameDescriptor": "uri://dpi.wi.gov/CountDateNameDescriptor#3FS",
"countDateReceivingServiceDescriptor": "uri://dpi.wi.gov/CountDateReceivingServiceDescriptor#P"

"countDateNameDescriptor": "uri://dpi.wi.gov/CountDateNameDescriptor#M-3FS",
"countDateReceivingServiceDescriptor": "uri://dpi.wi.gov/CountDateReceivingServiceDescriptor#A"

 

POST /session:
"schoolReference":
"schoolId": 7525
"schoolYearTypeReference":
"schoolYear": 2025
"termDescriptor": "uri://dpi.wi.gov/TermDescriptor#A",
"sessionName": "School Calendar",
"beginDate": "2024-08-05",
"endDate": "2025-06-30",
"totalInstructionalDays": 151,

6.0

Sending a student enrollment record for a student who’s attending a private choice school, and receiving special education services in a public school district

In this specific case, the Choice school submits a primary (P) enrollment, and the Public school submits a Parent Placed Private (PPP) enrollment.

  • The Choice school is expected to report the attendance data.

  • The public school is

NOT expected to report attendance data.

Informational

7.0

Sending a student enrollment record for a student who’s taking coursework in multiple public schools

  • The primary school district submits an

primary (P) enrollment record along with attendance data.

  • The non-primary school district submits a

Coursework (C) enrollment record and should NOT send attendance data.

Informational


JSON Sample:

[ { "id": "3cf557b91f43415992c2cfe6572d7306", "schoolReference": { "schoolId": 152901020, "link": { "rel": "School", "href": "/ed-fi/schools/8ac580fc86814786a652401314e2823a" } }, "schoolYearTypeReference": { "schoolYear": 2021, "link": { "rel": "SchoolYearType", "href": "/ed-fi/schoolYearTypes/df469b830981499a9dcbd264eb2a8ab5" } }, "calendarCode": "020TEST", "calendarTypeDescriptor": "uri://ed-fi.org/CalendarTypeDescriptor#Student Specific", "gradeLevels": [], "_etag": "5249284879505952008" }, { "id": "81f682975abd41bf801cdc130f9cdc74", "schoolReference": { "schoolId": 255901107, "link": { "rel": "School", "href": "/ed-fi/schools/f9df344ba0d44bbca3783e0d7e311e42" } }, "schoolYearTypeReference": { "schoolYear": 2011, "link": { "rel": "SchoolYearType", "href": "/ed-fi/schoolYearTypes/a966c19703794b2e93a2c6286ea4f4ba" } }, "calendarCode": "2010605675", "calendarTypeDescriptor": "uri://ed-fi.org/CalendarTypeDescriptor#Student Specific", "gradeLevels": [], "_etag": "5249091473596587960" } ]

Wisconsin Department of Public Instruction