Skip to content

Result fields

Fields and types of what the integrated, DHC and SIS authentication return. The request side is on Authentication methods; the source schema is spec/RESULT_SCHEMA.md.

Example of an integrated result. The example uses Python snake_case names; Java and Node.js use camelCase (studentId, phoneNumber).

{
"success": true,
"student_id": "20000000",
"name": "홍길동",
"major": "컴퓨터공학과",
"grade": "3",
"status": "재학",
"classic_reading": {
"completed_semesters": "4 학기",
"certified_semesters": "4 학기",
"certification_status": "인증",
"certifications": [{ "area": "서양의 역사와 사상", "required_count": "1", "certified_count": "1" }],
"exam_records": [],
"subject_substitutions": [],
"contest_records": [],
"curriculum_records": []
},
"email": "user@example.com",
"phone_number": "010-0000-0000",
"english_name": "Gildong Hong",
"user_category": "학부생",
"parent_unit_name": "",
"authenticated_at": "yyyy-MM-ddTHH:mm:ss",
"department_code": "0000",
"extra": null,
"raw_html": null,
"raw_json": null
}
Field Type Source Rule
success boolean Always true when a result is returned
studentId string DHC Student ID
name string DHC Name
major string DHC Major
grade string DHC Year
status string DHC Enrollment status (enrolled, on leave, graduated; portal text as is)
classicReading object DHC See “Classic reading” below
email string or null SIS null if the SIS lookup fails
phoneNumber string or null SIS Same. Format 010-0000-0000
englishName string or null SIS Same
userCategory string or null SIS User category, for example 학부생
parentUnitName string or null Portal main null if the portal main call fails, empty string if there is no usable value
authenticatedAt date-time Authentication time (each language’s local time type)
11 SIS school codes string or null SIS See “SIS school codes” below. null if the SIS lookup fails
extra map or null SIS Only with the extra option, otherwise null
rawHtml string or null DHC Only with the raw option
rawJson string or null SIS Only with the raw option. null if SIS failed
  • If the DHC step fails, the call throws and returns no result (AUTHENTICATION_FAILED, DATA_FETCH_FAILED, SESSION_ERROR and others; see Error codes).
  • If the SIS step fails, the call still succeeds and only the SIS fields (contact, English name, user category, school codes) are null.
  • If the portal main step fails, the call still succeeds and only parentUnitName is null.

success, studentId, name, major, grade, status, classicReading, authenticatedAt, rawHtml (only with the raw option)

There are no contact fields.

success, studentId, name, major, grade (always an empty string), status (always an empty string), email, phoneNumber, englishName, userCategory, the SIS school codes, extra (only with the extra option), authenticatedAt, rawJson (only with the raw option)

There are no classic reading fields.

Three portal text values from the DHC “사용자 정보” table and five sub-lists.

Field Type Rule
completedSemesters string 이수 학기 as is (for example 8 학기). Empty string if missing
certifiedSemesters string 인증완료 학기 as is. Empty string if missing
certificationStatus string 인증여부 as is. Free text that can carry a substitution reason. Empty string if missing
List Item fields
certifications (status per area) area, requiredCount, certifiedCount
examRecords (certification exams) semester, area, bookTitle, examDate, score, passStatus
subjectSubstitutions (substitution by course) semester, subjectName, area, bookTitle, completion
contestRecords (contest certification) semester, contestName, area, bookTitle
curriculumRecords (course-linked certification) semester, subjectName, area, bookTitle, completion

Python names are snake_case (completed_semesters, required_count, book_title, …). A list is empty when the table has no rows.

Reading the certification status per area in Java:

SejongDhcAuthResult result = sejongAuthEngine.authenticateWithDHC(studentId, password);
for (ClassicCertification certification : result.getClassicReading().getCertifications()) {
System.out.println(certification.getArea() + " "
+ certification.getCertifiedCount() + "/" + certification.getRequiredCount());
}

The school’s strings as they are. The library carries no code tables or name mapping, and a missing value is an empty string. The SIS datasets are searched in the order dm_UserInfoSch, dm_UserInfoGam, dm_UserInfo and the first non-blank value wins. They are returned by default in the SIS and integrated results.

Field (Python) SIS key Note
departmentCode (department_code) DEPT_CD, else DEPT_NO The two hold the same department code; DEPT_CD is used first
organizationClassificationCode ORGN_CLSF_CD
enrollmentStatusCode STATUS_DIV_CD The school’s raw code; no meaning mapping
userClassificationCode USER_CLSF_CD
userClassificationLargeCode USER_CLSF_L_CD
userClassificationMiddleCode USER_CLSF_M_CD
roleCode / roleName RPSN_ROLE_CD / RPSN_ROLE_CD_NM
menuSystemId / menuSystemName MENU_SYS_ID / MENU_SYS_NM
locale INTG_LOCALE

departmentCode uses the same code system as the department code in Department and term codes.

  • A field of the authentication result is an empty string when the school has no value.
  • Fields that come from SIS or the portal main page are null only when that lookup itself failed. The integrated call still succeeds then.
  • The raw responses (rawHtml, rawJson) and extra are null unless the option is on.
  • All of these are school text, so they can change when the school changes its wording. See API stability.