Skip to content

시간표 API

홍유석(YU SEOK HONG) edited this page Jun 27, 2022 · 29 revisions

시간표 생성

REQUEST

  • request url
POST /api/v1/timetables
  • request body
{
  "name": "시간표1",
  "semester": "SECOND",
  "year": 2022,
}

semester: 학기(FIRST, SECOND, SUMMER, WINTER)

RESPONSE

SUCCESS 201
{
  "message": "시간표 생성 완료"
}

시간표 목록 조회

REQUEST

  • request url
GET /api/v1/timetables?year={year}&semester={semester}

year: 연도
semester: 학기(FIRST, SECOND, SUMMER, WINNER)

RESPONSE

SUCCESS 200
{
  "message": "시간표 목록 조회 완료",
  "data": {
      "timetables": [
        {
            "timetableId": "11",
            "name": "시간표1"
        },
        ...
      ]
  }
}

시간표 조회

REQUEST

  • request url
GET /api/v1/timetables/{timeTableId}

RESPONSE

{
  "message": "시간표 조회 완료",
  "data": {
      "timeTableId": "11",
      "name": "시간표1",
      "year": 2022,
      "semester": "SECOND",
      "lectures": [
         {
           "lectureId":"22",
           "name":"객체지향프로그래밍2",
           "professor": "조세형",
           "classRoom": "Y5411",
           "lectureDetails": [
             {
               "day": "MON"
               "startTime": "09:00",
               "endTime": "10:50"
             },
             {
               "day": "WED"
               "startTime": "09:00",
               "endTime": "09:50"
             }
           ]
        },
        {
          "lectureId":"22",
          "name":"프로젝트 회의",
          "lectureDetails": [
            {
              "day": "TUE"
              "startTime": "15:00",
              "endTime": "16:50"
            },
            {
              "day": "THU"
              "startTime": "15:00",
              "endTime": "15:50"
            }
          ]
        },
        ...
      ]
  }
}

day: MON, TUE, WED, THU, FRI, SAT, SUN

시간표 이름 수정

REQUEST

RESPONSE

시간표 삭제

REQUEST

  • request url
DELETE /api/v1/timetables/{timeTableId}

RESPONSE

  • 성공
SUCCESS 200
{
  "message": "시간표 삭제 완료"
}
  • 실패
    • 삭제를 요청한 시간표가 존재하지 않은 경우
{
  "errorCode": "",
  "message":""
}

official 강의 조회

REQUEST

  • request url
GET /api/v1/lectures/officials?page={page}&size={size}year={year}&semester={semester}&sort={sort}&grade={grade1}&lecture-type={type1}&credit={credit1}&time={time1}&search={search}

year

  • 필수값
  • 연도

semester

  • 필수값
  • 학기

sort

  • 정렬 기준
  • NAME, CODE

grade

  • FRESHMAN, SOPHOMORE, JUNIOR, SENIOR, ETC
  • 배열로 전달(택1)
    • grade=FRESHMAN, SOPHOMORE
    • grade=FRESHMAN&grade=SOPHOMORE

lecture-type

  • MAJOR, ELECTIVE
  • 배열로 전달(택1)
    • lecture-type=MAJOR, ELECTIVE
    • grade=MAJOR&grade=ELECTIVE

credit

  • 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4
  • 배열로 전달(택1)
    • credit=0.5, 1
    • credit=0.5&credit=1

time

  • 요일 시작시간-끝시간
    • ex) MON 12-13
  • 배열로 전달(택1)
    • time=MON 12-13, TUE 12-13
    • time=MON 12-13&time=TUE 12-13

search

  • 검색타입-검색어
    • ex name-객체지향프로그래밍2
    • 검색타입
      • name: 과목명
      • professor: 교수명
      • code: 과목코드
      • classroom: 장소

RESPONSE

SUCCESS 200
{
  "message": "강의 목록 조회 완료",
  "data": {
      "content": [
        {
            "lectureId": "45",
            "name": "고급 객체지향 프로그래밍",
            "professor": "장희정",
            "classroom": "Y5437",
            "grade": "SOPHOMORE",
            "credit": 3.0,
            "code": "0201",
            "lectureType": "MAJOR",
            "lectureDetails": [
              {
                 "day": "MON",
                 "startTime": "10:00",
                 "endTime": "10:50"
              },
              {
                 "day": "WED",
                 "startTime": "10:00",
                 "endTime": "11:50"
              }
            ]
        },
        ...
      ],
      "pageable": {
        "sort": {
            "empty": true,
            "sorted": false,
            "unsorted": true
          },
          "offset": 0,
          "pageNumber": 0,
          "pageSize": 5,
          "paged": true,
          "unpaged": false
      },
      "totalPages": 20,
      "totalElements": 100,
      "last": false,
      "size": 5,
      "number": 0,
      "sort": {
          "empty": true,
          "sorted": false,
          "unsorted": true
      },
      "numberOfElements": 5,
      "first": false,
      "empty": false
  }
}

