Soonlife DOCS
API 레퍼런스

기타 API

강의평가, 교육만족도, 콰르텟 티칭, 하이플렉스, 국제학생증, 교환학생 패스, 교직이수

엔드포인트 목록

강의평가

메서드경로설명
GET/api/lect-eval/period/현재 강의평가 기간 조회
GET/api/lect-eval/courses/평가 대상 과목 목록
POST/api/lect-eval/questions/과목별 평가 문항 조회
POST/api/lect-eval/submit/강의평가 제출

교육만족도

메서드경로설명
GET/api/edu-satisfaction/status/교육만족도 참여 현황
POST/api/edu-satisfaction/submit/교육만족도 제출

콰르텟 티칭

메서드경로설명
GET/api/quartet/env/운영 환경 정보 (신청 기간 등)
GET/api/quartet/subjects/수강 가능 과목 목록
GET/api/quartet/quarters/쿼터(분기) 목록
GET/api/quartet/cells/수강 가능 셀 목록
POST/api/quartet/apply/콰르텟 신청
POST/api/quartet/cancel/콰르텟 취소
GET/api/quartet/eval/평가 문항 조회
POST/api/quartet/eval/save/평가 저장
GET/api/quartet/grade/성적 조회

기타

메서드경로설명
GET/api/hiflex/status/하이플렉스 신청 기간 및 현황
POST/api/hiflex/save/하이플렉스 수강 방식 저장
GET/api/isic/student-info/국제학생증 발급용 학생 정보
GET/api/exchg-pass/eng/영어권 교환학생 패스
GET/api/exchg-pass/chi/중국어권 교환학생 패스
GET/api/tie-pass/prog/교직 이수 프로그램
GET/api/tie-pass/lang/교직 이수 언어

모든 엔드포인트는 sch_session 쿠키 인증이 필요합니다.


강의평가

강의평가(Lecture Evaluation)는 매 학기 수강한 과목에 대해 학생이 직접 평가를 작성하는 시스템입니다. 기말평가(eval_div = "40")와 중간평가(eval_div = "4040") 두 종류가 있으며, 서버가 현재 진행 중인 유형을 자동으로 감지합니다.

일반적인 흐름은 기간 조회 → 과목 목록 조회 → 문항 조회 → 제출 순서입니다.

GET /api/lect-eval/period/

현재 진행 중인 강의평가 기간 목록을 반환합니다. 쿼리 파라미터는 없습니다.

응답 — 200 OK

{
  "periods": [
    {
      "eval_div":  "40",
      "eval_nm":   "기말강의평가",
      "start_dt":  "2025-06-01",
      "end_dt":    "2025-06-14",
      "is_open":   true
    },
    {
      "eval_div":  "4040",
      "eval_nm":   "중간강의평가",
      "start_dt":  "2025-04-14",
      "end_dt":    "2025-04-20",
      "is_open":   false
    }
  ]
}
필드타입설명
periods[].eval_divstring평가 구분 코드 — "40" 기말평가 · "4040" 중간평가
periods[].eval_nmstring평가명
periods[].start_dtstring평가 시작일
periods[].end_dtstring평가 종료일
periods[].is_openboolean현재 평가 진행 중 여부

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

GET /api/lect-eval/courses/

해당 학기의 강의평가 대상 과목 목록과 각 과목의 평가 완료 여부를 반환합니다.

쿼리 파라미터

파라미터타입필수설명
yearstringO학년도 (예: "2025")
semesterstringO학기 코드 — "11" 1학기 · "21" 2학기 · "12" 하계 · "22" 동계
eval_divstringO평가 구분 — "40" 기말평가 · "4040" 중간평가

응답 — 200 OK

{
  "courses": [
    {
      "cors_no":      "12345",
      "cors_nm":      "데이터베이스",
      "emp_no":       "P001234",
      "emp_nm":       "홍길동",
      "cls_div":      "01",
      "lect_eval_tp": "01",
      "participated": false
    },
    {
      "cors_no":      "67890",
      "cors_nm":      "알고리즘",
      "emp_no":       "P005678",
      "emp_nm":       "김철수",
      "cls_div":      "01",
      "lect_eval_tp": "01",
      "participated": true
    }
  ]
}
필드타입설명
courses[].cors_nostring과목번호 — questions 요청 시 필수로 사용
courses[].cors_nmstring과목명
courses[].emp_nostring교원번호 — questions 요청 시 전달
courses[].emp_nmstring교원명
courses[].cls_divstring분반 코드 — questions 요청 시 전달
courses[].lect_eval_tpstring강의평가 유형 코드 — questions 요청 시 전달
courses[].participatedbooleantrue이면 이미 평가가 제출된 과목

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
MISSING_FIELDS400year, semester, eval_div 중 하나 이상 누락 또는 유효하지 않은 값
SCH_UNAVAILABLE503SCH 서버 응답 실패

