Skip to content

Department and term codes

These methods return the code tables used by the lecture timetable screen of the school’s student information system (SIS): organization categories, terms, departments, course types and selective domains. No login is needed. Do not hard-code codes or names: get them from these methods and pass them on to the others. Department codes use the same system as the departmentCode in a logged-in student’s SIS result. Common rules are on Common rules.

There are five methods: organization_categories(), terms(category_code), departments(category_code, year, semester_code), course_types(), selective_domains(). Node.js and Java use camelCase (organizationCategories(), courseTypes(), …), and in Node.js departments takes an object: departments({ categoryCode, year, semesterCode }).

Parameter Type Required Default Meaning
category_code string required for terms, departments - Organization category code. Pass the code that organization_categories() returned, not a hard-coded list
year string required for departments - Year. Pass the year that terms(category_code) returned
semester_code string required for departments - Term code (table below)

The other three methods (organization_categories, course_types, selective_domains) take no parameters.

Term code Term
10 1st semester
11 summer session
20 2nd semester
21 winter session

School request

  • Endpoints under POST https://sjpt.sejong.ac.kr/sch/sch/ext/SueOpenTimeQ/: doOnload.do for organization categories, course types and selective domains, doYearsmtlist.do for terms, doLesndeptgroup.do for departments. The body is {"dm_search": {...}} JSON.
  • The department request’s dm_search carries ORGN_CLSF_CD, YEAR, SMT_CD and YEAR_SMT (<year>/<term code>, for example year/20).
  • Organization categories, course types and selective domains come from the same doOnload.do answer, but each method has its own cache entry.

All return lists (OrganizationCategory, Term, Department, CourseType, SelectiveDomain). In the example JSON, field names are Python snake_case; Node.js and Java use camelCase (for example name_en is nameEn). School data changes, so the values are examples.

// terms("20")
[{ "year": "2026", "semester_code": "20", "code": "2026/20", "name": "2026/2학기", "extra": {} }]
// organization_categories()
[{ "code": "20", "name": "학부", "name_en": "Undergraduate", "extra": { "PRT_ORD": "200" } }]
// departments("20", "2026", "20")
[{
"code": "3517", "level": "2",
"college_code": "3500", "college_name": "인공지능융합대학",
"unit_code": "3517", "unit_name": "AI로봇학과",
"major_code": "", "major_name": "",
"name_en": "College of AI Convergence Department of Artificial Intelligence and Robotics",
"extra": { "DEPT_NM": "인공지능융합대학 AI로봇학과【3517 학부】", "ORGN_CLSF_CD": "20" }
}]
// course_types()
[{ "code": "11", "name": "교필", "category_code": "20", "extra": { "CURI_TYPE_FULL_NM": "교양필수" } }]
// selective_domains()
[{ "code": "10", "name": "인성과도덕", "name_en": "Character & Morality", "extra": { "PRT_ORD": "1" } }]

Missing values are empty strings, and every model has extra (a string map).

Organization category (OrganizationCategory)

Section titled “Organization category (OrganizationCategory)”
Field School key Meaning
code COM_CD Category code (undergraduate 20, general graduate school 30, …). Pass it as category_code to other methods
name, name_en CD_NM, CD_NM_ENG Korean and English name
extra other fields for example the display order PRT_ORD

The school’s response has CD_ALIAS1 to CD_ALIAS3 fields, one of which holds a staff member’s name. The library neither reads them nor puts them in extra.

Field School key Meaning
year YEAR Year (string)
semester_code SMT_CD Term code (table above)
code YEAR_SMT_CD In the form <year>/<term code>
name YEAR_SMT_NM Name as the school writes it
Field School key Meaning
code DEPT_CD Department code, the same system as departmentCode in a student’s SIS result
level DEPT_LEVEL_CD 2 department or division, 3 major inside a division
college_code, college_name DEPT_L_CD, DEPT_L_PRINT College code and clean name
unit_code, unit_name DEPT_M_CD, DEPT_M_PRINT Department or division code and name
major_code, major_name DEPT_S_CD, DEPT_S_PRINT Major code and name (only when level is 3)
name_en DEPT_NM_ENG English name (empty on some rows)
  • When level is 2, code equals unit_code. When it is 3, code equals major_code and the parent is unit_code.
  • The *_PRINT names are clean. The *_NM fields that land in extra (such as DEPT_NM) carry a decoration like 【3517 학부】, and the library does not strip it.
  • college_code is not always a real college. Interdisciplinary majors and legacy grouping codes can appear, so use the code only as a join key.
  • Every school column outside the fields above goes to extra.

Course type (CourseType) and selective domain (SelectiveDomain)

Section titled “Course type (CourseType) and selective domain (SelectiveDomain)”
Model Fields School keys
CourseType code, name, category_code CURI_TYPE_CD, CURI_TYPE_CD_NM, ORGN_CLSF_CD
SelectiveDomain code, name, name_en COM_CD, CD_NM, CD_NM_ENG

These are codes with the same names as course_type_code and domain_code in course listings (Course listings).

  • Cached per method and arguments for one day (86400 seconds by default). Departments are cached separately for each category, year and term, with one school request per call.
  • A connection failure, timeout, missing dataset key or a _SUBMIT_ERROR_ answer from the school (the school can answer HTTP 200 with an error object) returns the last cached value or an empty list, without raising.
  • An empty list can be a valid answer: for example, some organization categories have no departments in a term.
  • These five methods never raise for input problems.
  • Unofficial, unversioned endpoints. The school can change or remove them without notice.
  • The department list differs by term. Departments are added and renamed, so always pass the term you want.
  • This list holds the departments that offer courses in that term (for the timetable filter). It is not every administrative unit: non-academic units such as centers and offices are not included.
  • That code matches the student’s SIS department code holds for an undergraduate student account. Codes for graduate students, double majors and staff accounts may differ.
  • Contract source: spec/REFERENCE_DATA.md
List<OrganizationCategory> categories = publicData.organizationCategories();
List<Term> terms = publicData.terms("20"); // undergraduate terms
List<Department> departments = publicData.departments("20", "2026", "20"); // undergraduate, term code 20 = 2nd semester

For a full example that searches lectures from the department list, see Department and lecture search.