official 강의 시간표에 추가

REQUEST

  • request url
POST /api/v1/timetables/{timeTableId}/enrollments
  • request body
{
  "lectureId": "22"
}

RESPONSE

  • 성공
{
  "message": "official 강의 시간표에 추가 완료"
}
  • 실패
    • 잘 못된 강의 아이디인 경우
    • 시간이 중첩되어 추가할 수 없는 경우
{
  "errorCode": "",
  "message": ""
}

custom 강의 시간표에 추가

REQUEST

  • request url
POST /api/v1/timetables/{timeTableId}/enrollments/custom-lectures
  • request body
{
  "name": "팀플 회의",
  "professor": "조세형"
  "classRoom": "Y5411",
  "lectureDetails": [
       {
         "day": "MON",
         "startTime": "11:00",
         "endTime": "11:50"
       },
       {
         "day": "WED",
         "startTime": "11:00",
         "endTime": "11:50"
       }
  ]
}

RESPONSE

  • 성공
{
  "message": "custom 강의 시간표에 추가 완료"
}
  • 실패
    • 다른 강의와 시간이 겹치는 경우
{
  "errorCode": "",
  "message": ""
}

시간표에 추가된 custom 강의 수정

REQUEST

  • request url
PUT /api/v1/timetables/{timeTableId}/custom-lectures/{lectureId}
  • request body
{
  "name": "팀플 회의",
  "professor": "조세형",
  "classRoom": "Y5411",
  "lectureDetails": [
       {
         "lectureDetailId": "44",
         "day": "MON",
         "startTime": "11:00",
         "endTime": "11:50"
       },
       {
         "lectureDetailId": "45",
         "day": "WED",
         "startTime": "11:00",
         "endTime": "11:50"
       }
  ]
}

RESPONSE

  • 성공
SUCCESS 200
{
  "message": "시간표에 추가된 custom 강의 수정 완료"
}
  • 실패
    • 시간이 겹치는 경우
{
  "errorCode": "",
  "message": ""
}

시간표에서 강의 삭제

REQUEST

  • request url
DELETE /api/v1/timetables/{timeTableId}/enrollments/{lectureId}

RESPONSE

{
  "message": "시간표에서 강의 삭제 완료"
}

official 강의 관리

일반 사용자가 사용할 수 없는 API

official 강의 추가

REQUEST

  • request url
POST /api/v1/lectures/officials
  • request body
{
  "lectures": [
    {
      "name": "객체지향프로그래밍2",
      "professor": "조세형"
      "classRoom": "Y5411",
      "semester": "SECOND",
      "openYear": 2022,
      "grade": "FRESHMAN",
      "credit": 3.0,
      "code": "0917",
      "lectureType": "MAJOR",
      "lectureDetails": [
             {
               "day": "MON"
               "startTime": "09:00",
               "endTime": "10:50"
             },
             {
               "day": "WED"
               "startTime": "09:00",
               "endTime": "09:50"
             }
       ]
    },
    ...
  ]
}

semester: 학기(FIRST, SECOND, SUMMER, WINTER)
grade: 학년(FRESHMAN, SOPHOMORE, JUNIOR, SENIOR)
lectureType: 강의 종류(MAJOR, ELECTIVE)

RESPONSE

SUCCESS 201
{
  "message": "official 강의 추가 완료"
}

official 강의 수정

REQUEST

  • request url
PUT /api/v1/lectures/officials/{lectureId}
  • request body
{
  "name": "객체지향프로그래밍2",
  "professor": "조세형"
  "classRoom": "Y5411",
  "semester": "SECOND",
  "openYear": 2022,
  "grade": "FRESHMAN",
  "credit": 3.0,
  "code": "0917",
  "lectureType": "MAJOR",
  "lectureDetails": [
       {
         "lectureDetailId": "33",
         "day": "MON",
         "startTime": "09:00",
         "endTime": "10:50"
       },
       {
        "lectureDetailId": "34",
         "day": "WED",
         "startTime": "09:00",
         "endTime": "09:50"
       }
  ]
}

RESPONSE

{
  "message": "official 강의 수정 완료"
}

official 강의 삭제

REQUEST

  • request url
DELETE /api/v1/lectures/officials/{lectureId}

RESPONSE

{
  "message": "official 강의 삭제 완료"
}