POST /api/lect-eval/questions/

특정 과목의 강의평가 문항 목록, 선택지 맵, 항목별 레이블을 조회합니다.

문항 조회는 GET이 아닌 POST 메서드를 사용합니다. courses 응답에서 받은 cors_no, emp_no, cls_div, lect_eval_tp 값을 그대로 요청 본문에 포함하세요.

요청 본문

필드타입필수설명
yystringO학년도 (예: "2025")
smtstringO학기 코드 ("11" · "21" · "12" · "22")
cors_nostringO과목번호 — courses 응답의 cors_no
emp_nostringX교원번호 — courses 응답의 emp_no
cls_divstringX분반 코드 — courses 응답의 cls_div
lect_eval_tpstringX강의평가 유형 — courses 응답의 lect_eval_tp
eval_divstringX평가 구분 — "40" 기말평가 · "4040" 중간평가
{
  "yy":           "2025",
  "smt":          "11",
  "cors_no":      "12345",
  "emp_no":       "P001234",
  "cls_div":      "01",
  "lect_eval_tp": "01",
  "eval_div":     "40"
}

응답 — 200 OK

{
  "cols": [
    "ANS_TP_CD", "QUESTION_NO", "QUESTION_NM", "CHOICE_TP_CD",
    "ANS_VAL",
    "SUB_ANS_1_YN", "SUB_ANS_2_YN", "SUB_ANS_3_YN",
    "SUB_ANS_4_YN", "SUB_ANS_5_YN", "SUB_ANS_6_YN",
    "SUB_ANS_7_YN", "SUB_ANS_8_YN", "SUB_ANS_9_YN"
  ],
  "questions": [
    {
      "ANS_TP_CD":    "U0670001",
      "QUESTION_NO":  "1",
      "QUESTION_NM":  "수업에 대해 전반적으로 만족합니다.",
      "CHOICE_TP_CD": "LIKERT5",
      "ANS_VAL":      "",
      "SUB_ANS_1_YN": "N", "SUB_ANS_2_YN": "N", "SUB_ANS_3_YN": "N",
      "SUB_ANS_4_YN": "N", "SUB_ANS_5_YN": "N", "SUB_ANS_6_YN": "N",
      "SUB_ANS_7_YN": "N", "SUB_ANS_8_YN": "N", "SUB_ANS_9_YN": "N"
    },
    {
      "ANS_TP_CD":    "U0670002",
      "QUESTION_NO":  "10",
      "QUESTION_NM":  "수업에 대한 의견을 자유롭게 작성해 주세요.",
      "CHOICE_TP_CD": "",
      "ANS_VAL":      "",
      "SUB_ANS_1_YN": "N", "SUB_ANS_2_YN": "N", "SUB_ANS_3_YN": "N",
      "SUB_ANS_4_YN": "N", "SUB_ANS_5_YN": "N", "SUB_ANS_6_YN": "N",
      "SUB_ANS_7_YN": "N", "SUB_ANS_8_YN": "N", "SUB_ANS_9_YN": "N"
    },
    {
      "ANS_TP_CD":    "U0670003",
      "QUESTION_NO":  "11",
      "QUESTION_NM":  "개선이 필요한 항목을 선택해 주세요.",
      "CHOICE_TP_CD": "",
      "ANS_VAL":      "",
      "SUB_ANS_1_YN": "N", "SUB_ANS_2_YN": "N", "SUB_ANS_3_YN": "N",
      "SUB_ANS_4_YN": "N", "SUB_ANS_5_YN": "N", "SUB_ANS_6_YN": "N",
      "SUB_ANS_7_YN": "N", "SUB_ANS_8_YN": "N", "SUB_ANS_9_YN": "N"
    }
  ],
  "choices_map": {
    "LIKERT5": [
      { "cd": "1", "nm": "매우 그렇지 않다" },
      { "cd": "2", "nm": "그렇지 않다" },
      { "cd": "3", "nm": "보통이다" },
      { "cd": "4", "nm": "그렇다" },
      { "cd": "5", "nm": "매우 그렇다" }
    ]
  },
  "itemwise_labels": {
    "1": "수업 방법",
    "2": "수업 내용",
    "3": "수업 속도·난이도",
    "4": "수업 자료",
    "5": "시험·평가",
    "6": "과제",
    "7": "출석 관리",
    "8": "기타",
    "9": "개선사항 없음"
  }
}

