Soonlife DOCS
API 레퍼런스

시간표 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_idnumber | null현재 적용 중인 테마 ID, 기본값이면 null
themes[].idnumber테마 ID
themes[].namestring테마 이름 (최대 40자)
themes[].descriptionstring설명 (최대 140자)
themes[].colorsstring[]과목 배경색 목록 (HEX, 3~16개)
themes[].text_colorsstring[]과목 텍스트색 목록 (HEX, colors와 동일 개수)
themes[].is_publicboolean공개 여부
themes[].use_countnumber다른 학생들의 적용 횟수
themes[].created_atstring생성 시각 (ISO 8601)
themes[].mineboolean내가 만든 테마인지 여부

POST /api/timetable/themes/

새 테마를 생성합니다.

요청 Body

{
  "name":        "나만의 테마",
  "description": "설명 (선택)",
  "colors":      ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FFEAA7"],
  "text_colors": ["#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#333333"],
  "is_public":   true
}
필드타입필수제약
namestringO최대 40자, 빈 값 불가
descriptionstring아니오최대 140자
colorsstring[]OHEX 형식, 3~16개 (#RGB 또는 #RRGGBB)
text_colorsstring[]아니오colors와 동일 개수, 생략 시 모두 #FFFFFF
is_publicboolean아니오기본값 true

HEX 색상은 자동으로 대문자 정규화됩니다 (#f00#FF0000).

응답 — 201 Created

{
  "theme": { /* 생성된 테마 객체 */ }
}

에러 응답

에러 코드HTTP설명
NAME_REQUIRED400이름 누락 또는 빈 문자열
NAME_TOO_LONG400이름 40자 초과
DESCRIPTION_TOO_LONG400설명 140자 초과
INVALID_COLORS400색상 배열 형식 오류 또는 3~16개 범위 초과
INVALID_TEXT_COLORS400텍스트색 형식 오류 또는 colors와 개수 불일치

PUT /api/timetable/themes/<theme_id>/

테마 내용을 수정합니다. 본인이 만든 공개 테마만 수정 가능합니다.

에러 응답

에러 코드HTTP설명
NOT_FOUND404테마가 없거나 비공개
FORBIDDEN403타인의 테마
(유효성 검사 에러)400POST와 동일

DELETE /api/timetable/themes/<theme_id>/

테마를 삭제합니다. 본인이 만든 공개 테마만 삭제 가능합니다.

응답 — 200 OK: {"ok": true}

POST /api/timetable/themes/apply/

테마를 내 시간표에 적용합니다. use_count를 1 증가시킵니다.

요청 Body

{ "theme_id": 3 }

theme_idnull, "", "default"를 전달하면 기본값(테마 없음)으로 초기화됩니다.

응답 — 200 OK

{
  "ok":                true,
  "selected_theme_id": 3,
  "changed":           true
}
필드타입설명
selected_theme_idnumber | null적용된 테마 ID
changedboolean이전과 다른 테마로 변경되었는지 여부

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/

특정 학과의 전체 교과과정을 반환합니다. 학과코드, 학년도 등 쿼리 파라미터로 필터링합니다.

On this page