Soonlife DOCS
API 레퍼런스

기타 API

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

엔드포인트 목록

강의평가

메서드경로설명
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/교직 이수 언어

SRC 프로그램실

메서드경로설명
GET/api/src/rooms/프로그램실·교시 목록 + 내 학과 (페이지 초기 데이터)
GET/api/src/status/월별 신청현황 + 시험기간 + 하루 한도
POST/api/src/apply/예약 신청 (일자·교시 여러 건)
POST/api/src/cancel/예약 취소
GET/api/src/report/프로그램실 현황 리포트 URL

모든 엔드포인트는 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/

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

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

participated가 true인 과목(이미 제출 완료)에 대해 재제출을 시도하면 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 서버 응답 실패

SRC 프로그램실

SRC(생활관) 프로그램실을 일자·교시 단위로 예약합니다. 일반적인 흐름은 초기 데이터 조회 → 월별 현황 조회 → 신청 / 취소 순서입니다.

하루에 신청할 수 있는 CLASS 수에 제한이 있습니다. 시험기간에는 2개, 평상시에는 3개입니다. 서버가 기존 신청 건과 이번 요청의 누적을 함께 세어 검증하므로, 클라이언트에서 막지 않아도 한도를 넘는 건은 거부됩니다.

GET /api/src/rooms/

프로그램실 목록, 교시 목록, 내 학과 정보를 함께 반환합니다. 페이지 진입 시 1회 호출합니다.

응답 — 200 OK

{
  "rooms": [
    { "room_no": "01", "room_name": "프로그램실 1" }
  ],
  "times": [],
  "sust": { "cd": "CS", "nm": "컴퓨터소프트웨어공학과" }
}
필드타입설명
roomsobject[]프로그램실 목록
timesobject[]교시 목록 — 칼럼 구성이 확실치 않아 SCH 원본 행을 그대로 전달하고 프론트엔드가 매핑합니다
sustobject신청에 쓰이는 학과 코드·이름. 세션의 dept_cd로 서버가 결정하며 클라이언트가 바꿀 수 없습니다

학과 목록은 사실상 정적이라 서버가 dept_cd → 학과명 매핑을 메모리에 캐시합니다.

에러 응답

에러 코드HTTP설명
UNAUTHORIZED401세션 없음 또는 만료
SCH_UNAVAILABLE503프로그램실 목록 조회 실패

GET /api/src/status/

쿼리 파라미터

파라미터타입필수설명
yymmstringO조회 연월 (YYYYMM, 6자리)
room_nostringO프로그램실 번호

응답 — 200 OK

{
  "applications": [
    {
      "days": "15",
      "times": "03",
      "state": "",
      "sust": "CS",
      "sust_nm": "컴퓨터소프트웨어공학과",
      "user_no": "U000001234",
      "user_nm": "홍길동",
      "team": "",
      "remark": "스터디",
      "reg_dt_tm": "2026-09-01 10:20",
      "mine": true
    }
  ],
  "exam_periods": [
    { "st": "20261020", "ed": "20261026", "label": "중간시험" }
  ],
  "max_class": { "exam": 2, "normal": 3 }
}
필드타입설명
applicationsobject[]해당 프로그램실의 전체 신청 내역
applications[].mineboolean본인 신청 건인지 (REG_USER_NO 일치 여부로 서버가 판정)
exam_periodsobject[]시험기간 구간 — 프론트엔드의 선택 제한·안내용. 조회 실패 시 빈 배열
max_classobject하루 최대 CLASS 수

시험기간과 기준 학기는 학기 내내 바뀌지 않아 서버가 캐시합니다.

에러 응답

에러 코드HTTP설명
MISSING_FIELDS400yymm이 6자리가 아니거나 room_no 누락
SCH_UNAVAILABLE503신청현황 조회 실패

POST /api/src/apply/

요청 본문

필드타입필수설명
yymmstringO연월 (YYYYMM)
room_nostringO프로그램실 번호
remarkstringO사용 사유
slotsobject[]O[{ days, times }] — 1~20건
{
  "yymm": "202609",
  "room_no": "01",
  "remark": "캡스톤 회의",
  "slots": [
    { "days": "15", "times": "03" },
    { "days": "15", "times": "04" }
  ]
}

학과(SUST)는 세션 기반으로 서버가 자동 결정합니다 — 요청으로 바꿀 수 없습니다.

응답 — 200 OK

건별 결과와, 실제 반영 여부를 확인하기 위해 재조회한 현황을 함께 반환합니다.

{
  "results": [
    { "days": "15", "times": "03", "ok": true, "code": "", "message": "" },
    {
      "days": "15",
      "times": "05",
      "ok": false,
      "code": "LIMIT",
      "message": "15일은 하루 최대 3 CLASS까지 신청할 수 있어요 (평상시)."
    }
  ],
  "applications": []
}
results[].code의미
LIMIT하루 CLASS 한도 초과
INVALID일자 형식 오류
SCH_UNAVAILABLE해당 건의 SCH 요청 실패

applications는 재조회 결과이며, 재조회까지 실패하면 null입니다.

에러 응답

에러 코드HTTP설명
MISSING_FIELDS400yymm/room_no 오류, 사유 누락, slots가 비었거나 20건 초과

POST /api/src/cancel/

요청 본문

필드타입필수설명
yymmstringO연월 (YYYYMM)
room_nostringO프로그램실 번호
itemsobject[]O[{ days, times }] — 1~20건

응답 — 200 OK

/api/src/apply/와 동일한 { results, applications } 형태입니다. results[].code가 NOT_FOUND면 본인 신청 건을 찾지 못한 경우입니다.

취소는 서버가 신청 내역을 다시 조회해 본인(REG_USER_NO 일치) 원본 행을 변형 없이 그대로 되돌려 보냅니다. 값을 다듬어 보내면 SCH 저장 핸들러가 삭제 대상 레코드를 매칭하지 못해 삭제되지 않습니다.

에러 응답

에러 코드HTTP설명
MISSING_FIELDS400yymm/room_no 오류, items가 비었거나 20건 초과
SCH_UNAVAILABLE503신청내역 조회 실패

GET /api/src/report/

프로그램실 현황 OZ 리포트 URL을 생성합니다. 프론트엔드가 window.open()으로 엽니다.

응답 — 200 OK

{ "url": "https://report.sch.ac.kr/oz7/r.jsp?..." }

에러 응답

에러 코드HTTP설명
REPORT_FAILED500리포트 파라미터 생성 실패
SCH_UNAVAILABLE503리포트 URL 생성 실패

On this page