응답 필드 상세

필드타입설명
colsstring[]문항 객체의 컬럼 이름 목록 — submit 요청 시 그대로 전달
questionsobject[]문항 목록 — 키는 cols의 각 컬럼명
questions[].ANS_TP_CDstring답변 유형 코드 (아래 표 참조)
questions[].QUESTION_NOstring문항 번호
questions[].QUESTION_NMstring문항 내용
questions[].CHOICE_TP_CDstring선택지 유형 코드 — choices_map의 키와 대응
questions[].ANS_VALstring답변값 (초기값 빈 문자열)
questions[].SUB_ANS_N_YNstring항목별 선택 여부 ("Y" / "N") — N은 1~9
choices_mapobject선택지 코드 → 선택지 배열 맵
choices_map[key][]..cdstring선택지 값 코드
choices_map[key][]..nmstring선택지 표시 텍스트
itemwise_labelsobject항목 번호("1"~"9") → 한국어 레이블 맵

ANS_TP_CD 답변 유형

코드유형답변 작성 방법
U0670001객관식 (리커트 척도)ANS_VAL에 선택지 코드("1"~"5") 입력
U0670002주관식 (자유 서술)ANS_VAL에 서술 텍스트 입력
U0670003항목별 주관식SUB_ANS_1_YN~SUB_ANS_8_YN에 해당 항목 "Y" 입력, SUB_ANS_9_YN은 개선사항 없음

itemwise_labels 항목 번호 대응표

번호레이블대응 필드
"1"수업 방법SUB_ANS_1_YN
"2"수업 내용SUB_ANS_2_YN
"3"수업 속도·난이도SUB_ANS_3_YN
"4"수업 자료SUB_ANS_4_YN
"5"시험·평가SUB_ANS_5_YN
"6"과제SUB_ANS_6_YN
"7"출석 관리SUB_ANS_7_YN
"8"기타SUB_ANS_8_YN
"9"개선사항 없음SUB_ANS_9_YN

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
MISSING_FIELDS400cors_no 등 필수 필드 누락
SCH_UNAVAILABLE503SCH 서버 응답 실패

POST /api/lect-eval/submit/

작성된 강의평가 답변을 제출합니다.

colsrowsquestions 응답에서 받은 값을 그대로 사용하고, 답변값만 채워서 전송합니다. cols 배열은 변경하지 마세요.

participatedtrue인 과목(이미 제출 완료)에 대해 재제출을 시도하면 SCH 서버에서 오류가 반환될 수 있습니다.

요청 본문

필드타입필수설명
colsstring[]Oquestions 응답의 cols 그대로 전달
rowsobject[]Oquestions 응답의 questions 배열에 답변을 채운 값
{
  "cols": [
    "ANS_TP_CD", "QUESTION_NO", "QUESTION_NM", "CHOICE_TP_CD",
    "ANS_VAL",
    "SUB_ANS_1_YN", "SUB_ANS_2_YN", "SUB_ANS_3_YN",
    "SUB_ANS_4_YN", "SUB_ANS_5_YN", "SUB_ANS_6_YN",
    "SUB_ANS_7_YN", "SUB_ANS_8_YN", "SUB_ANS_9_YN"
  ],
  "rows": [
    {
      "ANS_TP_CD":    "U0670001",
      "QUESTION_NO":  "1",
      "QUESTION_NM":  "수업에 대해 전반적으로 만족합니다.",
      "CHOICE_TP_CD": "LIKERT5",
      "ANS_VAL":      "5",
      "SUB_ANS_1_YN": "N", "SUB_ANS_2_YN": "N", "SUB_ANS_3_YN": "N",
      "SUB_ANS_4_YN": "N", "SUB_ANS_5_YN": "N", "SUB_ANS_6_YN": "N",
      "SUB_ANS_7_YN": "N", "SUB_ANS_8_YN": "N", "SUB_ANS_9_YN": "N"
    },
    {
      "ANS_TP_CD":    "U0670002",
      "QUESTION_NO":  "10",
      "QUESTION_NM":  "수업에 대한 의견을 자유롭게 작성해 주세요.",
      "CHOICE_TP_CD": "",
      "ANS_VAL":      "강의 내용이 체계적이고 이해하기 쉬웠습니다.",
      "SUB_ANS_1_YN": "N", "SUB_ANS_2_YN": "N", "SUB_ANS_3_YN": "N",
      "SUB_ANS_4_YN": "N", "SUB_ANS_5_YN": "N", "SUB_ANS_6_YN": "N",
      "SUB_ANS_7_YN": "N", "SUB_ANS_8_YN": "N", "SUB_ANS_9_YN": "N"
    },
    {
      "ANS_TP_CD":    "U0670003",
      "QUESTION_NO":  "11",
      "QUESTION_NM":  "개선이 필요한 항목을 선택해 주세요.",
      "CHOICE_TP_CD": "",
      "ANS_VAL":      "",
      "SUB_ANS_1_YN": "N", "SUB_ANS_2_YN": "N", "SUB_ANS_3_YN": "N",
      "SUB_ANS_4_YN": "N", "SUB_ANS_5_YN": "N", "SUB_ANS_6_YN": "N",
      "SUB_ANS_7_YN": "N", "SUB_ANS_8_YN": "N", "SUB_ANS_9_YN": "Y"
    }
  ]
}

