시간표 API
시간표 테마 스토어, 교수/강의실별 조회, 수강 과목, 교과과정, 시간표 검색
엔드포인트 목록
| 메서드 | 경로 | 설명 |
|---|---|---|
GET | /api/timetable/themes/ | 테마 목록 + 현재 적용 테마 ID |
POST | /api/timetable/themes/ | 새 테마 생성 |
PUT | /api/timetable/themes/<theme_id>/ | 테마 수정 (본인 테마만) |
DELETE | /api/timetable/themes/<theme_id>/ | 테마 삭제 (본인 테마만) |
POST | /api/timetable/themes/apply/ | 테마 적용 / 기본값으로 초기화 |
GET | /api/timetable/search/ | 시간표 검색 |
GET | /api/timetable/syllabus/ | 강의 편람(강의계획서) |
GET | /api/professor/search/ | 교수 검색 |
GET | /api/professor/timetable/report/ | 교수별 시간표 |
GET | /api/classroom/buildings/ | 건물 목록 |
GET | /api/classroom/rooms/ | 강의실 목록 |
GET | /api/classroom/timetable/report/ | 강의실별 시간표 |
GET | /api/classroom/overlap/report/ | 강의실 중복 확인 |
GET | /api/class-list/options/ | 수강 과목 조회 옵션 |
GET | /api/class-list/report/ | 수강 중인 과목 목록 |
GET | /api/course-registration/report/ | 수강신청 확인서 |
GET | /api/closed-course/report/ | 폐강 과목 목록 |
GET | /api/eval/results/ | 수업 평가 결과 조회 |
GET | /api/curriculum/departments/ | 교과과정 학과 목록 |
GET | /api/curriculum/report/ | 교과과정 보고서 |
모든 엔드포인트는 sch_session 쿠키 인증이 필요합니다.
시간표 테마 스토어
시간표 배경색/텍스트색 조합을 학생들이 공유할 수 있는 기능입니다. 테마는 DB에 저장됩니다.
GET /api/timetable/themes/
공개 테마 + 내 비공개 테마 목록을 반환합니다. use_count 내림차순, 최대 80개.
응답 — 200 OK
{
"selected_theme_id": 3,
"themes": [
{
"id": 3,
"name": "파스텔 봄",
"description": "봄 느낌의 부드러운 파스텔 배색",
"colors": ["#FFB3BA", "#FFDFBA", "#FFFFBA", "#BAFFC9", "#BAE1FF"],
"text_colors": ["#333333", "#333333", "#333333", "#333333", "#333333"],
"is_public": true,
"use_count": 128,
"created_at": "2025-03-01T00:00:00+00:00",
"mine": false
}
]
}| 필드 | 타입 | 설명 |
|---|---|---|
selected_theme_id | number | null | 현재 적용 중인 테마 ID, 기본값이면 null |
themes[].id | number | 테마 ID |
themes[].name | string | 테마 이름 (최대 40자) |
themes[].description | string | 설명 (최대 140자) |
themes[].colors | string[] | 과목 배경색 목록 (HEX, 3~16개) |
themes[].text_colors | string[] | 과목 텍스트색 목록 (HEX, colors와 동일 개수) |
themes[].is_public | boolean | 공개 여부 |
themes[].use_count | number | 다른 학생들의 적용 횟수 |
themes[].created_at | string | 생성 시각 (ISO 8601) |
themes[].mine | boolean | 내가 만든 테마인지 여부 |
POST /api/timetable/themes/
새 테마를 생성합니다.
요청 Body
{
"name": "나만의 테마",
"description": "설명 (선택)",
"colors": ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FFEAA7"],
"text_colors": ["#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#333333"],
"is_public": true
}| 필드 | 타입 | 필수 | 제약 |
|---|---|---|---|
name | string | O | 최대 40자, 빈 값 불가 |
description | string | 아니오 | 최대 140자 |
colors | string[] | O | HEX 형식, 3~16개 (#RGB 또는 #RRGGBB) |
text_colors | string[] | 아니오 | colors와 동일 개수, 생략 시 모두 #FFFFFF |
is_public | boolean | 아니오 | 기본값 true |
HEX 색상은 자동으로 대문자 정규화됩니다 (#f00 → #FF0000).
응답 — 201 Created
{
"theme": { /* 생성된 테마 객체 */ }
}에러 응답
| 에러 코드 | HTTP | 설명 |
|---|---|---|
NAME_REQUIRED | 400 | 이름 누락 또는 빈 문자열 |
NAME_TOO_LONG | 400 | 이름 40자 초과 |
DESCRIPTION_TOO_LONG | 400 | 설명 140자 초과 |
INVALID_COLORS | 400 | 색상 배열 형식 오류 또는 3~16개 범위 초과 |
INVALID_TEXT_COLORS | 400 | 텍스트색 형식 오류 또는 colors와 개수 불일치 |
PUT /api/timetable/themes/<theme_id>/
테마 내용을 수정합니다. 본인이 만든 공개 테마만 수정 가능합니다.
에러 응답
| 에러 코드 | HTTP | 설명 |
|---|---|---|
NOT_FOUND | 404 | 테마가 없거나 비공개 |
FORBIDDEN | 403 | 타인의 테마 |
| (유효성 검사 에러) | 400 | POST와 동일 |
DELETE /api/timetable/themes/<theme_id>/
테마를 삭제합니다. 본인이 만든 공개 테마만 삭제 가능합니다.
응답 — 200 OK: {"ok": true}
POST /api/timetable/themes/apply/
테마를 내 시간표에 적용합니다. use_count를 1 증가시킵니다.
요청 Body
{ "theme_id": 3 }theme_id에 null, "", "default"를 전달하면 기본값(테마 없음)으로 초기화됩니다.
응답 — 200 OK
{
"ok": true,
"selected_theme_id": 3,
"changed": true
}| 필드 | 타입 | 설명 |
|---|---|---|
selected_theme_id | number | null | 적용된 테마 ID |
changed | boolean | 이전과 다른 테마로 변경되었는지 여부 |
GET /api/timetable/search/
과목명, 교수명 등 조건으로 시간표를 검색합니다. SCH 서버 실시간 조회.
GET /api/timetable/syllabus/
강의계획서(강의 편람)를 조회합니다. SCH 서버 실시간 조회.
교수별 시간표
GET /api/professor/search/
교수명으로 교수를 검색합니다.
GET /api/professor/timetable/report/
특정 교수의 시간표를 조회합니다.
강의실별 시간표
GET /api/classroom/buildings/
강의실이 있는 건물 목록을 반환합니다.
응답 예시
[
{ "building_cd": "E7", "building_nm": "공학관" },
{ "building_cd": "A1", "building_nm": "인문관" }
]GET /api/classroom/rooms/
건물 내 강의실 목록을 반환합니다.
쿼리 파라미터: building_cd (필수)
GET /api/classroom/timetable/report/
강의실별 시간표를 조회합니다.
GET /api/classroom/overlap/report/
강의실 중복 사용 여부를 확인합니다.
수강 과목
GET /api/class-list/options/
수강 과목 조회를 위한 학기 선택 옵션을 반환합니다. 조회 가능한 연도/학기 목록.
GET /api/class-list/report/
현재 또는 특정 학기의 수강 과목 목록을 반환합니다.
GET /api/course-registration/report/
수강신청 확인서를 반환합니다.
GET /api/closed-course/report/
해당 학기 폐강된 과목 목록을 반환합니다.
GET /api/eval/results/
이전 학기 수업 평가 결과를 조회합니다. 강의 편람에서 참고할 수 있는 평가 결과.
교과과정
GET /api/curriculum/departments/
교과과정을 조회할 수 있는 학과 코드 + 이름 목록을 반환합니다.
GET /api/curriculum/report/
특정 학과의 전체 교과과정을 반환합니다. 학과코드, 학년도 등 쿼리 파라미터로 필터링합니다.