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.
Response data structure
Section titled “Response data structure”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}Integrated result fields
Section titled “Integrated result fields”| 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 |
When it fails
Section titled “When it fails”- If the DHC step fails, the call throws and returns no result (
AUTHENTICATION_FAILED,DATA_FETCH_FAILED,SESSION_ERRORand 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
parentUnitNameisnull.
DHC result
Section titled “DHC result”success, studentId, name, major, grade, status, classicReading, authenticatedAt, rawHtml (only with the raw option)
There are no contact fields.
SIS result
Section titled “SIS result”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.
Classic reading (classicReading)
Section titled “Classic reading (classicReading)”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());}SIS school codes
Section titled “SIS school codes”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.
null versus empty string
Section titled “null versus empty string”- 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) andextraare 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.
