Skip to content

Extracurricular programs

Query the schedule that the school’s extracurricular program portal (do.sejong.ac.kr) serves publicly, by date range. No login is needed. It includes the category, start and end time, location, description and detail address. Common rules are on Common rules.

Parameter Type Required Default Meaning
start string yyyy-MM-dd required none Start of the range
end string yyyy-MM-dd required none End of the range
category string optional "" The school’s category value. Empty returns all. Check category names in the result’s category_title
  • Naming: Python uses snake_case, Node.js and Java use camelCase. Node.js is extracurricularEvents({ start, end, category = '' }); Java is extracurricularEvents(startDate, endDate) and extracurricularEvents(startDate, endDate, category) (pass "" to leave the optional one empty).
  • School request: POST https://do.sejong.ac.kr/ko/process/schedule/getEvents, form cid=eco, category, start, end, start_year, end_year (the year fields are the first four characters of each date), answer array events.
  • Form request headers are application/x-www-form-urlencoded; charset=UTF-8 and X-Requested-With: XMLHttpRequest.

A list of ExtracurricularEvent (field names in Python style; Node.js and Java use camelCase). School data changes, so the values are examples.

[
{
"id": "event-id",
"title": "Program title",
"start": "2026-03-10T14:00:00+09:00",
"end": "2026-03-10T16:00:00+09:00",
"category_title": "Category name",
"url": "https://do.sejong.ac.kr/ko/program/all/view/0000",
"description": "Program description",
"location": "Place"
}
]

All are strings, and a missing value is an empty string. This model has no extra.

Field School key Meaning
id id Program number
title title Title
start, end start, end Start and end (date-time strings, school’s own text)
category_title category_title Category name
url data.url Detail address
description data.description Description
location data.location Place

url, description and location are read from the data object of the school answer.

  • Cached for one day (86400 seconds by default) per range and category. One call sends one request.
  • A school failure (connection, timeout, bad answer, no events) returns the last cached value or an empty list. With no cache, it returns an empty list without a request for 60 seconds (default).
  • This method never raises.
  • An empty list cannot tell “no programs in that range” from “a problem on the school side”.
  • No list of usable category values is provided. Check category names in the result’s category_title.
  • start and end are in the school’s own format, so check real values before parsing.
  • The maximum range of one call is not specified, so try a real call before using a long range.
  • Contract source: spec/PUBLIC_DATA.md
List<ExtracurricularEvent> events = publicData.extracurricularEvents("2026-10-01", "2026-10-31");