diff --git a/SNUTT/Modules/Feature/APIClientInterface/Sources/Error/APIClientError.swift b/SNUTT/Modules/Feature/APIClientInterface/Sources/Error/APIClientError.swift index d75dd139..d55f0376 100644 --- a/SNUTT/Modules/Feature/APIClientInterface/Sources/Error/APIClientError.swift +++ b/SNUTT/Modules/Feature/APIClientInterface/Sources/Error/APIClientError.swift @@ -5,6 +5,7 @@ // Copyright © 2025 wafflestudio.com. All rights reserved. // +import Foundation import OpenAPIRuntime public enum APIClientError: Error { @@ -53,4 +54,14 @@ extension Error { false } } + + public var isTimeoutError: Bool { + switch self { + case let error as ClientError: + let nsError = error.underlyingError as NSError + return nsError.domain == NSURLErrorDomain && nsError.code == NSURLErrorTimedOut + default: + return false + } + } } diff --git a/SNUTT/Modules/Feature/Auth/Sources/Infra/AuthAPIRepository.swift b/SNUTT/Modules/Feature/Auth/Sources/Infra/AuthAPIRepository.swift index b3abc036..6f48da4c 100644 --- a/SNUTT/Modules/Feature/Auth/Sources/Infra/AuthAPIRepository.swift +++ b/SNUTT/Modules/Feature/Auth/Sources/Infra/AuthAPIRepository.swift @@ -92,7 +92,7 @@ public struct AuthAPIRepository: AuthRepository { } public func addDevice(fcmToken: String) async throws { - _ = try await apiClient.registerLocal_1(path: .init(id: fcmToken)) + _ = try await apiClient.addRegistrationId(path: .init(id: fcmToken)) } public func logout(fcmToken: String) async throws { @@ -104,7 +104,7 @@ public struct AuthAPIRepository: AuthRepository { } public func fetchSocialAuthProviderState() async throws -> SocialAuthProviderState { - let result = try await apiClient.getAuthProviders() + let result = try await apiClient.checkAuthProviders() let json: Components.Schemas.AuthProvidersCheckDto = try result.ok.body.json return .init( apple: json.apple ? .linked : .unlinked, @@ -120,7 +120,7 @@ public struct AuthAPIRepository: AuthRepository { extension AuthAPIRepository { public func getLinkedEmail(localID: String) async throws -> String { - let result = try await apiClient.getMaskedEmail() + let result = try await apiClient.getMaskedEmail(body: .json(.init(user_id: localID))) let json = try result.ok.body.json return json.email } diff --git a/SNUTT/Modules/Feature/Friends/Sources/BusinessLogic/Friend.swift b/SNUTT/Modules/Feature/Friends/Sources/BusinessLogic/Friend.swift index e1ac0bbe..87d4bcda 100644 --- a/SNUTT/Modules/Feature/Friends/Sources/BusinessLogic/Friend.swift +++ b/SNUTT/Modules/Feature/Friends/Sources/BusinessLogic/Friend.swift @@ -13,7 +13,6 @@ public struct Friend: Sendable, Equatable, Identifiable { public let nickname: String public let tag: String public let displayName: String? - public let createdAt: Date public var effectiveDisplayName: String { displayName ?? "\(nickname)#\(tag)" @@ -25,14 +24,12 @@ public struct Friend: Sendable, Equatable, Identifiable { nickname: String, tag: String, displayName: String? = nil, - createdAt: Date ) { self.id = id self.userId = userId self.nickname = nickname self.tag = tag self.displayName = displayName - self.createdAt = createdAt } } @@ -63,7 +60,6 @@ public enum FriendState: String, Sendable { nickname: "김철수", tag: "1234", displayName: "철수", - createdAt: Date() ) public static let preview2 = Friend( @@ -72,7 +68,6 @@ public enum FriendState: String, Sendable { nickname: "이영희", tag: "5678", displayName: nil, - createdAt: Date() ) public static let preview3 = Friend( @@ -81,7 +76,6 @@ public enum FriendState: String, Sendable { nickname: "박민수", tag: "9012", displayName: "민수님", - createdAt: Date().addingTimeInterval(-86400) ) public static let preview4 = Friend( @@ -90,7 +84,6 @@ public enum FriendState: String, Sendable { nickname: "최지현", tag: "3456", displayName: nil, - createdAt: Date().addingTimeInterval(-172800) ) public static let previewRequested = [ @@ -100,7 +93,6 @@ public enum FriendState: String, Sendable { nickname: "정수빈", tag: "7890", displayName: nil, - createdAt: Date() ), Friend( id: "friend5b", @@ -108,7 +100,6 @@ public enum FriendState: String, Sendable { nickname: "김민수", tag: "7891", displayName: nil, - createdAt: Date() ), ] @@ -118,7 +109,6 @@ public enum FriendState: String, Sendable { nickname: "강예진", tag: "2345", displayName: nil, - createdAt: Date() ) public static var previews: [Friend] { diff --git a/SNUTT/Modules/Feature/Friends/Sources/BusinessLogic/FriendsRepository.swift b/SNUTT/Modules/Feature/Friends/Sources/BusinessLogic/FriendsRepository.swift index e3f5f710..070c7615 100644 --- a/SNUTT/Modules/Feature/Friends/Sources/BusinessLogic/FriendsRepository.swift +++ b/SNUTT/Modules/Feature/Friends/Sources/BusinessLogic/FriendsRepository.swift @@ -14,7 +14,7 @@ import TimetableInterface @Spyable protocol FriendsRepository: Sendable { func getFriends(state: FriendState) async throws -> [Friend] - func requestFriend(nickname: String) async throws -> [Friend] + func requestFriend(nickname: String) async throws func acceptFriend(friendID: String) async throws func declineFriend(friendID: String) async throws func breakFriend(friendID: String) async throws diff --git a/SNUTT/Modules/Feature/Friends/Sources/Infra/FakeFriendsRepository.swift b/SNUTT/Modules/Feature/Friends/Sources/Infra/FakeFriendsRepository.swift index b183f382..70a51986 100644 --- a/SNUTT/Modules/Feature/Friends/Sources/Infra/FakeFriendsRepository.swift +++ b/SNUTT/Modules/Feature/Friends/Sources/Infra/FakeFriendsRepository.swift @@ -34,7 +34,7 @@ } } - func requestFriend(nickname: String) async throws -> [Friend] { + func requestFriend(nickname: String) async throws { try await Task.sleep(for: .seconds(1)) let newFriend = Friend( id: UUID().uuidString, @@ -42,10 +42,8 @@ nickname: nickname, tag: String(Int.random(in: 1000...9999)), displayName: nil, - createdAt: Date() ) requestingFriends.append(newFriend) - return requestingFriends } func acceptFriend(friendID: String) async throws { @@ -74,7 +72,6 @@ nickname: friend.nickname, tag: friend.tag, displayName: displayName, - createdAt: friend.createdAt ) } } @@ -111,7 +108,6 @@ nickname: "카카오친구", tag: String(Int.random(in: 1000...9999)), displayName: nil, - createdAt: Date() ) activeFriends.append(newFriend) return newFriend diff --git a/SNUTT/Modules/Feature/Friends/Sources/Infra/FriendsAPIRepository.swift b/SNUTT/Modules/Feature/Friends/Sources/Infra/FriendsAPIRepository.swift index 4ea7bc0d..4c86f923 100644 --- a/SNUTT/Modules/Feature/Friends/Sources/Infra/FriendsAPIRepository.swift +++ b/SNUTT/Modules/Feature/Friends/Sources/Infra/FriendsAPIRepository.swift @@ -26,24 +26,13 @@ struct FriendsAPIRepository: FriendsRepository { nickname: dto.nickname.nickname, tag: dto.nickname.tag, displayName: dto.displayName, - createdAt: dto.createdAt ) } } - func requestFriend(nickname: String) async throws -> [Friend] { + func requestFriend(nickname: String) async throws { let request = Components.Schemas.FriendRequest(nickname: nickname) - let response = try await apiClient.requestFriend(body: .json(request)).ok.body.json - return response.content.map { dto in - Friend( - id: dto.id, - userId: dto.userId, - nickname: dto.nickname.nickname, - tag: dto.nickname.tag, - displayName: dto.displayName, - createdAt: dto.createdAt - ) - } + _ = try await apiClient.requestFriend(body: .json(request)) } func acceptFriend(friendID: String) async throws { @@ -80,7 +69,7 @@ struct FriendsAPIRepository: FriendsRepository { let timetableDto = try await apiClient.getPrimaryTable( path: .init(friendId: friendID), query: .init( - semester: String(quarter.semester.rawValue), + semester: require(.init(rawValue: quarter.semester.rawValue)), year: Int32(quarter.year) ) ).ok.body.json @@ -100,12 +89,11 @@ struct FriendsAPIRepository: FriendsRepository { path: .init(requestToken: requestToken) ).ok.body.json return Friend( - id: response.id, - userId: response.userId, - nickname: response.nickname.nickname, - tag: response.nickname.tag, + id: response.first.id ?? "", + userId: response.second.id ?? "", + nickname: response.second.nicknameWithoutTag, + tag: String(response.second.nicknameTag), displayName: nil, - createdAt: Date() ) } } diff --git a/SNUTT/Modules/Feature/Friends/Sources/Presentation/FriendRequestViewModel.swift b/SNUTT/Modules/Feature/Friends/Sources/Presentation/FriendRequestViewModel.swift index 9172e7ad..b656b3b7 100644 --- a/SNUTT/Modules/Feature/Friends/Sources/Presentation/FriendRequestViewModel.swift +++ b/SNUTT/Modules/Feature/Friends/Sources/Presentation/FriendRequestViewModel.swift @@ -32,7 +32,7 @@ final class FriendRequestViewModel { /// Request friend by nickname#tag format func requestFriend(nickname: String) async throws { - _ = try await friendsRepository.requestFriend(nickname: nickname) + try await friendsRepository.requestFriend(nickname: nickname) // Refresh requested friends list after successful request try await friendsViewModel.refreshRequestedFriends() } diff --git a/SNUTT/Modules/Feature/Friends/Sources/UI/FriendMenu/FriendEditDisplayNameSheet.swift b/SNUTT/Modules/Feature/Friends/Sources/UI/FriendMenu/FriendEditDisplayNameSheet.swift index 36e0cb02..8695e581 100644 --- a/SNUTT/Modules/Feature/Friends/Sources/UI/FriendMenu/FriendEditDisplayNameSheet.swift +++ b/SNUTT/Modules/Feature/Friends/Sources/UI/FriendMenu/FriendEditDisplayNameSheet.swift @@ -88,7 +88,6 @@ struct FriendEditDisplayNameSheet: View { nickname: "홍길동", tag: "1234", displayName: nil, - createdAt: Date() ), viewModel: .init(friendsViewModel: .init()) ) diff --git a/SNUTT/Modules/Feature/Friends/Sources/UI/FriendMenu/FriendManageOptionSheet.swift b/SNUTT/Modules/Feature/Friends/Sources/UI/FriendMenu/FriendManageOptionSheet.swift index 656d6322..e9c4c2ea 100644 --- a/SNUTT/Modules/Feature/Friends/Sources/UI/FriendMenu/FriendManageOptionSheet.swift +++ b/SNUTT/Modules/Feature/Friends/Sources/UI/FriendMenu/FriendManageOptionSheet.swift @@ -122,7 +122,6 @@ extension ManageOptionButton { nickname: "홍길동", tag: "1234", displayName: nil, - createdAt: Date() ), viewModel: .init(friendsViewModel: .init()) ) diff --git a/SNUTT/Modules/Feature/Notifications/Sources/Infra/NotificationAPIRepository.swift b/SNUTT/Modules/Feature/Notifications/Sources/Infra/NotificationAPIRepository.swift index 8910a712..0f461681 100644 --- a/SNUTT/Modules/Feature/Notifications/Sources/Infra/NotificationAPIRepository.swift +++ b/SNUTT/Modules/Feature/Notifications/Sources/Infra/NotificationAPIRepository.swift @@ -14,11 +14,11 @@ struct NotificationAPIRepository: NotificationRepository { func fetchNotifications(offset: Int, limit: Int, markAsRead: Bool) async throws -> [NotificationModel] { let explicit = markAsRead ? 1 : 0 - return try await apiClient.getNotification( + return try await apiClient.getNotifications( query: .init( - offset: String(offset), - limit: String(limit), - explicit: String(explicit) + offset: Int64(offset), + limit: Int32(limit), + explicit: Int32(explicit) ) ).ok.body.json.compactMap { try NotificationModel( diff --git a/SNUTT/Modules/Feature/Themes/Sources/Infra/ThemeAPIRepository.swift b/SNUTT/Modules/Feature/Themes/Sources/Infra/ThemeAPIRepository.swift index 31be2295..f7934676 100644 --- a/SNUTT/Modules/Feature/Themes/Sources/Infra/ThemeAPIRepository.swift +++ b/SNUTT/Modules/Feature/Themes/Sources/Infra/ThemeAPIRepository.swift @@ -15,8 +15,7 @@ public struct ThemeAPIRepository: ThemeRepository { public init() {} public func fetchThemes() async throws -> [Theme] { - try await Task.sleep(for: .seconds(3)) - return try await apiClient.getThemes(query: .init(state: "")).ok.body.json + return try await apiClient.getThemes().ok.body.json .compactMap { dto in try? dto.toTheme() } @@ -26,7 +25,7 @@ public struct ThemeAPIRepository: ThemeRepository { try await apiClient.modifyTheme( path: .init(themeId: theme.id), body: .json( - theme.toPayload() + theme.toModifyPayload() ) ).ok.body.json.toTheme() } @@ -34,18 +33,23 @@ public struct ThemeAPIRepository: ThemeRepository { public func createTheme(theme: Theme) async throws -> Theme { try await apiClient.addTheme( body: .json( - theme.toPayload() + theme.toAddPayload() ) ).ok.body.json.toTheme() } } extension Theme { - fileprivate func toPayload() -> Components.Schemas.TimetableThemeAddRequestDto { - .init( - colors: colors.map { .init(bg: $0.bgHex, fg: $0.fgHex) }, - name: name, - ) + private var colorPayloads: [Components.Schemas.ColorSet] { + colors.map { .init(bg: $0.bgHex, fg: $0.fgHex) } + } + + fileprivate func toAddPayload() -> Components.Schemas.TimetableThemeAddRequestDto { + .init(colors: colorPayloads, name: name) + } + + fileprivate func toModifyPayload() -> Components.Schemas.TimetableThemeModifyRequestDto { + .init(colors: colorPayloads, name: name) } } diff --git a/SNUTT/Modules/Feature/Timetable/Sources/Infra/CourseBookAPIRepository.swift b/SNUTT/Modules/Feature/Timetable/Sources/Infra/CourseBookAPIRepository.swift index daa122f6..6c99d80d 100644 --- a/SNUTT/Modules/Feature/Timetable/Sources/Infra/CourseBookAPIRepository.swift +++ b/SNUTT/Modules/Feature/Timetable/Sources/Infra/CourseBookAPIRepository.swift @@ -15,22 +15,22 @@ struct CourseBookAPIRepository: CourseBookRepository { @Dependency(\.apiClient) private var apiClient func fetchCourseBookList() async throws -> [CourseBook] { - let response = try await apiClient.getAllCoursebooks() + let response = try await apiClient.getCoursebooks_1() let courseBooks = try response.ok.body.json return courseBooks.map { CourseBook(from: $0) } } func fetchRecentCourseBook() async throws -> CourseBook { - let response = try await apiClient.getMostRecentCoursebook() + let response = try await apiClient.getLatestCoursebook() let courseBook = try response.ok.body.json return .init(from: courseBook) } func fetchSyllabusURL(year: Int, semester: Int, lecture: Lecture) async throws -> Syllabus { - let response = try await apiClient.getSyllabusUrl( + let response = try await apiClient.getCoursebookOfficial( query: .init( - year: String(year), - semester: String(semester), + year: Int32(year), + semester: try require(.init(rawValue: semester)), course_number: try require(lecture.courseNumber), lecture_number: try require(lecture.lectureNumber) ) diff --git a/SNUTT/Modules/Feature/Timetable/Sources/Infra/LectureAPIRepository.swift b/SNUTT/Modules/Feature/Timetable/Sources/Infra/LectureAPIRepository.swift index e3e9ab02..f77c42eb 100644 --- a/SNUTT/Modules/Feature/Timetable/Sources/Infra/LectureAPIRepository.swift +++ b/SNUTT/Modules/Feature/Timetable/Sources/Infra/LectureAPIRepository.swift @@ -52,7 +52,7 @@ public struct LectureAPIRepository: LectureRepository { ) return try await apiClient.modifyTimetableLecture( path: .init(timetableId: timetableID, timetableLectureId: lectureID), - query: .init(isForced: overrideOnConflict.description), + query: .init(isForced: overrideOnConflict), body: .json(requestDto) ).ok.body.json.toTimetable() } @@ -114,8 +114,11 @@ public struct LectureAPIRepository: LectureRepository { } public func fetchBookmarks(quarter: Quarter) async throws -> [Lecture] { - let response = try await apiClient.getBookmark( - query: .init(year: String(quarter.year), semester: String(quarter.semester.rawValue)) + let response = try await apiClient.getBookmarks( + query: .init( + year: Int32(quarter.year), + semester: require(.init(rawValue: quarter.semester.rawValue)) + ) ).ok.body.json return try response.lectures.map { try $0.toLecture() } } diff --git a/SNUTT/Modules/Feature/Timetable/Sources/Infra/LectureSearchAPIRepository.swift b/SNUTT/Modules/Feature/Timetable/Sources/Infra/LectureSearchAPIRepository.swift index 11ac9c19..7eaea37d 100644 --- a/SNUTT/Modules/Feature/Timetable/Sources/Infra/LectureSearchAPIRepository.swift +++ b/SNUTT/Modules/Feature/Timetable/Sources/Infra/LectureSearchAPIRepository.swift @@ -94,15 +94,15 @@ struct LectureSearchAPIRepository: LectureSearchRepository { title: query, year: Int32(quarter.year) ) - let response = try await apiClient.searchLecture(body: .json(query)) + let response = try await apiClient.searchLectures(body: .json(query)) return try response.ok.body.json.map { try $0.toLecture() } } func fetchSearchPredicates(quarter: Quarter) async throws -> [SearchPredicate] { let response = try await apiClient.getTagList( path: .init( - year: String(quarter.year), - semester: String(quarter.semester.rawValue) + year: Int32(quarter.year), + semester: require(.init(rawValue: quarter.semester.rawValue)) ) ) let json = try response.ok.body.json diff --git a/SNUTT/Modules/Feature/Timetable/Sources/Infra/TimetableAPIRepository.swift b/SNUTT/Modules/Feature/Timetable/Sources/Infra/TimetableAPIRepository.swift index 9bf3ee6f..93705bd2 100644 --- a/SNUTT/Modules/Feature/Timetable/Sources/Infra/TimetableAPIRepository.swift +++ b/SNUTT/Modules/Feature/Timetable/Sources/Infra/TimetableAPIRepository.swift @@ -26,7 +26,7 @@ public struct TimetableAPIRepository: TimetableRepository { } public func fetchTimetableMetadataList() async throws -> [TimetableMetadata] { - try await apiClient.getBrief().ok.body.json.map { try $0.toTimetableMetadata() } + try await apiClient.getTimetableBriefs().ok.body.json.map { try $0.toTimetableMetadata() } } public func updateTimetableTitle(timetableID: String, title: String) async throws -> [TimetableMetadata] { @@ -73,7 +73,7 @@ public struct TimetableAPIRepository: TimetableRepository { ) async throws -> Timetable { try await apiClient.addLecture( path: .init(timetableId: timetableID, lectureId: lectureID), - query: .init(isForced: overrideOnConflict.description) + query: .init(isForced: overrideOnConflict) ).ok.body.json.toTimetable() } diff --git a/SNUTT/OpenAPI/openapi-dev.json b/SNUTT/OpenAPI/openapi-dev.json index 94ccbbff..e5ed8c4f 100644 --- a/SNUTT/OpenAPI/openapi-dev.json +++ b/SNUTT/OpenAPI/openapi-dev.json @@ -126,25 +126,6 @@ ], "type" : "object" }, - "BuildingsResponse" : { - "properties" : { - "content" : { - "items" : { - "$ref" : "#/components/schemas/LectureBuilding" - }, - "type" : "array" - }, - "totalCount" : { - "format" : "int32", - "type" : "integer" - } - }, - "required" : [ - "content", - "totalCount" - ], - "type" : "object" - }, "ClassPlaceAndTimeDto" : { "properties" : { "day" : { @@ -379,6 +360,50 @@ ], "type" : "object" }, + "Credential" : { + "properties" : { + "appleEmail" : { + "type" : "string" + }, + "appleSub" : { + "type" : "string" + }, + "appleTransferSub" : { + "type" : "string" + }, + "fbId" : { + "type" : "string" + }, + "fbName" : { + "type" : "string" + }, + "googleEmail" : { + "type" : "string" + }, + "googleSub" : { + "type" : "string" + }, + "kakaoEmail" : { + "type" : "string" + }, + "kakaoSub" : { + "type" : "string" + }, + "localId" : { + "type" : "string" + }, + "localPw" : { + "type" : "string" + }, + "tempDate" : { + "type" : "string" + }, + "tempSeed" : { + "type" : "string" + } + }, + "type" : "object" + }, "CustomTimetableLectureAddLegacyRequestDto" : { "properties" : { "class_time_json" : { @@ -458,6 +483,24 @@ ], "type" : "object" }, + "DiaryDailyClassType" : { + "properties" : { + "active" : { + "type" : "boolean" + }, + "id" : { + "type" : "string" + }, + "name" : { + "type" : "string" + } + }, + "required" : [ + "active", + "name" + ], + "type" : "object" + }, "DiaryDailyClassTypeDto" : { "properties" : { "id" : { @@ -473,6 +516,49 @@ ], "type" : "object" }, + "DiaryQuestion" : { + "properties" : { + "active" : { + "type" : "boolean" + }, + "answers" : { + "items" : { + "type" : "string" + }, + "type" : "array" + }, + "id" : { + "type" : "string" + }, + "question" : { + "type" : "string" + }, + "shortAnswers" : { + "items" : { + "type" : "string" + }, + "type" : "array" + }, + "shortQuestion" : { + "type" : "string" + }, + "targetDailyClassTypeIds" : { + "items" : { + "type" : "string" + }, + "type" : "array" + } + }, + "required" : [ + "active", + "answers", + "question", + "shortAnswers", + "shortQuestion", + "targetDailyClassTypeIds" + ], + "type" : "object" + }, "DiaryQuestionDto" : { "properties" : { "answers" : { @@ -721,6 +807,56 @@ ], "type" : "object" }, + "ForcedReq" : { + "properties" : { + "is_forced" : { + "type" : "boolean" + } + }, + "type" : "object" + }, + "Friend" : { + "properties" : { + "accepted" : { + "type" : "boolean", + "writeOnly" : true + }, + "createdAt" : { + "format" : "date-time", + "type" : "string" + }, + "fromUserDisplayName" : { + "type" : "string" + }, + "fromUserId" : { + "type" : "string" + }, + "id" : { + "type" : "string" + }, + "isAccepted" : { + "type" : "boolean" + }, + "toUserDisplayName" : { + "type" : "string" + }, + "toUserId" : { + "type" : "string" + }, + "updatedAt" : { + "format" : "date-time", + "type" : "string" + } + }, + "required" : [ + "createdAt", + "fromUserId", + "isAccepted", + "toUserId", + "updatedAt" + ], + "type" : "object" + }, "FriendRequest" : { "properties" : { "nickname" : { @@ -770,25 +906,6 @@ ], "type" : "object" }, - "FriendsResponse" : { - "properties" : { - "content" : { - "items" : { - "$ref" : "#/components/schemas/FriendResponse" - }, - "type" : "array" - }, - "totalCount" : { - "format" : "int32", - "type" : "integer" - } - }, - "required" : [ - "content", - "totalCount" - ], - "type" : "object" - }, "GeoCoordinate" : { "properties" : { "latitude" : { @@ -880,7 +997,93 @@ "type" : "object" }, "JsonNode" : { - + "properties" : { + "array" : { + "type" : "boolean" + }, + "bigDecimal" : { + "type" : "boolean" + }, + "bigInteger" : { + "type" : "boolean" + }, + "binary" : { + "type" : "boolean" + }, + "boolean" : { + "type" : "boolean" + }, + "container" : { + "type" : "boolean" + }, + "double" : { + "type" : "boolean" + }, + "embeddedValue" : { + "type" : "boolean" + }, + "empty" : { + "type" : "boolean" + }, + "float" : { + "type" : "boolean" + }, + "floatingPointNumber" : { + "type" : "boolean" + }, + "int" : { + "type" : "boolean" + }, + "integralNumber" : { + "type" : "boolean" + }, + "long" : { + "type" : "boolean" + }, + "missingNode" : { + "type" : "boolean" + }, + "nodeType" : { + "enum" : [ + "ARRAY", + "BINARY", + "BOOLEAN", + "MISSING", + "NULL", + "NUMBER", + "OBJECT", + "POJO", + "STRING" + ], + "type" : "string" + }, + "null" : { + "type" : "boolean" + }, + "number" : { + "type" : "boolean" + }, + "object" : { + "type" : "boolean" + }, + "pojo" : { + "type" : "boolean" + }, + "short" : { + "type" : "boolean" + }, + "string" : { + "type" : "boolean" + }, + "textual" : { + "deprecated" : true, + "type" : "boolean" + }, + "valueNode" : { + "type" : "boolean" + } + }, + "type" : "object" }, "LectureBuilding" : { "properties" : { @@ -1010,42 +1213,118 @@ ], "type" : "object" }, - "LocalLoginRequest" : { + "ListResponseFriendResponse" : { "properties" : { - "id" : { - "type" : "string" + "content" : { + "items" : { + "$ref" : "#/components/schemas/FriendResponse" + }, + "type" : "array" }, - "password" : { - "type" : "string" + "totalCount" : { + "format" : "int32", + "type" : "integer" } }, "required" : [ - "id", - "password" + "content", + "totalCount" ], "type" : "object" }, - "LocalRegisterRequest" : { + "ListResponseLectureBuilding" : { "properties" : { - "email" : { - "type" : "string" - }, - "id" : { - "type" : "string" + "content" : { + "items" : { + "$ref" : "#/components/schemas/LectureBuilding" + }, + "type" : "array" }, - "password" : { - "type" : "string" + "totalCount" : { + "format" : "int32", + "type" : "integer" } }, "required" : [ - "id", - "password" + "content", + "totalCount" ], "type" : "object" }, - "LoginResponse" : { + "ListResponsePopupResponse" : { "properties" : { - "message" : { + "content" : { + "items" : { + "$ref" : "#/components/schemas/PopupResponse" + }, + "type" : "array" + }, + "totalCount" : { + "format" : "int32", + "type" : "integer" + } + }, + "required" : [ + "content", + "totalCount" + ], + "type" : "object" + }, + "ListResponseTimetableThemeDto" : { + "properties" : { + "content" : { + "items" : { + "$ref" : "#/components/schemas/TimetableThemeDto" + }, + "type" : "array" + }, + "totalCount" : { + "format" : "int32", + "type" : "integer" + } + }, + "required" : [ + "content", + "totalCount" + ], + "type" : "object" + }, + "LocalLoginRequest" : { + "properties" : { + "id" : { + "type" : "string" + }, + "password" : { + "type" : "string" + } + }, + "required" : [ + "id", + "password" + ], + "type" : "object" + }, + "LocalRegisterRequest" : { + "properties" : { + "email" : { + "type" : "string" + }, + "id" : { + "type" : "string" + }, + "password" : { + "type" : "string" + } + }, + "required" : [ + "id", + "password" + ], + "type" : "object" + }, + "LoginResponse" : { + "properties" : { + "message" : { "type" : "string" }, "token" : { @@ -1073,6 +1352,20 @@ ], "type" : "object" }, + "MultiValueMapStringString" : { + "additionalProperties" : { + "items" : { + "type" : "string" + }, + "type" : "array" + }, + "properties" : { + "empty" : { + "type" : "boolean" + } + }, + "type" : "object" + }, "NicknameDto" : { "properties" : { "nickname" : { @@ -1155,6 +1448,21 @@ ], "type" : "object" }, + "PairFriendUser" : { + "properties" : { + "first" : { + "$ref" : "#/components/schemas/Friend" + }, + "second" : { + "$ref" : "#/components/schemas/User" + } + }, + "required" : [ + "first", + "second" + ], + "type" : "object" + }, "PasswordChangeRequest" : { "properties" : { "new_password" : { @@ -1241,42 +1549,6 @@ ], "type" : "object" }, - "PopupsResponse" : { - "properties" : { - "content" : { - "items" : { - "$ref" : "#/components/schemas/PopupResponse" - }, - "type" : "array" - }, - "totalCount" : { - "format" : "int32", - "type" : "integer" - } - }, - "required" : [ - "content", - "totalCount" - ], - "type" : "object" - }, - "PostConfigRequest" : { - "properties" : { - "data" : { - "$ref" : "#/components/schemas/JsonNode" - }, - "maxVersion" : { - "$ref" : "#/components/schemas/ConfigVersionDto" - }, - "minVersion" : { - "$ref" : "#/components/schemas/ConfigVersionDto" - } - }, - "required" : [ - "data" - ], - "type" : "object" - }, "PostPopupRequest" : { "properties" : { "hiddenDays" : { @@ -1664,25 +1936,6 @@ ], "type" : "object" }, - "ThemesResponse" : { - "properties" : { - "content" : { - "items" : { - "$ref" : "#/components/schemas/TimetableThemeDto" - }, - "type" : "array" - }, - "totalCount" : { - "format" : "int32", - "type" : "integer" - } - }, - "required" : [ - "content", - "totalCount" - ], - "type" : "object" - }, "TimetableAddRequestDto" : { "properties" : { "semester" : { @@ -2241,6 +2494,20 @@ ], "type" : "object" }, + "TimetableThemeModifyRequestDto" : { + "properties" : { + "colors" : { + "items" : { + "$ref" : "#/components/schemas/ColorSet" + }, + "type" : "array" + }, + "name" : { + "type" : "string" + } + }, + "type" : "object" + }, "TimetableThemePublishRequestDto" : { "properties" : { "isAnonymous" : { @@ -2278,6 +2545,77 @@ ], "type" : "object" }, + "User" : { + "properties" : { + "active" : { + "type" : "boolean" + }, + "admin" : { + "type" : "boolean", + "writeOnly" : true + }, + "credential" : { + "$ref" : "#/components/schemas/Credential" + }, + "credentialHash" : { + "type" : "string" + }, + "email" : { + "type" : "string" + }, + "emailVerified" : { + "type" : "boolean", + "writeOnly" : true + }, + "fcmKey" : { + "type" : "string" + }, + "id" : { + "type" : "string" + }, + "isAdmin" : { + "type" : "boolean" + }, + "isEmailVerified" : { + "type" : "boolean" + }, + "lastLoginTimestamp" : { + "format" : "int64", + "type" : "integer" + }, + "nickname" : { + "type" : "string" + }, + "nicknameTag" : { + "format" : "int32", + "type" : "integer" + }, + "nicknameWithoutTag" : { + "type" : "string" + }, + "notificationCheckedAt" : { + "format" : "date-time", + "type" : "string" + }, + "regDate" : { + "format" : "date-time", + "type" : "string" + } + }, + "required" : [ + "active", + "credential", + "credentialHash", + "isAdmin", + "lastLoginTimestamp", + "nickname", + "nicknameTag", + "nicknameWithoutTag", + "notificationCheckedAt", + "regDate" + ], + "type" : "object" + }, "UserDto" : { "properties" : { "email" : { @@ -2452,7 +2790,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "post" : { "operationId" : "postConfig", @@ -2469,9 +2810,7 @@ "requestBody" : { "content" : { "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/PostConfigRequest" - } + } }, "required" : true @@ -2487,7 +2826,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/configs/{name}/{id}" : { @@ -2513,9 +2855,15 @@ ], "responses" : { "200" : { + "content" : { + + }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "patch" : { "operationId" : "patchConfig", @@ -2558,7 +2906,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/diary/dailyClassTypes" : { @@ -2585,7 +2936,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "get" : { "operationId" : "getAllDiaryDailyClassTypes", @@ -2595,7 +2949,7 @@ "application/json" : { "schema" : { "items" : { - "$ref" : "#/components/schemas/DiaryDailyClassTypeDto" + "$ref" : "#/components/schemas/DiaryDailyClassType" }, "type" : "array" } @@ -2603,7 +2957,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "post" : { "operationId" : "insertDiaryDailyClassType", @@ -2628,7 +2985,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/diary/questions" : { @@ -2640,7 +3000,7 @@ "application/json" : { "schema" : { "items" : { - "$ref" : "#/components/schemas/DiaryQuestionDto" + "$ref" : "#/components/schemas/DiaryQuestion" }, "type" : "array" } @@ -2648,7 +3008,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "post" : { "operationId" : "insertDiaryQuestion", @@ -2673,7 +3036,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/diary/questions/{id}" : { @@ -2700,7 +3066,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/images/{source}/upload-uris" : { @@ -2718,8 +3087,11 @@ { "in" : "query", "name" : "count", + "required" : false, "schema" : { - "type" : "string" + "default" : 1, + "format" : "int32", + "type" : "integer" } } ], @@ -2737,12 +3109,14 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/insert_noti" : { "post" : { - "description" : "어드민 권한으로 알림 보내기", "operationId" : "insertNotification", "requestBody" : { "content" : { @@ -2752,7 +3126,6 @@ } } }, - "description" : "userId == null이면 모든 유저에게 보냄\ninsertFcm == true && shouldSendAsDataMessage == true이면 FCM data message(클라에서 직접 대응 필요한 메시지)로 보냄", "required" : true }, "responses" : { @@ -2766,7 +3139,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/popups" : { @@ -2793,7 +3169,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/popups/{id}" : { @@ -2811,12 +3190,18 @@ ], "responses" : { "200" : { + "content" : { + + }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, - "/v1/auth/find_id" : { + "/v1/auth/id/find" : { "post" : { "operationId" : "findId", "requestBody" : { @@ -2826,7 +3211,8 @@ "$ref" : "#/components/schemas/SendEmailRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2839,20 +3225,24 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, - "/v1/auth/login_fb" : { + "/v1/auth/login_apple" : { "post" : { - "operationId" : "loginFacebookLegacy", + "operationId" : "loginAppleLegacy", "requestBody" : { "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/FacebookLoginRequest" + "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2865,20 +3255,24 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, - "/v1/auth/login_local" : { + "/v1/auth/login_fb" : { "post" : { - "operationId" : "loginLocal", + "operationId" : "loginFacebookLegacy", "requestBody" : { "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/LocalLoginRequest" + "$ref" : "#/components/schemas/FacebookLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2891,10 +3285,43 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, - "/v1/auth/login/apple" : { + "/v1/auth/login_local" : { + "post" : { + "operationId" : "loginLocal", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/LocalLoginRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/LoginResponse" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "auth-controller" + ] + } + }, + "/v1/auth/login/apple" : { "post" : { "operationId" : "loginApple", "requestBody" : { @@ -2904,7 +3331,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2917,7 +3345,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/login/facebook" : { @@ -2930,7 +3361,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2943,7 +3375,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/login/google" : { @@ -2956,7 +3391,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2969,7 +3405,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/login/kakao" : { @@ -2982,7 +3421,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2995,7 +3435,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/logout" : { @@ -3008,7 +3451,8 @@ "$ref" : "#/components/schemas/LogoutRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3021,7 +3465,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/password/reset" : { @@ -3034,7 +3481,8 @@ "$ref" : "#/components/schemas/PasswordResetRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3047,7 +3495,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/password/reset/email/check" : { @@ -3060,7 +3511,8 @@ "$ref" : "#/components/schemas/GetMaskedEmailRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3073,7 +3525,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/password/reset/email/send" : { @@ -3086,7 +3541,8 @@ "$ref" : "#/components/schemas/SendEmailRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3099,7 +3555,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/password/reset/verification/code" : { @@ -3112,7 +3571,8 @@ "$ref" : "#/components/schemas/VerificationCodeRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3125,7 +3585,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/register_local" : { @@ -3138,7 +3601,8 @@ "$ref" : "#/components/schemas/LocalRegisterRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3151,19 +3615,23 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/bookmarks" : { "get" : { - "operationId" : "getBookmark", + "operationId" : "getBookmarks", "parameters" : [ { "in" : "query", "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { @@ -3171,7 +3639,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } } ], @@ -3186,7 +3661,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "bookmark-controller" + ] } }, "/v1/bookmarks/lecture" : { @@ -3199,7 +3677,8 @@ "$ref" : "#/components/schemas/BookmarkLectureModifyRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3208,7 +3687,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "bookmark-controller" + ] }, "post" : { "operationId" : "addLecture_1", @@ -3219,7 +3701,8 @@ "$ref" : "#/components/schemas/BookmarkLectureModifyRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3228,7 +3711,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "bookmark-controller" + ] } }, "/v1/bookmarks/lectures/{lectureId}/state" : { @@ -3255,7 +3741,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "bookmark-controller" + ] } }, "/v1/buildings" : { @@ -3263,7 +3752,6 @@ "operationId" : "searchBuildings", "parameters" : [ { - "description" : "\n Comma separated list of place codes.\n custom 강의 제외하는 것을 추천\n ", "in" : "query", "name" : "places", "required" : true, @@ -3277,13 +3765,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/BuildingsResponse" + "$ref" : "#/components/schemas/ListResponseLectureBuilding" } } }, "description" : "OK" } - } + }, + "tags" : [ + "building-controller" + ] } }, "/v1/configs" : { @@ -3301,12 +3792,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "config-controller" + ] } }, "/v1/course_books" : { "get" : { - "operationId" : "getAllCoursebooks", + "operationId" : "getCoursebooks_1", "responses" : { "200" : { "content" : { @@ -3321,33 +3815,41 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "coursebook-controller" + ] } }, "/v1/course_books/official" : { "get" : { - "operationId" : "getSyllabusUrl", + "operationId" : "getCoursebookOfficial", "parameters" : [ { - "example" : 2024, "in" : "query", "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { - "example" : 3, "in" : "query", "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } }, { - "example" : "M1522.001400", "in" : "query", "name" : "course_number", "required" : true, @@ -3356,7 +3858,6 @@ } }, { - "example" : "001", "in" : "query", "name" : "lecture_number", "required" : true, @@ -3376,12 +3877,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "coursebook-controller" + ] } }, "/v1/course_books/recent" : { "get" : { - "operationId" : "getMostRecentCoursebook", + "operationId" : "getLatestCoursebook", "responses" : { "200" : { "content" : { @@ -3393,7 +3897,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "coursebook-controller" + ] } }, "/v1/diary" : { @@ -3420,7 +3927,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "diary-controller" + ] } }, "/v1/diary/{id}" : { @@ -3447,7 +3957,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "diary-controller" + ] } }, "/v1/diary/dailyClassTypes" : { @@ -3467,7 +3980,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "diary-controller" + ] } }, "/v1/diary/my" : { @@ -3487,12 +4003,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "diary-controller" + ] } }, "/v1/diary/questionnaire" : { "post" : { - "operationId" : "getQuestionnaireFromActivities", + "operationId" : "getQuestionnaireFromDailyClassTypes", "requestBody" : { "content" : { "application/json" : { @@ -3514,7 +4033,247 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "diary-controller" + ] + } + }, + "/v1/ev-service/{requestPath}" : { + "delete" : { + "operationId" : "handleDelete", + "parameters" : [ + { + "in" : "path", + "name" : "requestPath", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "ev-service-controller" + ] + }, + "get" : { + "operationId" : "handleGet", + "parameters" : [ + { + "in" : "path", + "name" : "requestPath", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "ev-service-controller" + ] + }, + "patch" : { + "operationId" : "handlePatch", + "parameters" : [ + { + "in" : "path", + "name" : "requestPath", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "ev-service-controller" + ] + }, + "post" : { + "operationId" : "handlePost", + "parameters" : [ + { + "in" : "path", + "name" : "requestPath", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "ev-service-controller" + ] + } + }, + "/v1/ev-service/v1/users/me/lectures/latest" : { + "get" : { + "operationId" : "getMyLatestLectures", + "parameters" : [ + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + }, + { + "in" : "query", + "name" : "limit", + "required" : false, + "schema" : { + "default" : 100, + "format" : "int32", + "type" : "integer" + } + } + ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "ev-service-controller" + ] } }, "/v1/ev/lectures/{lectureId}/summary" : { @@ -3522,7 +4281,6 @@ "operationId" : "getLectureEvaluationSummary", "parameters" : [ { - "description" : "snutt lecture id", "in" : "path", "name" : "lectureId", "required" : true, @@ -3542,7 +4300,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "ev-controller" + ] } }, "/v1/feedback" : { @@ -3555,7 +4316,8 @@ "$ref" : "#/components/schemas/FeedbackPostRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3568,7 +4330,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "feedback-controller" + ] } }, "/v1/friends" : { @@ -3589,13 +4354,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/FriendsResponse" + "$ref" : "#/components/schemas/ListResponseFriendResponse" } } }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] }, "post" : { "operationId" : "requestFriend", @@ -3612,15 +4380,14 @@ "responses" : { "200" : { "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/FriendsResponse" - } - } + }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/{friendId}" : { @@ -3643,7 +4410,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/{friendId}/accept" : { @@ -3666,7 +4436,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/{friendId}/coursebooks" : { @@ -3696,7 +4469,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-table-controller" + ] } }, "/v1/friends/{friendId}/decline" : { @@ -3719,7 +4495,46 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] + } + }, + "/v1/friends/{friendId}/display-name" : { + "patch" : { + "operationId" : "updateFriendDisplayName", + "parameters" : [ + { + "in" : "path", + "name" : "friendId", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/UpdateFriendDisplayNameRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + + }, + "description" : "OK" + } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/{friendId}/primary-table" : { @@ -3739,7 +4554,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } }, { @@ -3763,7 +4585,43 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-table-controller" + ] + } + }, + "/v1/friends/{friendId}/registered-course-books" : { + "get" : { + "operationId" : "getCoursebooksLegacy", + "parameters" : [ + { + "in" : "path", + "name" : "friendId", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "items" : { + "$ref" : "#/components/schemas/CoursebookDto" + }, + "type" : "array" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "friend-table-controller" + ] } }, "/v1/friends/accept-link/{requestToken}" : { @@ -3784,13 +4642,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/FriendResponse" + "$ref" : "#/components/schemas/PairFriendUser" } } }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/generate-link" : { @@ -3807,32 +4668,44 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/notification" : { "get" : { - "operationId" : "getNotification", + "operationId" : "getNotifications", "parameters" : [ { "in" : "query", "name" : "offset", + "required" : false, "schema" : { - "type" : "string" + "default" : 0, + "format" : "int64", + "type" : "integer" } }, { "in" : "query", "name" : "limit", + "required" : false, "schema" : { - "type" : "string" + "default" : 20, + "format" : "int32", + "type" : "integer" } }, { "in" : "query", "name" : "explicit", + "required" : false, "schema" : { - "type" : "string" + "default" : 0, + "format" : "int32", + "type" : "integer" } } ], @@ -3850,7 +4723,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "notification-controller" + ] } }, "/v1/notification/count" : { @@ -3867,7 +4743,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "notification-controller" + ] } }, "/v1/popups" : { @@ -3878,13 +4757,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/PopupsResponse" + "$ref" : "#/components/schemas/ListResponsePopupResponse" } } }, "description" : "OK" } - } + }, + "tags" : [ + "popup-controller" + ] } }, "/v1/push/preferences" : { @@ -3894,18 +4776,6 @@ "200" : { "content" : { "application/json" : { - "example" : { - "pushPreferences" : [ - { - "isEnabled" : "true", - "type" : "LECTURE_UPDATE" - }, - { - "isEnabled" : "true", - "type" : "VACANCY_NOTIFICATION" - } - ] - }, "schema" : { "$ref" : "#/components/schemas/PushPreferenceDto" } @@ -3913,41 +4783,39 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "push-preference-controller" + ] }, "post" : { "operationId" : "savePushPreferences", "requestBody" : { "content" : { "application/json" : { - "example" : { - "pushPreferences" : [ - { - "isEnabled" : false, - "type" : "LECTURE_UPDATE" - }, - { - "isEnabled" : false, - "type" : "VACANCY_NOTIFICATION" - } - ] - }, "schema" : { "$ref" : "#/components/schemas/PushPreferenceDto" } } - } + }, + "required" : true }, "responses" : { "200" : { + "content" : { + + }, "description" : "OK" } - } + }, + "tags" : [ + "push-preference-controller" + ] } }, "/v1/search_query" : { "post" : { - "operationId" : "searchLecture", + "operationId" : "searchLectures", "requestBody" : { "content" : { "application/json" : { @@ -3955,7 +4823,8 @@ "$ref" : "#/components/schemas/SearchQueryLegacy" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3971,7 +4840,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "lecture-search-controller" + ] } }, "/v1/semesters/status" : { @@ -3988,12 +4860,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "semester-controller" + ] } }, "/v1/tables" : { "get" : { - "operationId" : "getBrief", + "operationId" : "getTimetableBriefs", "responses" : { "200" : { "content" : { @@ -4008,10 +4883,23 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] }, "post" : { "operationId" : "addTimetable", + "parameters" : [ + { + "in" : "query", + "name" : "source", + "required" : false, + "schema" : { + "type" : "string" + } + } + ], "requestBody" : { "content" : { "application/json" : { @@ -4019,7 +4907,8 @@ "$ref" : "#/components/schemas/TimetableAddRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -4035,7 +4924,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{timetableId}" : { @@ -4065,7 +4957,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] }, "get" : { "operationId" : "getTimetable", @@ -4090,7 +4985,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] }, "put" : { "operationId" : "modifyTimetable", @@ -4111,7 +5009,8 @@ "$ref" : "#/components/schemas/TimetableModifyRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -4127,7 +5026,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{timetableId}/copy" : { @@ -4157,7 +5059,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{timetableId}/lecture" : { @@ -4165,19 +5070,19 @@ "operationId" : "addCustomLecture", "parameters" : [ { - "description" : "시간 겹치는 강의 강제로 삭제 후 실행", - "in" : "query", - "name" : "isForced", + "in" : "path", + "name" : "timetableId", + "required" : true, "schema" : { "type" : "string" } }, { - "in" : "path", - "name" : "timetableId", - "required" : true, + "in" : "query", + "name" : "isForced", + "required" : false, "schema" : { - "type" : "string" + "type" : "boolean" } } ], @@ -4188,7 +5093,8 @@ "$ref" : "#/components/schemas/CustomTimetableLectureAddLegacyRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -4201,21 +5107,16 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-controller" + ] } }, "/v1/tables/{timetableId}/lecture/{lectureId}" : { "post" : { "operationId" : "addLecture", "parameters" : [ - { - "description" : "시간 겹치는 강의 강제로 삭제 후 실행", - "in" : "query", - "name" : "isForced", - "schema" : { - "type" : "string" - } - }, { "in" : "path", "name" : "timetableId", @@ -4231,8 +5132,25 @@ "schema" : { "type" : "string" } + }, + { + "in" : "query", + "name" : "isForced", + "required" : false, + "schema" : { + "type" : "boolean" + } } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ForcedReq" + } + } + } + }, "responses" : { "200" : { "content" : { @@ -4244,7 +5162,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-controller" + ] } }, "/v1/tables/{timetableId}/lecture/{timetableLectureId}" : { @@ -4278,20 +5199,15 @@ } }, "description" : "OK" - } - } - }, - "put" : { - "operationId" : "modifyTimetableLecture", - "parameters" : [ - { - "description" : "시간 겹치는 강의 강제로 삭제 후 실행", - "in" : "query", - "name" : "isForced", - "schema" : { - "type" : "string" - } - }, + } + }, + "tags" : [ + "timetable-lecture-controller" + ] + }, + "put" : { + "operationId" : "modifyTimetableLecture", + "parameters" : [ { "in" : "path", "name" : "timetableId", @@ -4307,6 +5223,14 @@ "schema" : { "type" : "string" } + }, + { + "in" : "query", + "name" : "isForced", + "required" : false, + "schema" : { + "type" : "boolean" + } } ], "requestBody" : { @@ -4316,7 +5240,8 @@ "$ref" : "#/components/schemas/TimetableLectureModifyLegacyRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -4329,7 +5254,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-controller" + ] } }, "/v1/tables/{timetableId}/lecture/{timetableLectureId}/reminder" : { @@ -4364,7 +5292,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-reminder-controller" + ] }, "put" : { "operationId" : "modifyReminder", @@ -4394,7 +5325,6 @@ } } }, - "description" : "강의 리마인더 설정 옵션 (NONE, TEN_MINUTES_BEFORE, ZERO_MINUTE, TEN_MINUTES_AFTER)", "required" : true }, "responses" : { @@ -4408,21 +5338,16 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-reminder-controller" + ] } }, "/v1/tables/{timetableId}/lecture/{timetableLectureId}/reset" : { "put" : { "operationId" : "resetTimetableLecture", "parameters" : [ - { - "description" : "시간 겹치는 강의 강제로 삭제 후 실행", - "in" : "query", - "name" : "isForced", - "schema" : { - "type" : "string" - } - }, { "in" : "path", "name" : "timetableId", @@ -4438,8 +5363,25 @@ "schema" : { "type" : "string" } + }, + { + "in" : "query", + "name" : "isForced", + "required" : false, + "schema" : { + "type" : "boolean" + } } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ForcedReq" + } + } + } + }, "responses" : { "200" : { "content" : { @@ -4451,7 +5393,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-controller" + ] } }, "/v1/tables/{timetableId}/lecture/reminders" : { @@ -4481,7 +5426,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-reminder-controller" + ] } }, "/v1/tables/{timetableId}/primary" : { @@ -4500,15 +5448,14 @@ "responses" : { "200" : { "content" : { - "application/json" : { - "schema" : { - "type" : "string" - } - } + }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] }, "post" : { "operationId" : "setPrimary", @@ -4525,15 +5472,14 @@ "responses" : { "200" : { "content" : { - "application/json" : { - "schema" : { - "type" : "string" - } - } + }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{timetableId}/theme" : { @@ -4556,7 +5502,8 @@ "$ref" : "#/components/schemas/TimetableModifyThemeRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -4569,7 +5516,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{year}/{semester}" : { @@ -4581,7 +5531,8 @@ "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { @@ -4589,7 +5540,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } } ], @@ -4607,7 +5565,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/recent" : { @@ -4624,7 +5585,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tags/{year}/{semester}" : { @@ -4636,7 +5600,8 @@ "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { @@ -4644,7 +5609,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } } ], @@ -4659,7 +5631,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "tag-controller" + ] } }, "/v1/tags/{year}/{semester}/update_time" : { @@ -4671,7 +5646,8 @@ "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { @@ -4679,7 +5655,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } } ], @@ -4694,22 +5677,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "tag-controller" + ] } }, "/v1/themes" : { "get" : { "operationId" : "getThemes", - "parameters" : [ - { - "in" : "query", - "name" : "state", - "required" : true, - "schema" : { - "type" : "string" - } - } - ], "responses" : { "200" : { "content" : { @@ -4724,7 +5700,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "post" : { "operationId" : "addTheme", @@ -4749,7 +5728,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}" : { @@ -4772,7 +5754,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "get" : { "operationId" : "getTheme", @@ -4789,11 +5774,18 @@ "responses" : { "200" : { "content" : { - + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/TimetableThemeDto" + } + } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "patch" : { "operationId" : "modifyTheme", @@ -4811,7 +5803,7 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/TimetableThemeAddRequestDto" + "$ref" : "#/components/schemas/TimetableThemeModifyRequestDto" } } }, @@ -4828,7 +5820,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}/copy" : { @@ -4855,7 +5850,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}/default" : { @@ -4882,7 +5880,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "post" : { "operationId" : "setDefault", @@ -4907,7 +5908,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}/download" : { @@ -4925,7 +5929,7 @@ ], "requestBody" : { "content" : { - "*/*" : { + "application/json" : { "schema" : { "$ref" : "#/components/schemas/TimetableThemeDownloadRequestDto" } @@ -4944,7 +5948,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}/publish" : { @@ -4967,7 +5974,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "post" : { "operationId" : "publishTheme", @@ -4983,7 +5993,7 @@ ], "requestBody" : { "content" : { - "*/*" : { + "application/json" : { "schema" : { "$ref" : "#/components/schemas/TimetableThemePublishRequestDto" } @@ -4994,11 +6004,18 @@ "responses" : { "200" : { "content" : { - + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/OkResponse" + } + } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/basic/{basicThemeTypeValue}/default" : { @@ -5010,7 +6027,8 @@ "name" : "basicThemeTypeValue", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } } ], @@ -5025,7 +6043,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "post" : { "operationId" : "setBasicThemeTypeDefault", @@ -5035,7 +6056,8 @@ "name" : "basicThemeTypeValue", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } } ], @@ -5050,7 +6072,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/best" : { @@ -5062,7 +6087,8 @@ "name" : "page", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } } ], @@ -5071,34 +6097,51 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/ThemesResponse" + "$ref" : "#/components/schemas/ListResponseTimetableThemeDto" } } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/friends" : { "get" : { "operationId" : "getFriendsThemes", + "parameters" : [ + { + "in" : "query", + "name" : "page", + "required" : true, + "schema" : { + "format" : "int32", + "type" : "integer" + } + } + ], "responses" : { "200" : { "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/ThemesResponse" + "$ref" : "#/components/schemas/ListResponseTimetableThemeDto" } } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/search" : { - "get" : { + "post" : { "operationId" : "searchThemes", "parameters" : [ { @@ -5115,13 +6158,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/ThemesResponse" + "$ref" : "#/components/schemas/ListResponseTimetableThemeDto" } } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/user/account" : { @@ -5138,7 +6184,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/apple" : { @@ -5155,7 +6204,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "attachApple", @@ -5166,7 +6218,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5179,12 +6232,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/device/{id}" : { "delete" : { - "operationId" : "registerLocal_2", + "operationId" : "removeRegistrationId", "parameters" : [ { "in" : "path", @@ -5206,10 +6262,13 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "device-controller" + ] }, "post" : { - "operationId" : "registerLocal_1", + "operationId" : "addRegistrationId", "parameters" : [ { "in" : "path", @@ -5231,7 +6290,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "device-controller" + ] } }, "/v1/user/email/verification" : { @@ -5248,7 +6310,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "get" : { "operationId" : "getEmailVerification", @@ -5263,7 +6328,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "sendVerificationEmail", @@ -5274,7 +6342,8 @@ "$ref" : "#/components/schemas/SendEmailRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5287,7 +6356,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/email/verification/code" : { @@ -5300,7 +6372,8 @@ "$ref" : "#/components/schemas/VerificationCodeRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5313,7 +6386,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/facebook" : { @@ -5330,7 +6406,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "attachFacebook", @@ -5341,7 +6420,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5354,7 +6434,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/google" : { @@ -5371,7 +6454,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "attachGoogle", @@ -5382,7 +6468,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5395,12 +6482,14 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/info" : { "get" : { - "description" : "GET /v1/users/me 사용을 권장", "operationId" : "getUserInfo", "responses" : { "200" : { @@ -5413,7 +6502,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/kakao" : { @@ -5430,7 +6522,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "attachKakao", @@ -5441,7 +6536,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5454,7 +6550,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/password" : { @@ -5467,7 +6566,8 @@ "$ref" : "#/components/schemas/LocalLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5480,7 +6580,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "put" : { "operationId" : "changePassword", @@ -5491,7 +6594,8 @@ "$ref" : "#/components/schemas/PasswordChangeRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5504,7 +6608,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/users/me" : { @@ -5521,7 +6628,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "users-controller" + ] }, "patch" : { "operationId" : "patchUserInfo", @@ -5532,7 +6642,8 @@ "$ref" : "#/components/schemas/UserPatchRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5545,12 +6656,35 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "users-controller" + ] } }, "/v1/users/me/auth-providers" : { "get" : { - "operationId" : "getAuthProviders", + "operationId" : "checkAuthProviders_1", + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/AuthProvidersCheckDto" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "users-controller" + ] + } + }, + "/v1/users/me/social_providers" : { + "get" : { + "operationId" : "checkAuthProviders", "responses" : { "200" : { "content" : { @@ -5562,7 +6696,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "users-controller" + ] } }, "/v1/vacancy-notifications/lectures" : { @@ -5579,7 +6716,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "vacancy-notification-controller" + ] } }, "/v1/vacancy-notifications/lectures/{lectureId}" : { @@ -5602,7 +6742,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "vacancy-notification-controller" + ] }, "post" : { "operationId" : "addVacancyNotification", @@ -5622,44 +6765,11 @@ }, "description" : "OK" - }, - "400" : { - "content" : { - "application/json" : { - "example" : { - "displayMessage" : "이전 학기에는 빈자리 알림을 등록할 수 없습니다.", - "errcode" : 40005, - "message" : "이전 학기에는 빈자리 알림을 등록할 수 없습니다." - } - } - }, - "description" : "이전 학기 강의 등록 시" - }, - "402" : { - "content" : { - "application/json" : { - "example" : { - "displayMessage" : "빈자리 알림 중복", - "errcode" : 40900, - "message" : "빈자리 알림 중복" - } - } - }, - "description" : "빈자리 알림 중복" - }, - "404" : { - "content" : { - "application/json" : { - "example" : { - "displayMessage" : "lecture가 없습니다.", - "errcode" : 16387, - "message" : "lecture가 없습니다." - } - } - }, - "description" : "존재하지 않는 강의 id" } - } + }, + "tags" : [ + "vacancy-notification-controller" + ] } }, "/v1/vacancy-notifications/lectures/{lectureId}/state" : { @@ -5686,40 +6796,10 @@ }, "description" : "OK" } - } - } - }, - "v1/friends/{friendId}/display-name" : { - "patch" : { - "operationId" : "updateFriendDisplayName", - "parameters" : [ - { - "in" : "path", - "name" : "friendId", - "required" : true, - "schema" : { - "type" : "string" - } - } - ], - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/UpdateFriendDisplayNameRequest" - } - } - }, - "required" : true }, - "responses" : { - "200" : { - "content" : { - - }, - "description" : "OK" - } - } + "tags" : [ + "vacancy-notification-controller" + ] } } }, diff --git a/SNUTT/OpenAPI/openapi-prod.json b/SNUTT/OpenAPI/openapi-prod.json index 9ef80585..e5ed8c4f 100644 --- a/SNUTT/OpenAPI/openapi-prod.json +++ b/SNUTT/OpenAPI/openapi-prod.json @@ -126,25 +126,6 @@ ], "type" : "object" }, - "BuildingsResponse" : { - "properties" : { - "content" : { - "items" : { - "$ref" : "#/components/schemas/LectureBuilding" - }, - "type" : "array" - }, - "totalCount" : { - "format" : "int32", - "type" : "integer" - } - }, - "required" : [ - "content", - "totalCount" - ], - "type" : "object" - }, "ClassPlaceAndTimeDto" : { "properties" : { "day" : { @@ -157,6 +138,7 @@ 5, 6 ], + "format" : "int32", "type" : "integer" }, "endMinute" : { @@ -190,6 +172,7 @@ 5, 6 ], + "format" : "int32", "type" : "integer" }, "end_time" : { @@ -241,6 +224,7 @@ 5, 6 ], + "format" : "int32", "type" : "integer" }, "endMinute" : { @@ -316,6 +300,7 @@ 3, 4 ], + "format" : "int32", "type" : "integer" }, "year" : { @@ -356,6 +341,7 @@ 3, 4 ], + "format" : "int32", "type" : "integer" }, "updated_at" : { @@ -374,6 +360,50 @@ ], "type" : "object" }, + "Credential" : { + "properties" : { + "appleEmail" : { + "type" : "string" + }, + "appleSub" : { + "type" : "string" + }, + "appleTransferSub" : { + "type" : "string" + }, + "fbId" : { + "type" : "string" + }, + "fbName" : { + "type" : "string" + }, + "googleEmail" : { + "type" : "string" + }, + "googleSub" : { + "type" : "string" + }, + "kakaoEmail" : { + "type" : "string" + }, + "kakaoSub" : { + "type" : "string" + }, + "localId" : { + "type" : "string" + }, + "localPw" : { + "type" : "string" + }, + "tempDate" : { + "type" : "string" + }, + "tempSeed" : { + "type" : "string" + } + }, + "type" : "object" + }, "CustomTimetableLectureAddLegacyRequestDto" : { "properties" : { "class_time_json" : { @@ -413,7 +443,65 @@ ], "type" : "object" }, - "DiaryActivityDto" : { + "DiaryAddQuestionRequestDto" : { + "properties" : { + "active" : { + "type" : "boolean" + }, + "answers" : { + "items" : { + "type" : "string" + }, + "type" : "array" + }, + "question" : { + "type" : "string" + }, + "shortAnswers" : { + "items" : { + "type" : "string" + }, + "type" : "array" + }, + "shortQuestion" : { + "type" : "string" + }, + "targetDailyClassTypes" : { + "items" : { + "type" : "string" + }, + "type" : "array" + } + }, + "required" : [ + "active", + "answers", + "question", + "shortAnswers", + "shortQuestion", + "targetDailyClassTypes" + ], + "type" : "object" + }, + "DiaryDailyClassType" : { + "properties" : { + "active" : { + "type" : "boolean" + }, + "id" : { + "type" : "string" + }, + "name" : { + "type" : "string" + } + }, + "required" : [ + "active", + "name" + ], + "type" : "object" + }, + "DiaryDailyClassTypeDto" : { "properties" : { "id" : { "type" : "string" @@ -428,7 +516,7 @@ ], "type" : "object" }, - "DiaryAddQuestionRequestDto" : { + "DiaryQuestion" : { "properties" : { "active" : { "type" : "boolean" @@ -439,6 +527,9 @@ }, "type" : "array" }, + "id" : { + "type" : "string" + }, "question" : { "type" : "string" }, @@ -451,7 +542,7 @@ "shortQuestion" : { "type" : "string" }, - "targetActivities" : { + "targetDailyClassTypeIds" : { "items" : { "type" : "string" }, @@ -464,7 +555,7 @@ "question", "shortAnswers", "shortQuestion", - "targetActivities" + "targetDailyClassTypeIds" ], "type" : "object" }, @@ -481,29 +572,42 @@ }, "question" : { "type" : "string" + } + }, + "required" : [ + "answers", + "id", + "question" + ], + "type" : "object" + }, + "DiaryQuestionnaireDto" : { + "properties" : { + "lectureTitle" : { + "type" : "string" }, - "shortAnswers" : { + "nextLectureId" : { + "type" : "string" + }, + "nextLectureTitle" : { + "type" : "string" + }, + "questions" : { "items" : { - "type" : "string" + "$ref" : "#/components/schemas/DiaryQuestionDto" }, "type" : "array" - }, - "shortQuestion" : { - "type" : "string" } }, "required" : [ - "answers", - "id", - "question", - "shortAnswers", - "shortQuestion" + "lectureTitle", + "questions" ], "type" : "object" }, "DiaryQuestionnaireRequestDto" : { "properties" : { - "activities" : { + "dailyClassTypes" : { "items" : { "type" : "string" }, @@ -514,7 +618,7 @@ } }, "required" : [ - "activities", + "dailyClassTypes", "lectureId" ], "type" : "object" @@ -536,15 +640,15 @@ }, "DiarySubmissionRequestDto" : { "properties" : { - "activities" : { + "comment" : { + "type" : "string" + }, + "dailyClassTypes" : { "items" : { "type" : "string" }, "type" : "array" }, - "comment" : { - "type" : "string" - }, "lectureId" : { "type" : "string" }, @@ -556,13 +660,37 @@ } }, "required" : [ - "activities", "comment", + "dailyClassTypes", "lectureId", "questionAnswers" ], "type" : "object" }, + "DiarySubmissionsOfYearSemesterDto" : { + "properties" : { + "semester" : { + "format" : "int32", + "type" : "integer" + }, + "submissions" : { + "items" : { + "$ref" : "#/components/schemas/DiarySubmissionSummaryDto" + }, + "type" : "array" + }, + "year" : { + "format" : "int32", + "type" : "integer" + } + }, + "required" : [ + "semester", + "submissions", + "year" + ], + "type" : "object" + }, "DiarySubmissionSummaryDto" : { "properties" : { "comment" : { @@ -572,6 +700,12 @@ "format" : "date-time", "type" : "string" }, + "id" : { + "type" : "string" + }, + "lectureId" : { + "type" : "string" + }, "lectureTitle" : { "type" : "string" }, @@ -585,6 +719,8 @@ "required" : [ "comment", "date", + "id", + "lectureId", "lectureTitle", "shortQuestionReplies" ], @@ -671,6 +807,56 @@ ], "type" : "object" }, + "ForcedReq" : { + "properties" : { + "is_forced" : { + "type" : "boolean" + } + }, + "type" : "object" + }, + "Friend" : { + "properties" : { + "accepted" : { + "type" : "boolean", + "writeOnly" : true + }, + "createdAt" : { + "format" : "date-time", + "type" : "string" + }, + "fromUserDisplayName" : { + "type" : "string" + }, + "fromUserId" : { + "type" : "string" + }, + "id" : { + "type" : "string" + }, + "isAccepted" : { + "type" : "boolean" + }, + "toUserDisplayName" : { + "type" : "string" + }, + "toUserId" : { + "type" : "string" + }, + "updatedAt" : { + "format" : "date-time", + "type" : "string" + } + }, + "required" : [ + "createdAt", + "fromUserId", + "isAccepted", + "toUserId", + "updatedAt" + ], + "type" : "object" + }, "FriendRequest" : { "properties" : { "nickname" : { @@ -720,25 +906,6 @@ ], "type" : "object" }, - "FriendsResponse" : { - "properties" : { - "content" : { - "items" : { - "$ref" : "#/components/schemas/FriendResponse" - }, - "type" : "array" - }, - "totalCount" : { - "format" : "int32", - "type" : "integer" - } - }, - "required" : [ - "content", - "totalCount" - ], - "type" : "object" - }, "GeoCoordinate" : { "properties" : { "latitude" : { @@ -767,6 +934,20 @@ ], "type" : "object" }, + "GetSemesterStatusResponse" : { + "properties" : { + "current" : { + "$ref" : "#/components/schemas/YearAndSemester" + }, + "next" : { + "$ref" : "#/components/schemas/YearAndSemester" + } + }, + "required" : [ + "next" + ], + "type" : "object" + }, "InsertNotificationRequest" : { "properties" : { "body" : { @@ -781,6 +962,9 @@ "insertFcm" : { "type" : "boolean" }, + "shouldSendAsDataMessage" : { + "type" : "boolean" + }, "title" : { "type" : "string" }, @@ -792,8 +976,10 @@ 3, 4, 5, - 6 + 6, + 7 ], + "format" : "int32", "type" : "integer" }, "userId" : { @@ -804,28 +990,115 @@ "body", "dataPayload", "insertFcm", + "shouldSendAsDataMessage", "title", "type" ], "type" : "object" }, "JsonNode" : { - - }, - "LectureBuilding" : { "properties" : { - "buildingNameEng" : { - "type" : "string" + "array" : { + "type" : "boolean" }, - "buildingNameKor" : { - "type" : "string" + "bigDecimal" : { + "type" : "boolean" }, - "buildingNumber" : { - "type" : "string" + "bigInteger" : { + "type" : "boolean" }, - "campus" : { - "enum" : [ - "GWANAK", + "binary" : { + "type" : "boolean" + }, + "boolean" : { + "type" : "boolean" + }, + "container" : { + "type" : "boolean" + }, + "double" : { + "type" : "boolean" + }, + "embeddedValue" : { + "type" : "boolean" + }, + "empty" : { + "type" : "boolean" + }, + "float" : { + "type" : "boolean" + }, + "floatingPointNumber" : { + "type" : "boolean" + }, + "int" : { + "type" : "boolean" + }, + "integralNumber" : { + "type" : "boolean" + }, + "long" : { + "type" : "boolean" + }, + "missingNode" : { + "type" : "boolean" + }, + "nodeType" : { + "enum" : [ + "ARRAY", + "BINARY", + "BOOLEAN", + "MISSING", + "NULL", + "NUMBER", + "OBJECT", + "POJO", + "STRING" + ], + "type" : "string" + }, + "null" : { + "type" : "boolean" + }, + "number" : { + "type" : "boolean" + }, + "object" : { + "type" : "boolean" + }, + "pojo" : { + "type" : "boolean" + }, + "short" : { + "type" : "boolean" + }, + "string" : { + "type" : "boolean" + }, + "textual" : { + "deprecated" : true, + "type" : "boolean" + }, + "valueNode" : { + "type" : "boolean" + } + }, + "type" : "object" + }, + "LectureBuilding" : { + "properties" : { + "buildingNameEng" : { + "type" : "string" + }, + "buildingNameKor" : { + "type" : "string" + }, + "buildingNumber" : { + "type" : "string" + }, + "campus" : { + "enum" : [ + "GWANAK", "YEONGEON", "PYEONGCHANG" ], @@ -913,6 +1186,7 @@ 3, 4 ], + "format" : "int32", "type" : "integer" }, "snuttEvLecture" : { @@ -939,6 +1213,82 @@ ], "type" : "object" }, + "ListResponseFriendResponse" : { + "properties" : { + "content" : { + "items" : { + "$ref" : "#/components/schemas/FriendResponse" + }, + "type" : "array" + }, + "totalCount" : { + "format" : "int32", + "type" : "integer" + } + }, + "required" : [ + "content", + "totalCount" + ], + "type" : "object" + }, + "ListResponseLectureBuilding" : { + "properties" : { + "content" : { + "items" : { + "$ref" : "#/components/schemas/LectureBuilding" + }, + "type" : "array" + }, + "totalCount" : { + "format" : "int32", + "type" : "integer" + } + }, + "required" : [ + "content", + "totalCount" + ], + "type" : "object" + }, + "ListResponsePopupResponse" : { + "properties" : { + "content" : { + "items" : { + "$ref" : "#/components/schemas/PopupResponse" + }, + "type" : "array" + }, + "totalCount" : { + "format" : "int32", + "type" : "integer" + } + }, + "required" : [ + "content", + "totalCount" + ], + "type" : "object" + }, + "ListResponseTimetableThemeDto" : { + "properties" : { + "content" : { + "items" : { + "$ref" : "#/components/schemas/TimetableThemeDto" + }, + "type" : "array" + }, + "totalCount" : { + "format" : "int32", + "type" : "integer" + } + }, + "required" : [ + "content", + "totalCount" + ], + "type" : "object" + }, "LocalLoginRequest" : { "properties" : { "id" : { @@ -1002,6 +1352,20 @@ ], "type" : "object" }, + "MultiValueMapStringString" : { + "additionalProperties" : { + "items" : { + "type" : "string" + }, + "type" : "array" + }, + "properties" : { + "empty" : { + "type" : "boolean" + } + }, + "type" : "object" + }, "NicknameDto" : { "properties" : { "nickname" : { @@ -1055,8 +1419,10 @@ 3, 4, 5, - 6 + 6, + 7 ], + "format" : "int32", "type" : "integer" }, "user_id" : { @@ -1082,6 +1448,21 @@ ], "type" : "object" }, + "PairFriendUser" : { + "properties" : { + "first" : { + "$ref" : "#/components/schemas/Friend" + }, + "second" : { + "$ref" : "#/components/schemas/User" + } + }, + "required" : [ + "first", + "second" + ], + "type" : "object" + }, "PasswordChangeRequest" : { "properties" : { "new_password" : { @@ -1168,42 +1549,6 @@ ], "type" : "object" }, - "PopupsResponse" : { - "properties" : { - "content" : { - "items" : { - "$ref" : "#/components/schemas/PopupResponse" - }, - "type" : "array" - }, - "totalCount" : { - "format" : "int32", - "type" : "integer" - } - }, - "required" : [ - "content", - "totalCount" - ], - "type" : "object" - }, - "PostConfigRequest" : { - "properties" : { - "data" : { - "$ref" : "#/components/schemas/JsonNode" - }, - "maxVersion" : { - "$ref" : "#/components/schemas/ConfigVersionDto" - }, - "minVersion" : { - "$ref" : "#/components/schemas/ConfigVersionDto" - } - }, - "required" : [ - "data" - ], - "type" : "object" - }, "PostPopupRequest" : { "properties" : { "hiddenDays" : { @@ -1249,7 +1594,8 @@ "enum" : [ "NORMAL", "LECTURE_UPDATE", - "VACANCY_NOTIFICATION" + "VACANCY_NOTIFICATION", + "DIARY" ], "type" : "string" } @@ -1346,6 +1692,7 @@ 3, 4 ], + "format" : "int32", "type" : "integer" }, "sortCriteria" : { @@ -1392,6 +1739,7 @@ 5, 6 ], + "format" : "int32", "type" : "integer" }, "endMinute" : { @@ -1588,25 +1936,6 @@ ], "type" : "object" }, - "ThemesResponse" : { - "properties" : { - "content" : { - "items" : { - "$ref" : "#/components/schemas/TimetableThemeDto" - }, - "type" : "array" - }, - "totalCount" : { - "format" : "int32", - "type" : "integer" - } - }, - "required" : [ - "content", - "totalCount" - ], - "type" : "object" - }, "TimetableAddRequestDto" : { "properties" : { "semester" : { @@ -1616,6 +1945,7 @@ 3, 4 ], + "format" : "int32", "type" : "integer" }, "title" : { @@ -1693,6 +2023,7 @@ 3, 4 ], + "format" : "int32", "type" : "integer" }, "theme" : { @@ -1704,6 +2035,7 @@ 4, 5 ], + "format" : "int32", "type" : "integer" }, "themeId" : { @@ -1935,49 +2267,43 @@ }, "TimetableLectureReminderDto" : { "properties" : { - "id" : { + "courseTitle" : { "type" : "string" }, - "offsetMinutes" : { - "format" : "int32", - "type" : "integer" + "option" : { + "enum" : [ + "NONE", + "TEN_MINUTES_BEFORE", + "ZERO_MINUTE", + "TEN_MINUTES_AFTER" + ], + "type" : "string" }, "timetableLectureId" : { "type" : "string" } }, "required" : [ - "offsetMinutes", + "courseTitle", + "option", "timetableLectureId" ], "type" : "object" }, "TimetableLectureReminderModifyRequestDto" : { "properties" : { - "offsetMinutes" : { - "format" : "int32", - "type" : "integer" - } - }, - "required" : [ - "offsetMinutes" - ], - "type" : "object" - }, - "TimetableLectureRemindersWithTimetableIdResponse" : { - "properties" : { - "reminders" : { - "items" : { - "$ref" : "#/components/schemas/TimetableLectureReminderDto" - }, - "type" : "array" - }, - "timetableId" : { + "option" : { + "enum" : [ + "NONE", + "TEN_MINUTES_BEFORE", + "ZERO_MINUTE", + "TEN_MINUTES_AFTER" + ], "type" : "string" } }, "required" : [ - "reminders" + "option" ], "type" : "object" }, @@ -2002,6 +2328,7 @@ 3, 4 ], + "format" : "int32", "type" : "integer" }, "theme" : { @@ -2013,6 +2340,7 @@ 4, 5 ], + "format" : "int32", "type" : "integer" }, "themeId" : { @@ -2067,6 +2395,7 @@ 4, 5 ], + "format" : "int32", "type" : "integer" }, "themeId" : { @@ -2148,6 +2477,7 @@ 4, 5 ], + "format" : "int32", "type" : "integer" }, "userId" : { @@ -2164,6 +2494,20 @@ ], "type" : "object" }, + "TimetableThemeModifyRequestDto" : { + "properties" : { + "colors" : { + "items" : { + "$ref" : "#/components/schemas/ColorSet" + }, + "type" : "array" + }, + "name" : { + "type" : "string" + } + }, + "type" : "object" + }, "TimetableThemePublishRequestDto" : { "properties" : { "isAnonymous" : { @@ -2201,13 +2545,84 @@ ], "type" : "object" }, - "UserDto" : { + "User" : { "properties" : { - "email" : { - "type" : "string" + "active" : { + "type" : "boolean" }, - "fbName" : { - "type" : "string" + "admin" : { + "type" : "boolean", + "writeOnly" : true + }, + "credential" : { + "$ref" : "#/components/schemas/Credential" + }, + "credentialHash" : { + "type" : "string" + }, + "email" : { + "type" : "string" + }, + "emailVerified" : { + "type" : "boolean", + "writeOnly" : true + }, + "fcmKey" : { + "type" : "string" + }, + "id" : { + "type" : "string" + }, + "isAdmin" : { + "type" : "boolean" + }, + "isEmailVerified" : { + "type" : "boolean" + }, + "lastLoginTimestamp" : { + "format" : "int64", + "type" : "integer" + }, + "nickname" : { + "type" : "string" + }, + "nicknameTag" : { + "format" : "int32", + "type" : "integer" + }, + "nicknameWithoutTag" : { + "type" : "string" + }, + "notificationCheckedAt" : { + "format" : "date-time", + "type" : "string" + }, + "regDate" : { + "format" : "date-time", + "type" : "string" + } + }, + "required" : [ + "active", + "credential", + "credentialHash", + "isAdmin", + "lastLoginTimestamp", + "nickname", + "nicknameTag", + "nicknameWithoutTag", + "notificationCheckedAt", + "regDate" + ], + "type" : "object" + }, + "UserDto" : { + "properties" : { + "email" : { + "type" : "string" + }, + "fbName" : { + "type" : "string" }, "id" : { "type" : "string" @@ -2304,6 +2719,29 @@ "code" ], "type" : "object" + }, + "YearAndSemester" : { + "properties" : { + "semester" : { + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" + }, + "year" : { + "format" : "int32", + "type" : "integer" + } + }, + "required" : [ + "semester", + "year" + ], + "type" : "object" } }, "securitySchemes" : { @@ -2352,7 +2790,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "post" : { "operationId" : "postConfig", @@ -2369,9 +2810,7 @@ "requestBody" : { "content" : { "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/PostConfigRequest" - } + } }, "required" : true @@ -2387,7 +2826,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/configs/{name}/{id}" : { @@ -2413,9 +2855,15 @@ ], "responses" : { "200" : { + "content" : { + + }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "patch" : { "operationId" : "patchConfig", @@ -2458,12 +2906,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, - "/v1/admin/diary/activities" : { + "/v1/admin/diary/dailyClassTypes" : { "delete" : { - "operationId" : "removeDiaryActivity", + "operationId" : "removeDiaryDailyClassType", "parameters" : [ { "in" : "query", @@ -2485,17 +2936,20 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "get" : { - "operationId" : "getAllDiaryActivities", + "operationId" : "getAllDiaryDailyClassTypes", "responses" : { "200" : { "content" : { "application/json" : { "schema" : { "items" : { - "$ref" : "#/components/schemas/DiaryActivityDto" + "$ref" : "#/components/schemas/DiaryDailyClassType" }, "type" : "array" } @@ -2503,10 +2957,13 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "post" : { - "operationId" : "insertDiaryActivity", + "operationId" : "insertDiaryDailyClassType", "parameters" : [ { "in" : "query", @@ -2528,7 +2985,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/diary/questions" : { @@ -2540,7 +3000,7 @@ "application/json" : { "schema" : { "items" : { - "$ref" : "#/components/schemas/DiaryQuestionDto" + "$ref" : "#/components/schemas/DiaryQuestion" }, "type" : "array" } @@ -2548,7 +3008,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] }, "post" : { "operationId" : "insertDiaryQuestion", @@ -2573,7 +3036,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/diary/questions/{id}" : { @@ -2600,7 +3066,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/images/{source}/upload-uris" : { @@ -2618,8 +3087,11 @@ { "in" : "query", "name" : "count", + "required" : false, "schema" : { - "type" : "string" + "default" : 1, + "format" : "int32", + "type" : "integer" } } ], @@ -2637,12 +3109,14 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/insert_noti" : { "post" : { - "description" : "어드민 권한으로 알림 보내기", "operationId" : "insertNotification", "requestBody" : { "content" : { @@ -2652,7 +3126,6 @@ } } }, - "description" : "userId null이면 모든 유저에게 보냄", "required" : true }, "responses" : { @@ -2666,7 +3139,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/popups" : { @@ -2693,7 +3169,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, "/v1/admin/popups/{id}" : { @@ -2711,12 +3190,18 @@ ], "responses" : { "200" : { + "content" : { + + }, "description" : "OK" } - } + }, + "tags" : [ + "admin-controller" + ] } }, - "/v1/auth/find_id" : { + "/v1/auth/id/find" : { "post" : { "operationId" : "findId", "requestBody" : { @@ -2726,7 +3211,8 @@ "$ref" : "#/components/schemas/SendEmailRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2739,7 +3225,40 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] + } + }, + "/v1/auth/login_apple" : { + "post" : { + "operationId" : "loginAppleLegacy", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/SocialLoginRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/LoginResponse" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/login_fb" : { @@ -2752,7 +3271,8 @@ "$ref" : "#/components/schemas/FacebookLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2765,7 +3285,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/login_local" : { @@ -2778,7 +3301,8 @@ "$ref" : "#/components/schemas/LocalLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2791,7 +3315,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/login/apple" : { @@ -2804,7 +3331,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2817,7 +3345,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/login/facebook" : { @@ -2830,7 +3361,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2843,7 +3375,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/login/google" : { @@ -2856,7 +3391,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2869,7 +3405,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/login/kakao" : { @@ -2882,7 +3421,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2895,7 +3435,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/logout" : { @@ -2908,7 +3451,8 @@ "$ref" : "#/components/schemas/LogoutRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2921,7 +3465,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/password/reset" : { @@ -2934,7 +3481,8 @@ "$ref" : "#/components/schemas/PasswordResetRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2947,7 +3495,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/password/reset/email/check" : { @@ -2960,7 +3511,8 @@ "$ref" : "#/components/schemas/GetMaskedEmailRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2973,7 +3525,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/password/reset/email/send" : { @@ -2986,7 +3541,8 @@ "$ref" : "#/components/schemas/SendEmailRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -2999,7 +3555,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/password/reset/verification/code" : { @@ -3012,7 +3571,8 @@ "$ref" : "#/components/schemas/VerificationCodeRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3025,7 +3585,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/auth/register_local" : { @@ -3038,7 +3601,8 @@ "$ref" : "#/components/schemas/LocalRegisterRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3051,19 +3615,23 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "auth-controller" + ] } }, "/v1/bookmarks" : { "get" : { - "operationId" : "getBookmark", + "operationId" : "getBookmarks", "parameters" : [ { "in" : "query", "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { @@ -3071,7 +3639,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } } ], @@ -3086,7 +3661,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "bookmark-controller" + ] } }, "/v1/bookmarks/lecture" : { @@ -3099,7 +3677,8 @@ "$ref" : "#/components/schemas/BookmarkLectureModifyRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3108,7 +3687,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "bookmark-controller" + ] }, "post" : { "operationId" : "addLecture_1", @@ -3119,7 +3701,8 @@ "$ref" : "#/components/schemas/BookmarkLectureModifyRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3128,7 +3711,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "bookmark-controller" + ] } }, "/v1/bookmarks/lectures/{lectureId}/state" : { @@ -3155,7 +3741,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "bookmark-controller" + ] } }, "/v1/buildings" : { @@ -3163,7 +3752,6 @@ "operationId" : "searchBuildings", "parameters" : [ { - "description" : "\n Comma separated list of place codes.\n custom 강의 제외하는 것을 추천\n ", "in" : "query", "name" : "places", "required" : true, @@ -3177,13 +3765,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/BuildingsResponse" + "$ref" : "#/components/schemas/ListResponseLectureBuilding" } } }, "description" : "OK" } - } + }, + "tags" : [ + "building-controller" + ] } }, "/v1/configs" : { @@ -3201,12 +3792,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "config-controller" + ] } }, "/v1/course_books" : { "get" : { - "operationId" : "getAllCoursebooks", + "operationId" : "getCoursebooks_1", "responses" : { "200" : { "content" : { @@ -3221,33 +3815,41 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "coursebook-controller" + ] } }, "/v1/course_books/official" : { "get" : { - "operationId" : "getSyllabusUrl", + "operationId" : "getCoursebookOfficial", "parameters" : [ { - "example" : 2024, "in" : "query", "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { - "example" : 3, "in" : "query", "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } }, { - "example" : "M1522.001400", "in" : "query", "name" : "course_number", "required" : true, @@ -3256,7 +3858,6 @@ } }, { - "example" : "001", "in" : "query", "name" : "lecture_number", "required" : true, @@ -3276,12 +3877,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "coursebook-controller" + ] } }, "/v1/course_books/recent" : { "get" : { - "operationId" : "getMostRecentCoursebook", + "operationId" : "getLatestCoursebook", "responses" : { "200" : { "content" : { @@ -3293,7 +3897,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "coursebook-controller" + ] } }, "/v1/diary" : { @@ -3320,19 +3927,52 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "diary-controller" + ] } }, - "/v1/diary/activities" : { + "/v1/diary/{id}" : { + "delete" : { + "operationId" : "removeDiarySubmission", + "parameters" : [ + { + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/OkResponse" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "diary-controller" + ] + } + }, + "/v1/diary/dailyClassTypes" : { "get" : { - "operationId" : "getActivities", + "operationId" : "getDailyClassTypes", "responses" : { "200" : { "content" : { "application/json" : { "schema" : { "items" : { - "$ref" : "#/components/schemas/DiaryActivityDto" + "$ref" : "#/components/schemas/DiaryDailyClassTypeDto" }, "type" : "array" } @@ -3340,7 +3980,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "diary-controller" + ] } }, "/v1/diary/my" : { @@ -3352,7 +3995,7 @@ "application/json" : { "schema" : { "items" : { - "$ref" : "#/components/schemas/DiarySubmissionSummaryDto" + "$ref" : "#/components/schemas/DiarySubmissionsOfYearSemesterDto" }, "type" : "array" } @@ -3360,12 +4003,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "diary-controller" + ] } }, "/v1/diary/questionnaire" : { "post" : { - "operationId" : "getQuestionnaireFromActivities", + "operationId" : "getQuestionnaireFromDailyClassTypes", "requestBody" : { "content" : { "application/json" : { @@ -3374,23 +4020,260 @@ } } }, - "required" : true - }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/DiaryQuestionnaireDto" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "diary-controller" + ] + } + }, + "/v1/ev-service/{requestPath}" : { + "delete" : { + "operationId" : "handleDelete", + "parameters" : [ + { + "in" : "path", + "name" : "requestPath", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "ev-service-controller" + ] + }, + "get" : { + "operationId" : "handleGet", + "parameters" : [ + { + "in" : "path", + "name" : "requestPath", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "ev-service-controller" + ] + }, + "patch" : { + "operationId" : "handlePatch", + "parameters" : [ + { + "in" : "path", + "name" : "requestPath", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "ev-service-controller" + ] + }, + "post" : { + "operationId" : "handlePost", + "parameters" : [ + { + "in" : "path", + "name" : "requestPath", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "ev-service-controller" + ] + } + }, + "/v1/ev-service/v1/users/me/lectures/latest" : { + "get" : { + "operationId" : "getMyLatestLectures", + "parameters" : [ + { + "in" : "query", + "name" : "queryParams", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/MultiValueMapStringString" + } + }, + { + "in" : "query", + "name" : "limit", + "required" : false, + "schema" : { + "default" : 100, + "format" : "int32", + "type" : "integer" + } + } + ], "responses" : { "200" : { "content" : { "application/json" : { "schema" : { - "items" : { - "$ref" : "#/components/schemas/DiaryQuestionDto" + "additionalProperties" : { + }, - "type" : "array" + "type" : "object" } } }, "description" : "OK" } - } + }, + "tags" : [ + "ev-service-controller" + ] } }, "/v1/ev/lectures/{lectureId}/summary" : { @@ -3398,7 +4281,6 @@ "operationId" : "getLectureEvaluationSummary", "parameters" : [ { - "description" : "snutt lecture id", "in" : "path", "name" : "lectureId", "required" : true, @@ -3418,7 +4300,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "ev-controller" + ] } }, "/v1/feedback" : { @@ -3431,7 +4316,8 @@ "$ref" : "#/components/schemas/FeedbackPostRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3444,7 +4330,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "feedback-controller" + ] } }, "/v1/friends" : { @@ -3465,13 +4354,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/FriendsResponse" + "$ref" : "#/components/schemas/ListResponseFriendResponse" } } }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] }, "post" : { "operationId" : "requestFriend", @@ -3488,15 +4380,14 @@ "responses" : { "200" : { "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/FriendsResponse" - } - } + }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/{friendId}" : { @@ -3519,7 +4410,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/{friendId}/accept" : { @@ -3542,7 +4436,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/{friendId}/coursebooks" : { @@ -3572,7 +4469,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-table-controller" + ] } }, "/v1/friends/{friendId}/decline" : { @@ -3595,7 +4495,46 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] + } + }, + "/v1/friends/{friendId}/display-name" : { + "patch" : { + "operationId" : "updateFriendDisplayName", + "parameters" : [ + { + "in" : "path", + "name" : "friendId", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/UpdateFriendDisplayNameRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + + }, + "description" : "OK" + } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/{friendId}/primary-table" : { @@ -3615,7 +4554,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } }, { @@ -3639,7 +4585,43 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-table-controller" + ] + } + }, + "/v1/friends/{friendId}/registered-course-books" : { + "get" : { + "operationId" : "getCoursebooksLegacy", + "parameters" : [ + { + "in" : "path", + "name" : "friendId", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "items" : { + "$ref" : "#/components/schemas/CoursebookDto" + }, + "type" : "array" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "friend-table-controller" + ] } }, "/v1/friends/accept-link/{requestToken}" : { @@ -3660,13 +4642,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/FriendResponse" + "$ref" : "#/components/schemas/PairFriendUser" } } }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/friends/generate-link" : { @@ -3683,32 +4668,44 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "friend-controller" + ] } }, "/v1/notification" : { "get" : { - "operationId" : "getNotification", + "operationId" : "getNotifications", "parameters" : [ { "in" : "query", "name" : "offset", + "required" : false, "schema" : { - "type" : "string" + "default" : 0, + "format" : "int64", + "type" : "integer" } }, { "in" : "query", "name" : "limit", + "required" : false, "schema" : { - "type" : "string" + "default" : 20, + "format" : "int32", + "type" : "integer" } }, { "in" : "query", "name" : "explicit", + "required" : false, "schema" : { - "type" : "string" + "default" : 0, + "format" : "int32", + "type" : "integer" } } ], @@ -3726,7 +4723,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "notification-controller" + ] } }, "/v1/notification/count" : { @@ -3743,7 +4743,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "notification-controller" + ] } }, "/v1/popups" : { @@ -3754,13 +4757,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/PopupsResponse" + "$ref" : "#/components/schemas/ListResponsePopupResponse" } } }, "description" : "OK" } - } + }, + "tags" : [ + "popup-controller" + ] } }, "/v1/push/preferences" : { @@ -3770,18 +4776,6 @@ "200" : { "content" : { "application/json" : { - "example" : { - "pushPreferences" : [ - { - "isEnabled" : "true", - "type" : "LECTURE_UPDATE" - }, - { - "isEnabled" : "true", - "type" : "VACANCY_NOTIFICATION" - } - ] - }, "schema" : { "$ref" : "#/components/schemas/PushPreferenceDto" } @@ -3789,41 +4783,39 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "push-preference-controller" + ] }, "post" : { "operationId" : "savePushPreferences", "requestBody" : { "content" : { "application/json" : { - "example" : { - "pushPreferences" : [ - { - "isEnabled" : false, - "type" : "LECTURE_UPDATE" - }, - { - "isEnabled" : false, - "type" : "VACANCY_NOTIFICATION" - } - ] - }, "schema" : { "$ref" : "#/components/schemas/PushPreferenceDto" } } - } + }, + "required" : true }, "responses" : { "200" : { + "content" : { + + }, "description" : "OK" } - } + }, + "tags" : [ + "push-preference-controller" + ] } }, "/v1/search_query" : { "post" : { - "operationId" : "searchLecture", + "operationId" : "searchLectures", "requestBody" : { "content" : { "application/json" : { @@ -3831,7 +4823,8 @@ "$ref" : "#/components/schemas/SearchQueryLegacy" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3847,12 +4840,35 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "lecture-search-controller" + ] + } + }, + "/v1/semesters/status" : { + "get" : { + "operationId" : "getSemesterStatus", + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GetSemesterStatusResponse" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "semester-controller" + ] } }, "/v1/tables" : { "get" : { - "operationId" : "getBrief", + "operationId" : "getTimetableBriefs", "responses" : { "200" : { "content" : { @@ -3867,10 +4883,23 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] }, "post" : { "operationId" : "addTimetable", + "parameters" : [ + { + "in" : "query", + "name" : "source", + "required" : false, + "schema" : { + "type" : "string" + } + } + ], "requestBody" : { "content" : { "application/json" : { @@ -3878,7 +4907,8 @@ "$ref" : "#/components/schemas/TimetableAddRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3894,7 +4924,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{timetableId}" : { @@ -3924,7 +4957,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] }, "get" : { "operationId" : "getTimetable", @@ -3949,7 +4985,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] }, "put" : { "operationId" : "modifyTimetable", @@ -3970,7 +5009,8 @@ "$ref" : "#/components/schemas/TimetableModifyRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -3986,7 +5026,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{timetableId}/copy" : { @@ -4016,7 +5059,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{timetableId}/lecture" : { @@ -4024,19 +5070,19 @@ "operationId" : "addCustomLecture", "parameters" : [ { - "description" : "시간 겹치는 강의 강제로 삭제 후 실행", - "in" : "query", - "name" : "isForced", + "in" : "path", + "name" : "timetableId", + "required" : true, "schema" : { "type" : "string" } }, { - "in" : "path", - "name" : "timetableId", - "required" : true, + "in" : "query", + "name" : "isForced", + "required" : false, "schema" : { - "type" : "string" + "type" : "boolean" } } ], @@ -4047,7 +5093,8 @@ "$ref" : "#/components/schemas/CustomTimetableLectureAddLegacyRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -4060,21 +5107,16 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-controller" + ] } }, "/v1/tables/{timetableId}/lecture/{lectureId}" : { "post" : { "operationId" : "addLecture", "parameters" : [ - { - "description" : "시간 겹치는 강의 강제로 삭제 후 실행", - "in" : "query", - "name" : "isForced", - "schema" : { - "type" : "string" - } - }, { "in" : "path", "name" : "timetableId", @@ -4090,8 +5132,25 @@ "schema" : { "type" : "string" } + }, + { + "in" : "query", + "name" : "isForced", + "required" : false, + "schema" : { + "type" : "boolean" + } } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ForcedReq" + } + } + } + }, "responses" : { "200" : { "content" : { @@ -4103,7 +5162,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-controller" + ] } }, "/v1/tables/{timetableId}/lecture/{timetableLectureId}" : { @@ -4138,19 +5200,14 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-controller" + ] }, "put" : { "operationId" : "modifyTimetableLecture", "parameters" : [ - { - "description" : "시간 겹치는 강의 강제로 삭제 후 실행", - "in" : "query", - "name" : "isForced", - "schema" : { - "type" : "string" - } - }, { "in" : "path", "name" : "timetableId", @@ -4166,6 +5223,14 @@ "schema" : { "type" : "string" } + }, + { + "in" : "query", + "name" : "isForced", + "required" : false, + "schema" : { + "type" : "boolean" + } } ], "requestBody" : { @@ -4175,7 +5240,8 @@ "$ref" : "#/components/schemas/TimetableLectureModifyLegacyRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -4188,12 +5254,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-controller" + ] } }, "/v1/tables/{timetableId}/lecture/{timetableLectureId}/reminder" : { - "delete" : { - "operationId" : "deleteReminder", + "get" : { + "operationId" : "getReminder", "parameters" : [ { "in" : "path", @@ -4217,16 +5286,19 @@ "content" : { "application/json" : { "schema" : { - "type" : "string" + "$ref" : "#/components/schemas/TimetableLectureReminderDto" } } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-reminder-controller" + ] }, - "get" : { - "operationId" : "getReminder", + "put" : { + "operationId" : "modifyReminder", "parameters" : [ { "in" : "path", @@ -4245,6 +5317,16 @@ } } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/TimetableLectureReminderModifyRequestDto" + } + } + }, + "required" : true + }, "responses" : { "200" : { "content" : { @@ -4256,10 +5338,15 @@ }, "description" : "OK" } - } - }, + }, + "tags" : [ + "timetable-lecture-reminder-controller" + ] + } + }, + "/v1/tables/{timetableId}/lecture/{timetableLectureId}/reset" : { "put" : { - "operationId" : "modifyReminder", + "operationId" : "resetTimetableLecture", "parameters" : [ { "in" : "path", @@ -4276,45 +5363,46 @@ "schema" : { "type" : "string" } + }, + { + "in" : "query", + "name" : "isForced", + "required" : false, + "schema" : { + "type" : "boolean" + } } ], "requestBody" : { "content" : { - "*/*" : { + "application/json" : { "schema" : { - "$ref" : "#/components/schemas/TimetableLectureReminderModifyRequestDto" + "$ref" : "#/components/schemas/ForcedReq" } } - }, - "description" : "강의 시작 시각으로부터 알림을 받을 시간의 오프셋(분)", - "required" : true + } }, "responses" : { "200" : { "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/TimetableLectureReminderDto" + "$ref" : "#/components/schemas/TimetableLegacyDto" } } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-controller" + ] } }, - "/v1/tables/{timetableId}/lecture/{timetableLectureId}/reset" : { - "put" : { - "operationId" : "resetTimetableLecture", + "/v1/tables/{timetableId}/lecture/reminders" : { + "get" : { + "operationId" : "getReminders", "parameters" : [ - { - "description" : "시간 겹치는 강의 강제로 삭제 후 실행", - "in" : "query", - "name" : "isForced", - "schema" : { - "type" : "string" - } - }, { "in" : "path", "name" : "timetableId", @@ -4322,14 +5410,6 @@ "schema" : { "type" : "string" } - }, - { - "in" : "path", - "name" : "timetableLectureId", - "required" : true, - "schema" : { - "type" : "string" - } } ], "responses" : { @@ -4337,13 +5417,19 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/TimetableLegacyDto" + "items" : { + "$ref" : "#/components/schemas/TimetableLectureReminderDto" + }, + "type" : "array" } } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-lecture-reminder-controller" + ] } }, "/v1/tables/{timetableId}/primary" : { @@ -4362,15 +5448,14 @@ "responses" : { "200" : { "content" : { - "application/json" : { - "schema" : { - "type" : "string" - } - } + }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] }, "post" : { "operationId" : "setPrimary", @@ -4387,15 +5472,14 @@ "responses" : { "200" : { "content" : { - "application/json" : { - "schema" : { - "type" : "string" - } - } + }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{timetableId}/theme" : { @@ -4418,7 +5502,8 @@ "$ref" : "#/components/schemas/TimetableModifyThemeRequestDto" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -4431,7 +5516,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/{year}/{semester}" : { @@ -4443,7 +5531,8 @@ "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { @@ -4451,7 +5540,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } } ], @@ -4469,24 +5565,10 @@ }, "description" : "OK" } - } - } - }, - "/v1/tables/active-semester/primary/lecture/reminders" : { - "get" : { - "operationId" : "getRemindersInActiveSemesterPrimaryTimetable", - "responses" : { - "200" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/TimetableLectureRemindersWithTimetableIdResponse" - } - } - }, - "description" : "OK" - } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tables/recent" : { @@ -4503,7 +5585,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-controller" + ] } }, "/v1/tags/{year}/{semester}" : { @@ -4515,7 +5600,8 @@ "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { @@ -4523,7 +5609,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } } ], @@ -4538,7 +5631,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "tag-controller" + ] } }, "/v1/tags/{year}/{semester}/update_time" : { @@ -4550,7 +5646,8 @@ "name" : "year", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } }, { @@ -4558,7 +5655,14 @@ "name" : "semester", "required" : true, "schema" : { - "type" : "string" + "enum" : [ + 1, + 2, + 3, + 4 + ], + "format" : "int32", + "type" : "integer" } } ], @@ -4573,22 +5677,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "tag-controller" + ] } }, "/v1/themes" : { "get" : { "operationId" : "getThemes", - "parameters" : [ - { - "in" : "query", - "name" : "state", - "required" : true, - "schema" : { - "type" : "string" - } - } - ], "responses" : { "200" : { "content" : { @@ -4603,7 +5700,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "post" : { "operationId" : "addTheme", @@ -4628,7 +5728,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}" : { @@ -4651,7 +5754,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "get" : { "operationId" : "getTheme", @@ -4668,11 +5774,18 @@ "responses" : { "200" : { "content" : { - + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/TimetableThemeDto" + } + } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "patch" : { "operationId" : "modifyTheme", @@ -4690,7 +5803,7 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/TimetableThemeAddRequestDto" + "$ref" : "#/components/schemas/TimetableThemeModifyRequestDto" } } }, @@ -4707,7 +5820,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}/copy" : { @@ -4734,7 +5850,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}/default" : { @@ -4761,7 +5880,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "post" : { "operationId" : "setDefault", @@ -4786,7 +5908,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}/download" : { @@ -4804,7 +5929,7 @@ ], "requestBody" : { "content" : { - "*/*" : { + "application/json" : { "schema" : { "$ref" : "#/components/schemas/TimetableThemeDownloadRequestDto" } @@ -4823,7 +5948,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/{themeId}/publish" : { @@ -4846,7 +5974,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "post" : { "operationId" : "publishTheme", @@ -4862,7 +5993,7 @@ ], "requestBody" : { "content" : { - "*/*" : { + "application/json" : { "schema" : { "$ref" : "#/components/schemas/TimetableThemePublishRequestDto" } @@ -4873,11 +6004,18 @@ "responses" : { "200" : { "content" : { - + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/OkResponse" + } + } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/basic/{basicThemeTypeValue}/default" : { @@ -4889,7 +6027,8 @@ "name" : "basicThemeTypeValue", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } } ], @@ -4904,7 +6043,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] }, "post" : { "operationId" : "setBasicThemeTypeDefault", @@ -4914,7 +6056,8 @@ "name" : "basicThemeTypeValue", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } } ], @@ -4929,7 +6072,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/best" : { @@ -4941,7 +6087,8 @@ "name" : "page", "required" : true, "schema" : { - "type" : "string" + "format" : "int32", + "type" : "integer" } } ], @@ -4950,34 +6097,51 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/ThemesResponse" + "$ref" : "#/components/schemas/ListResponseTimetableThemeDto" } } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/friends" : { "get" : { "operationId" : "getFriendsThemes", + "parameters" : [ + { + "in" : "query", + "name" : "page", + "required" : true, + "schema" : { + "format" : "int32", + "type" : "integer" + } + } + ], "responses" : { "200" : { "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/ThemesResponse" + "$ref" : "#/components/schemas/ListResponseTimetableThemeDto" } } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/themes/search" : { - "get" : { + "post" : { "operationId" : "searchThemes", "parameters" : [ { @@ -4994,13 +6158,16 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/ThemesResponse" + "$ref" : "#/components/schemas/ListResponseTimetableThemeDto" } } }, "description" : "OK" } - } + }, + "tags" : [ + "timetable-theme-controller" + ] } }, "/v1/user/account" : { @@ -5017,7 +6184,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/apple" : { @@ -5034,7 +6204,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "attachApple", @@ -5045,7 +6218,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5058,12 +6232,15 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/device/{id}" : { "delete" : { - "operationId" : "registerLocal_2", + "operationId" : "removeRegistrationId", "parameters" : [ { "in" : "path", @@ -5085,10 +6262,13 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "device-controller" + ] }, "post" : { - "operationId" : "registerLocal_1", + "operationId" : "addRegistrationId", "parameters" : [ { "in" : "path", @@ -5110,7 +6290,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "device-controller" + ] } }, "/v1/user/email/verification" : { @@ -5127,7 +6310,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "get" : { "operationId" : "getEmailVerification", @@ -5142,7 +6328,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "sendVerificationEmail", @@ -5153,7 +6342,8 @@ "$ref" : "#/components/schemas/SendEmailRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5166,7 +6356,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/email/verification/code" : { @@ -5179,7 +6372,8 @@ "$ref" : "#/components/schemas/VerificationCodeRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5192,7 +6386,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/facebook" : { @@ -5209,7 +6406,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "attachFacebook", @@ -5220,7 +6420,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5233,7 +6434,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/google" : { @@ -5250,7 +6454,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "attachGoogle", @@ -5261,7 +6468,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5274,12 +6482,14 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/info" : { "get" : { - "description" : "GET /v1/users/me 사용을 권장", "operationId" : "getUserInfo", "responses" : { "200" : { @@ -5292,7 +6502,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/kakao" : { @@ -5309,7 +6522,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "post" : { "operationId" : "attachKakao", @@ -5320,7 +6536,8 @@ "$ref" : "#/components/schemas/SocialLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5333,7 +6550,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/user/password" : { @@ -5346,7 +6566,8 @@ "$ref" : "#/components/schemas/LocalLoginRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5359,7 +6580,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] }, "put" : { "operationId" : "changePassword", @@ -5370,7 +6594,8 @@ "$ref" : "#/components/schemas/PasswordChangeRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5383,7 +6608,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "user-controller" + ] } }, "/v1/users/me" : { @@ -5400,7 +6628,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "users-controller" + ] }, "patch" : { "operationId" : "patchUserInfo", @@ -5411,7 +6642,8 @@ "$ref" : "#/components/schemas/UserPatchRequest" } } - } + }, + "required" : true }, "responses" : { "200" : { @@ -5424,12 +6656,35 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "users-controller" + ] } }, "/v1/users/me/auth-providers" : { "get" : { - "operationId" : "getAuthProviders", + "operationId" : "checkAuthProviders_1", + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/AuthProvidersCheckDto" + } + } + }, + "description" : "OK" + } + }, + "tags" : [ + "users-controller" + ] + } + }, + "/v1/users/me/social_providers" : { + "get" : { + "operationId" : "checkAuthProviders", "responses" : { "200" : { "content" : { @@ -5441,7 +6696,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "users-controller" + ] } }, "/v1/vacancy-notifications/lectures" : { @@ -5458,7 +6716,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "vacancy-notification-controller" + ] } }, "/v1/vacancy-notifications/lectures/{lectureId}" : { @@ -5481,7 +6742,10 @@ }, "description" : "OK" } - } + }, + "tags" : [ + "vacancy-notification-controller" + ] }, "post" : { "operationId" : "addVacancyNotification", @@ -5501,44 +6765,11 @@ }, "description" : "OK" - }, - "400" : { - "content" : { - "application/json" : { - "example" : { - "displayMessage" : "이전 학기에는 빈자리 알림을 등록할 수 없습니다.", - "errcode" : 40005, - "message" : "이전 학기에는 빈자리 알림을 등록할 수 없습니다." - } - } - }, - "description" : "이전 학기 강의 등록 시" - }, - "402" : { - "content" : { - "application/json" : { - "example" : { - "displayMessage" : "빈자리 알림 중복", - "errcode" : 40900, - "message" : "빈자리 알림 중복" - } - } - }, - "description" : "빈자리 알림 중복" - }, - "404" : { - "content" : { - "application/json" : { - "example" : { - "displayMessage" : "lecture가 없습니다.", - "errcode" : 16387, - "message" : "lecture가 없습니다." - } - } - }, - "description" : "존재하지 않는 강의 id" } - } + }, + "tags" : [ + "vacancy-notification-controller" + ] } }, "/v1/vacancy-notifications/lectures/{lectureId}/state" : { @@ -5565,40 +6796,10 @@ }, "description" : "OK" } - } - } - }, - "v1/friends/{friendId}/display-name" : { - "patch" : { - "operationId" : "updateFriendDisplayName", - "parameters" : [ - { - "in" : "path", - "name" : "friendId", - "required" : true, - "schema" : { - "type" : "string" - } - } - ], - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/UpdateFriendDisplayNameRequest" - } - } - }, - "required" : true }, - "responses" : { - "200" : { - "content" : { - - }, - "description" : "OK" - } - } + "tags" : [ + "vacancy-notification-controller" + ] } } },