위 예시에서:

  • 1번 문항(U0670001): 리커트 5점 척도에서 ANS_VAL = "5" (매우 그렇다) 선택
  • 10번 문항(U0670002): 자유 서술 텍스트를 ANS_VAL에 입력
  • 11번 문항(U0670003): 개선사항이 없으므로 SUB_ANS_9_YN = "Y", 나머지 항목은 "N"

응답 — 200 OK

{
  "success": true
}

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
MISSING_FIELDS400cols 또는 rows 누락
SAVE_FAILED500SCH 서버 저장 실패
SCH_UNAVAILABLE503SCH 서버 응답 실패

교육만족도

교육만족도 조사는 학교 전반의 교육 환경에 대한 학생 만족도를 수집하는 설문 시스템입니다. 강의평가와 별도로 운영되며, 응답 데이터는 SCH 서버에서 직접 전달됩니다.

GET /api/edu-satisfaction/status/

현재 교육만족도 조사 참여 현황을 반환합니다.

응답 — 200 OK

SCH 서버의 응답을 그대로 전달합니다. 참여 기간, 조사 목록, 참여 완료 여부 등이 포함됩니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

POST /api/edu-satisfaction/submit/

교육만족도 설문 답변을 제출합니다.

요청 본문

SCH 서버 형식에 맞춘 답변 데이터를 전달합니다. 구체적인 필드 구조는 status 응답에서 확인된 설문 항목을 기준으로 구성하세요.

응답 — 200 OK

{
  "ok": true
}

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

콰르텟 티칭

콰르텟(QUARTET)은 순천향대학교의 단기 집중 수업 시스템입니다. 한 학기를 4개의 쿼터(Quarter)로 나누어, 각 쿼터 내에 집중적으로 진행되는 단기 과목을 신청하고 이수할 수 있습니다. 일반 학기 수업과 별도로 운영되며, 셀(Cell) 단위로 수강 인원이 배정됩니다.

일반적인 흐름은 운영환경 확인 → 과목 목록 조회 → 쿼터·셀 조회 → 신청 순서입니다.

콰르텟 엔드포인트의 응답 데이터는 SCH 서버에서 직접 전달됩니다. 필드 구조는 SCH 서버 스펙에 따릅니다.

GET /api/quartet/env/

현재 콰르텟 운영 환경 정보를 반환합니다. 수강 신청 가능 기간, 현재 학기 정보 등이 포함됩니다.

응답 — 200 OK

SCH 서버의 운영 환경 데이터를 그대로 전달합니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

GET /api/quartet/subjects/

현재 신청 가능한 콰르텟 과목 목록을 반환합니다.

응답 — 200 OK

SCH 서버의 과목 목록 데이터를 그대로 전달합니다. 과목명, 담당 교수, 학점, 대상 학과 등의 정보가 포함됩니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

GET /api/quartet/quarters/

수강 가능한 쿼터(분기) 목록을 반환합니다.

응답 — 200 OK

SCH 서버의 쿼터 목록을 그대로 전달합니다. 쿼터 번호, 운영 기간, 상태 등이 포함됩니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

GET /api/quartet/cells/

특정 과목·쿼터에 수강 가능한 셀(분반) 목록을 반환합니다.

쿼리 파라미터

과목 및 쿼터를 식별하는 파라미터를 전달합니다. 구체적인 파라미터명은 subjects·quarters 응답에서 확인된 식별자 필드를 기준으로 사용하세요.

응답 — 200 OK

SCH 서버의 셀 목록을 그대로 전달합니다. 셀 번호, 정원, 현재 신청 인원, 운영 시간 등이 포함됩니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

POST /api/quartet/apply/

콰르텟 과목을 신청합니다.

요청 본문

신청할 과목·쿼터·셀 식별자를 전달합니다.

응답 — 200 OK

{
  "ok": true
}

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패 또는 신청 처리 실패

POST /api/quartet/cancel/

콰르텟 신청을 취소합니다.

요청 본문

취소할 신청 식별자를 전달합니다.

응답 — 200 OK

{
  "ok": true
}

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패 또는 취소 처리 실패

GET /api/quartet/eval/

콰르텟 과목 이수 후 진행하는 평가 문항 목록을 반환합니다.

응답 — 200 OK

SCH 서버의 평가 문항 데이터를 그대로 전달합니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

POST /api/quartet/eval/save/

콰르텟 평가 답변을 저장합니다.

요청 본문

eval 응답에서 받은 문항 구조에 답변을 채워서 전달합니다.

응답 — 200 OK

SCH 서버의 저장 결과를 반환합니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패 또는 저장 실패

GET /api/quartet/grade/

콰르텟 이수 과목의 성적을 조회합니다.

응답 — 200 OK

SCH 서버의 성적 데이터를 그대로 전달합니다. 과목명, 이수 쿼터, 학점, 평점 등이 포함됩니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

하이플렉스

하이플렉스(HiFlex)는 동일 강의를 대면 또는 비대면 중 선택하여 수강하는 방식입니다. 신청 기간 내에 과목별로 수강 방식을 선택하거나 변경할 수 있습니다.

GET /api/hiflex/status/

하이플렉스 신청 기간 및 현재 수강 방식 선택 현황을 반환합니다.

응답 — 200 OK

SCH 서버의 하이플렉스 현황 데이터를 그대로 전달합니다. 신청 기간, 과목별 현재 선택 상태(대면/비대면) 등이 포함됩니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

POST /api/hiflex/save/

과목별 수강 방식(대면/비대면) 선택을 저장합니다.

요청 본문

status 응답에서 확인된 과목 식별자와 선택한 수강 방식을 함께 전달합니다.

응답 — 200 OK

SCH 서버의 저장 결과를 반환합니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패 또는 저장 실패

국제학생증

국제학생증(ISIC, International Student Identity Card) 발급 신청에 필요한 학생 정보를 조회합니다.

GET /api/isic/student-info/

ISIC 발급에 필요한 학생 기본 정보를 반환합니다.

응답 — 200 OK

SCH 서버의 학생 정보를 그대로 전달합니다. 성명, 생년월일, 학번, 소속 학과, 재학 상태 등이 포함됩니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

교환학생 패스

해외 교환학생 파견 관련 정보를 조회합니다. 영어권과 중국어권 파견 경로를 별도 엔드포인트로 제공합니다.

GET /api/exchg-pass/eng/

영어권 교환학생 파견 관련 정보를 반환합니다.

응답 — 200 OK

SCH 서버의 영어권 파견 프로그램 데이터를 그대로 전달합니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

GET /api/exchg-pass/chi/

중국어권 교환학생 파견 관련 정보를 반환합니다.

응답 — 200 OK

SCH 서버의 중국어권 파견 프로그램 데이터를 그대로 전달합니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

교직 이수 패스

교직 이수(敎職 履修) 관련 정보를 조회합니다. 교원 자격증 취득을 위한 프로그램 이수 현황과 언어 요건 정보를 제공합니다.

GET /api/tie-pass/prog/

교직 이수 프로그램 이수 현황을 반환합니다.

응답 — 200 OK

SCH 서버의 교직 이수 프로그램 데이터를 그대로 전달합니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

GET /api/tie-pass/lang/

교직 이수 언어 요건 관련 정보를 반환합니다.

응답 — 200 OK

SCH 서버의 교직 이수 언어 데이터를 그대로 전달합니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503SCH 서버 응답 실패

On this page