From 78e91546b17f5c88fb536ff2faca6dd82ebe5bef Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 9 Aug 2024 00:42:42 +0900 Subject: [PATCH 01/37] =?UTF-8?q?feat:=20getMe=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stop/user/controller/UserController.java | 26 ++++++++++ .../stop/user/dto/response/UserResponse.java | 50 +++++++++++++++++++ .../scg/stop/user/service/UserService.java | 48 ++++++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 src/main/java/com/scg/stop/user/controller/UserController.java create mode 100644 src/main/java/com/scg/stop/user/dto/response/UserResponse.java create mode 100644 src/main/java/com/scg/stop/user/service/UserService.java diff --git a/src/main/java/com/scg/stop/user/controller/UserController.java b/src/main/java/com/scg/stop/user/controller/UserController.java new file mode 100644 index 00000000..5dbadb2f --- /dev/null +++ b/src/main/java/com/scg/stop/user/controller/UserController.java @@ -0,0 +1,26 @@ +package com.scg.stop.user.controller; + +import com.scg.stop.auth.annotation.AuthUser; +import com.scg.stop.user.domain.AccessType; +import com.scg.stop.user.domain.User; +import com.scg.stop.user.dto.response.UserResponse; +import com.scg.stop.user.service.UserService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/users") +public class UserController { + + private final UserService userService; + + @GetMapping("/me") + public ResponseEntity getMe(@AuthUser(accessType = {AccessType.ALL}) User user) { + UserResponse userResponse = userService.getUserProfile(user); + return ResponseEntity.ok(userResponse); + } +} diff --git a/src/main/java/com/scg/stop/user/dto/response/UserResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserResponse.java new file mode 100644 index 00000000..8d08b3fe --- /dev/null +++ b/src/main/java/com/scg/stop/user/dto/response/UserResponse.java @@ -0,0 +1,50 @@ +package com.scg.stop.user.dto.response; + +import static lombok.AccessLevel.PRIVATE; + +import com.scg.stop.user.domain.Application; +import com.scg.stop.user.domain.Student; +import com.scg.stop.user.domain.User; +import com.scg.stop.user.domain.UserType; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Getter +@NoArgsConstructor(access = PRIVATE) +@AllArgsConstructor(access = PRIVATE) +@Builder +public class UserResponse { + private Long id; + private String name; + private String phone; + private String email; + private String socialLoginId; + private UserType userType; + private String division; // UserType.PROFESSOR, UserType.COMPANY + private String position; // UserType.PROFESSOR, UserType.COMPANY + private String studentNumber; // UserType.STUDENT + private String departmentName; // UserType.STUDENT + private LocalDateTime createdAt; + private LocalDateTime updatedAt; + + public static UserResponse of(User user, String division, String position, String studentNumber, String departmentName) { + return new UserResponse( + user.getId(), + user.getName(), + user.getPhone(), + user.getEmail(), + user.getSocialLoginId(), + user.getUserType(), + division, + position, + studentNumber, + departmentName, + user.getCreatedAt(), + user.getUpdatedAt() + ); + } +} diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java new file mode 100644 index 00000000..26f410b5 --- /dev/null +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -0,0 +1,48 @@ +package com.scg.stop.user.service; + +import com.scg.stop.user.domain.User; +import com.scg.stop.user.domain.UserType; +import com.scg.stop.user.dto.response.UserResponse; +import com.scg.stop.user.repository.UserRepository; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +@Transactional +public class UserService { + + private final UserRepository userRepository; + + public UserResponse getUserProfile(User user) { + UserType userType = user.getUserType(); + if (userType == UserType.PROFESSOR || userType == UserType.COMPANY) { + return UserResponse.of( + user, + user.getApplication().getDivision(), + user.getApplication().getPosition(), + null, + null + ); + } + else if (userType == UserType.STUDENT) { + return UserResponse.of( + user, + null, + null, + user.getStudentInfo().getStudentNumber(), + user.getStudentInfo().getDepartment().getName() + ); + } + else { + return UserResponse.of( + user, + null, + null, + null, + null + ); + } + } +} From d8c9626b9a0e4546abbcbb034be1a666cca42cb4 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 9 Aug 2024 13:26:44 +0900 Subject: [PATCH 02/37] =?UTF-8?q?refactor:=20userService=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/scg/stop/user/service/UserService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 26f410b5..bd97ddd5 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -15,7 +15,7 @@ public class UserService { private final UserRepository userRepository; - public UserResponse getUserProfile(User user) { + public UserResponse getMe(User user) { UserType userType = user.getUserType(); if (userType == UserType.PROFESSOR || userType == UserType.COMPANY) { return UserResponse.of( From ecc3cefc95de1e3b96983890efc618f325b924e8 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 9 Aug 2024 13:50:40 +0900 Subject: [PATCH 03/37] =?UTF-8?q?feat:=20updateMe=20api=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stop/user/controller/UserController.java | 16 ++++++++--- .../com/scg/stop/user/domain/Application.java | 8 ++++++ .../com/scg/stop/user/domain/Department.java | 4 +++ .../com/scg/stop/user/domain/Student.java | 4 +++ .../java/com/scg/stop/user/domain/User.java | 13 +++++++++ .../user/dto/request/UserUpdateRequest.java | 25 +++++++++++++++++ .../scg/stop/user/service/UserService.java | 27 +++++++++++++++++++ 7 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java diff --git a/src/main/java/com/scg/stop/user/controller/UserController.java b/src/main/java/com/scg/stop/user/controller/UserController.java index 5dbadb2f..b7f2b436 100644 --- a/src/main/java/com/scg/stop/user/controller/UserController.java +++ b/src/main/java/com/scg/stop/user/controller/UserController.java @@ -3,13 +3,12 @@ import com.scg.stop.auth.annotation.AuthUser; import com.scg.stop.user.domain.AccessType; import com.scg.stop.user.domain.User; +import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.service.UserService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @@ -20,7 +19,16 @@ public class UserController { @GetMapping("/me") public ResponseEntity getMe(@AuthUser(accessType = {AccessType.ALL}) User user) { - UserResponse userResponse = userService.getUserProfile(user); + UserResponse userResponse = userService.getMe(user); return ResponseEntity.ok(userResponse); } + + @PatchMapping("/me") + public ResponseEntity updateMe( + @AuthUser(accessType = {AccessType.ALL}) User user, + @RequestBody UserUpdateRequest request + ) { + UserResponse updatedUserResponse = userService.updateMe(user, request); + return ResponseEntity.ok(updatedUserResponse); + } } diff --git a/src/main/java/com/scg/stop/user/domain/Application.java b/src/main/java/com/scg/stop/user/domain/Application.java index fc7c1b08..17b6b179 100644 --- a/src/main/java/com/scg/stop/user/domain/Application.java +++ b/src/main/java/com/scg/stop/user/domain/Application.java @@ -37,4 +37,12 @@ public Application(String division, String position, User user) { this.position = position; this.user = user; } + + public void updateDivision(String newDivision) { + this.division = newDivision; + } + + public void updatePosition(String newPosition) { + this.position = newPosition; + } } diff --git a/src/main/java/com/scg/stop/user/domain/Department.java b/src/main/java/com/scg/stop/user/domain/Department.java index 550bb49e..6a32401e 100644 --- a/src/main/java/com/scg/stop/user/domain/Department.java +++ b/src/main/java/com/scg/stop/user/domain/Department.java @@ -29,4 +29,8 @@ public class Department extends BaseTimeEntity { @OneToMany(fetch = LAZY, mappedBy = "department") private List students = new ArrayList<>(); + + public void updateName(String newName) { + this.name = newName; + } } diff --git a/src/main/java/com/scg/stop/user/domain/Student.java b/src/main/java/com/scg/stop/user/domain/Student.java index ad46cb66..cb3f916f 100644 --- a/src/main/java/com/scg/stop/user/domain/Student.java +++ b/src/main/java/com/scg/stop/user/domain/Student.java @@ -50,4 +50,8 @@ public static Student of(String studentNumber, User user, Department department) .department(department) .build(); } + + public void updateStudentNumber(String newStudentNumber) { + this.studentNumber = newStudentNumber; + } } diff --git a/src/main/java/com/scg/stop/user/domain/User.java b/src/main/java/com/scg/stop/user/domain/User.java index 8eb1bc03..7a13f731 100644 --- a/src/main/java/com/scg/stop/user/domain/User.java +++ b/src/main/java/com/scg/stop/user/domain/User.java @@ -92,4 +92,17 @@ public void register(String name, String email, String phone, UserType userType, this.userType = userType; this.signupSource = signupSource; } + + public void updateName(String newName) { + this.name = newName; + } + + public void updatePhone(String newPhone) { + this.phone = newPhone; + } + + public void updateEmail(String newEmail) { + this.email = newEmail; + } + } diff --git a/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java new file mode 100644 index 00000000..a8a9509c --- /dev/null +++ b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java @@ -0,0 +1,25 @@ +package com.scg.stop.user.dto.request; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import static lombok.AccessLevel.PRIVATE; + +@Getter +@NoArgsConstructor(access = PRIVATE) +@AllArgsConstructor +public class UserUpdateRequest { + + private String name; + private String phone; + private String email; + + // UserType.PROFESSOR, UserType.COMPANY + private String division; + private String position; + + // UserType.STUDENT + private String studentNumber; + private String departmentName; +} diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index bd97ddd5..f7b85581 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -2,6 +2,7 @@ import com.scg.stop.user.domain.User; import com.scg.stop.user.domain.UserType; +import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.repository.UserRepository; import jakarta.transaction.Transactional; @@ -45,4 +46,30 @@ else if (userType == UserType.STUDENT) { ); } } + + public UserResponse updateMe(User user, UserUpdateRequest request) { + if (request.getName() != null) user.updateName(request.getName()); + if (request.getPhone() != null) user.updatePhone(request.getPhone()); + if (request.getEmail() != null) user.updateEmail(request.getEmail()); + + if (user.getUserType() == UserType.PROFESSOR || user.getUserType() == UserType.COMPANY) { + if (request.getDivision() != null) user.getApplication().updateDivision(request.getDivision()); + if (request.getPosition() != null) user.getApplication().updatePosition(request.getPosition()); + } + + if (user.getUserType() == UserType.STUDENT) { + if (request.getStudentNumber() != null) user.getStudentInfo().updateStudentNumber(request.getStudentNumber()); + if (request.getDepartmentName() != null) user.getStudentInfo().getDepartment().updateName(request.getDepartmentName()); + } + + userRepository.save(user); + + return UserResponse.of( + user, + user.getApplication() != null ? user.getApplication().getDivision() : null, + user.getApplication() != null ? user.getApplication().getPosition() : null, + user.getStudentInfo() != null ? user.getStudentInfo().getStudentNumber() : null, + user.getStudentInfo() != null ? user.getStudentInfo().getDepartment().getName() : null + ); + } } From 08648cb5206d40c291844d404451be469a39d504 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 9 Aug 2024 18:06:31 +0900 Subject: [PATCH 04/37] =?UTF-8?q?feat:=20deleteMe=20api=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stop/domain/project/domain/Comment.java | 4 +++ .../stop/domain/project/domain/Inquiry.java | 4 +++ .../scg/stop/domain/project/domain/Likes.java | 4 +++ .../stop/domain/proposal/domain/Proposal.java | 4 +++ .../stop/user/controller/UserController.java | 6 +++++ .../java/com/scg/stop/user/domain/User.java | 27 ++++++++++--------- .../scg/stop/user/service/UserService.java | 4 +++ 7 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/scg/stop/domain/project/domain/Comment.java b/src/main/java/com/scg/stop/domain/project/domain/Comment.java index 88b85f28..a19c98aa 100644 --- a/src/main/java/com/scg/stop/domain/project/domain/Comment.java +++ b/src/main/java/com/scg/stop/domain/project/domain/Comment.java @@ -37,4 +37,8 @@ public class Comment extends BaseTimeEntity { @ManyToOne(fetch = LAZY) @JoinColumn(name = "user_id") private User user; + + public void setUser(User user) { + this.user = user; + } } \ No newline at end of file diff --git a/src/main/java/com/scg/stop/domain/project/domain/Inquiry.java b/src/main/java/com/scg/stop/domain/project/domain/Inquiry.java index fc86a1e5..b87d6b85 100644 --- a/src/main/java/com/scg/stop/domain/project/domain/Inquiry.java +++ b/src/main/java/com/scg/stop/domain/project/domain/Inquiry.java @@ -41,4 +41,8 @@ public class Inquiry extends BaseTimeEntity { @OneToOne(fetch = LAZY, mappedBy = "inquiry") private InquiryResponse response; + + public void setUser(User user) { + this.user = user; + } } diff --git a/src/main/java/com/scg/stop/domain/project/domain/Likes.java b/src/main/java/com/scg/stop/domain/project/domain/Likes.java index 12c58566..baa35bc7 100644 --- a/src/main/java/com/scg/stop/domain/project/domain/Likes.java +++ b/src/main/java/com/scg/stop/domain/project/domain/Likes.java @@ -30,4 +30,8 @@ public class Likes extends BaseTimeEntity { @ManyToOne(fetch = LAZY) @JoinColumn(name = "user_id") private User user; + + public void setUser(User user) { + this.user = user; + } } diff --git a/src/main/java/com/scg/stop/domain/proposal/domain/Proposal.java b/src/main/java/com/scg/stop/domain/proposal/domain/Proposal.java index 49245a8b..c0a510b9 100644 --- a/src/main/java/com/scg/stop/domain/proposal/domain/Proposal.java +++ b/src/main/java/com/scg/stop/domain/proposal/domain/Proposal.java @@ -55,4 +55,8 @@ public class Proposal extends BaseTimeEntity { @OneToOne(fetch = LAZY, mappedBy = "proposal") private ProposalResponse proposalResponse; + + public void setUser(User user) { + this.user = user; + } } diff --git a/src/main/java/com/scg/stop/user/controller/UserController.java b/src/main/java/com/scg/stop/user/controller/UserController.java index b7f2b436..6f0f453a 100644 --- a/src/main/java/com/scg/stop/user/controller/UserController.java +++ b/src/main/java/com/scg/stop/user/controller/UserController.java @@ -31,4 +31,10 @@ public ResponseEntity updateMe( UserResponse updatedUserResponse = userService.updateMe(user, request); return ResponseEntity.ok(updatedUserResponse); } + + @DeleteMapping("/me") + public ResponseEntity deleteMe(@AuthUser(accessType = {AccessType.ALL}) User user) { + userService.deleteMe(user); + return ResponseEntity.noContent().build(); + } } diff --git a/src/main/java/com/scg/stop/user/domain/User.java b/src/main/java/com/scg/stop/user/domain/User.java index 7a13f731..3acf958f 100644 --- a/src/main/java/com/scg/stop/user/domain/User.java +++ b/src/main/java/com/scg/stop/user/domain/User.java @@ -14,13 +14,8 @@ import com.scg.stop.domain.video.domain.FavoriteVideo; import com.scg.stop.domain.video.domain.UserQuiz; import com.scg.stop.global.domain.BaseTimeEntity; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Enumerated; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; -import jakarta.persistence.OneToMany; -import jakarta.persistence.OneToOne; +import jakarta.persistence.*; + import java.util.ArrayList; import java.util.List; import lombok.Getter; @@ -53,25 +48,25 @@ public class User extends BaseTimeEntity { private String signupSource; - @OneToOne(fetch = LAZY, mappedBy = "user") + @OneToOne(fetch = LAZY, mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private Application application; - @OneToOne(fetch = LAZY, mappedBy = "user") + @OneToOne(fetch = LAZY, mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private Student studentInfo; @OneToMany(fetch = LAZY, mappedBy = "user") private List proposals = new ArrayList<>(); - @OneToMany(fetch = LAZY, mappedBy = "user") + @OneToMany(fetch = LAZY, mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List userQuizzes = new ArrayList<>(); - @OneToMany(fetch = LAZY, mappedBy = "user") + @OneToMany(fetch = LAZY, mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List favoriteVideos = new ArrayList<>(); @OneToMany(fetch = LAZY, mappedBy = "user") private List likes = new ArrayList<>(); - @OneToMany(mappedBy = "user") + @OneToMany(fetch = LAZY, mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List favoriteProjects = new ArrayList<>(); @OneToMany(fetch = LAZY, mappedBy = "user") @@ -93,6 +88,14 @@ public void register(String name, String email, String phone, UserType userType, this.signupSource = signupSource; } + @PreRemove + private void preRemove() { + proposals.forEach(proposal -> proposal.setUser(null)); + likes.forEach(like -> like.setUser(null)); + comments.forEach(comment -> comment.setUser(null)); + inquiries.forEach(inquiry -> inquiry.setUser(null)); + } + public void updateName(String newName) { this.name = newName; } diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index f7b85581..71497299 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -72,4 +72,8 @@ public UserResponse updateMe(User user, UserUpdateRequest request) { user.getStudentInfo() != null ? user.getStudentInfo().getDepartment().getName() : null ); } + + public void deleteMe(User user) { + userRepository.delete(user); + } } From e8c67da74902dfaf2c4ceba01a35af1232c8ca6d Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 9 Aug 2024 23:49:07 +0900 Subject: [PATCH 05/37] =?UTF-8?q?feat:=20getMe=20test,=20restDocs=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stop/user/dto/response/UserResponse.java | 2 +- .../user/controller/UserControllerTest.java | 91 +++++++++++++++++++ 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/scg/stop/user/controller/UserControllerTest.java diff --git a/src/main/java/com/scg/stop/user/dto/response/UserResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserResponse.java index 8d08b3fe..1321e59e 100644 --- a/src/main/java/com/scg/stop/user/dto/response/UserResponse.java +++ b/src/main/java/com/scg/stop/user/dto/response/UserResponse.java @@ -15,7 +15,7 @@ @Getter @NoArgsConstructor(access = PRIVATE) -@AllArgsConstructor(access = PRIVATE) +@AllArgsConstructor @Builder public class UserResponse { private Long id; diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java new file mode 100644 index 00000000..026c48e6 --- /dev/null +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -0,0 +1,91 @@ +package com.scg.stop.user.controller; + +import com.scg.stop.configuration.AbstractControllerTest; +import com.scg.stop.user.domain.User; +import com.scg.stop.user.domain.UserType; +import com.scg.stop.user.dto.response.UserResponse; +import com.scg.stop.user.service.UserService; +import jakarta.servlet.http.Cookie; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext; +import org.springframework.http.HttpHeaders; +import org.springframework.restdocs.payload.JsonFieldType; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; + +import java.time.LocalDateTime; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@WebMvcTest(controllers = UserController.class) +@MockBean(JpaMetamodelMappingContext.class) +@AutoConfigureRestDocs +class UserControllerTest extends AbstractControllerTest { + + private static final String ACCESS_TOKEN = "admin_access_token"; + private static final String REFRESH_TOKEN = "refresh_token"; + + @MockBean + private UserService userService; + + @Autowired + private MockMvc mockMvc; + + @Test + @DisplayName("사용자 정보를 조회할 수 있다.") + void getMe() throws Exception { + // given + UserResponse response = new UserResponse( + 1L, + "이름", + "010-1234-5678", + "student@g.skku.edu", + "아이디", + UserType.STUDENT, + null, + null, + "2000123456", + "학과", + LocalDateTime.now(), + LocalDateTime.now() + ); + when(userService.getMe(any(User.class))).thenReturn(response); + + // when + ResultActions result = mockMvc.perform( + get("/users/me") + .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) + .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) + ); + + // then + result.andExpect(status().isOk()) + .andDo(restDocs.document( + responseFields( + fieldWithPath("id").type(JsonFieldType.NUMBER).description("사용자 ID"), + fieldWithPath("name").type(JsonFieldType.STRING).description("사용자 이름"), + fieldWithPath("phone").type(JsonFieldType.STRING).description("사용자 전화번호"), + fieldWithPath("email").type(JsonFieldType.STRING).description("사용자 이메일"), + fieldWithPath("socialLoginId").type(JsonFieldType.STRING).description("사용자 이메일"), + fieldWithPath("userType").type(JsonFieldType.STRING).description("사용자 유형"), + fieldWithPath("division").type(JsonFieldType.STRING).description("소속").optional(), + fieldWithPath("position").type(JsonFieldType.STRING).description("직책").optional(), + fieldWithPath("studentNumber").type(JsonFieldType.STRING).description("학번").optional(), + fieldWithPath("departmentName").type(JsonFieldType.STRING).description("학과 이름").optional(), + fieldWithPath("createdAt").type(JsonFieldType.STRING).description("생성일"), + fieldWithPath("updatedAt").type(JsonFieldType.STRING).description("수정일") + ) + )); + } + +} From da1a64d3093371af172b85dfa43fdf0a60626035 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Sat, 10 Aug 2024 00:08:16 +0900 Subject: [PATCH 06/37] =?UTF-8?q?feat:=20updateMe=20test,=20restDocs=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/UserControllerTest.java | 80 ++++++++++++++++++- 1 file changed, 77 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 026c48e6..56589e7d 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -1,8 +1,10 @@ package com.scg.stop.user.controller; +import com.fasterxml.jackson.databind.ObjectMapper; import com.scg.stop.configuration.AbstractControllerTest; import com.scg.stop.user.domain.User; import com.scg.stop.user.domain.UserType; +import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.service.UserService; import jakarta.servlet.http.Cookie; @@ -14,6 +16,7 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext; import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; @@ -22,9 +25,9 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; -import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; -import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; +import static org.springframework.restdocs.payload.PayloadDocumentation.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @WebMvcTest(controllers = UserController.class) @@ -32,7 +35,7 @@ @AutoConfigureRestDocs class UserControllerTest extends AbstractControllerTest { - private static final String ACCESS_TOKEN = "admin_access_token"; + private static final String ACCESS_TOKEN = "user_access_token"; private static final String REFRESH_TOKEN = "refresh_token"; @MockBean @@ -41,6 +44,9 @@ class UserControllerTest extends AbstractControllerTest { @Autowired private MockMvc mockMvc; + @Autowired + private ObjectMapper objectMapper; + @Test @DisplayName("사용자 정보를 조회할 수 있다.") void getMe() throws Exception { @@ -88,4 +94,72 @@ void getMe() throws Exception { )); } + @Test + @DisplayName("사용자 정보를 수정할 수 있다.") + void updateMe() throws Exception { + // given + UserUpdateRequest request = new UserUpdateRequest( + "이름", + "010-1234-5678", + "student@g.skku.edu", + null, + null, + "2000123456", + "학과" + ); + UserResponse response = new UserResponse( + 1L, + "이름", + "010-1234-5678", + "student@g.skku.edu", + "아이디", + UserType.STUDENT, + null, + null, + "2000123456", + "학과", + LocalDateTime.now(), + LocalDateTime.now() + ); + + when(userService.updateMe(any(User.class), any(UserUpdateRequest.class))).thenReturn(response); + + // when + ResultActions result = mockMvc.perform( + patch("/users/me") + .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) + .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(request)) + ); + + // then + result.andExpect(status().isOk()) + .andDo(restDocs.document( + requestFields( + fieldWithPath("name").type(JsonFieldType.STRING).description("이름").optional(), + fieldWithPath("phone").type(JsonFieldType.STRING).description("전화번호").optional(), + fieldWithPath("email").type(JsonFieldType.STRING).description("이메일").optional(), + fieldWithPath("division").type(JsonFieldType.STRING).description("소속").optional(), + fieldWithPath("position").type(JsonFieldType.STRING).description("직책").optional(), + fieldWithPath("studentNumber").type(JsonFieldType.STRING).description("학번").optional(), + fieldWithPath("departmentName").type(JsonFieldType.STRING).description("학과").optional() + ), + responseFields( + fieldWithPath("id").type(JsonFieldType.NUMBER).description("사용자 ID"), + fieldWithPath("name").type(JsonFieldType.STRING).description("사용자 이름"), + fieldWithPath("phone").type(JsonFieldType.STRING).description("사용자 전화번호"), + fieldWithPath("email").type(JsonFieldType.STRING).description("사용자 이메일"), + fieldWithPath("socialLoginId").type(JsonFieldType.STRING).description("사용자 이메일"), + fieldWithPath("userType").type(JsonFieldType.STRING).description("사용자 유형"), + fieldWithPath("division").type(JsonFieldType.STRING).description("소속").optional(), + fieldWithPath("position").type(JsonFieldType.STRING).description("직책").optional(), + fieldWithPath("studentNumber").type(JsonFieldType.STRING).description("학번").optional(), + fieldWithPath("departmentName").type(JsonFieldType.STRING).description("학과 이름").optional(), + fieldWithPath("createdAt").type(JsonFieldType.STRING).description("생성일"), + fieldWithPath("updatedAt").type(JsonFieldType.STRING).description("수정일") + ) + )); + } + } From 3563c533e94b0fa90176aad169f81ae683416b0c Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Sat, 10 Aug 2024 00:12:36 +0900 Subject: [PATCH 07/37] =?UTF-8?q?feat:=20deleteMe=20test,=20restDocs=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/UserControllerTest.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 56589e7d..ed54b326 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -24,10 +24,10 @@ import java.time.LocalDateTime; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.when; import static org.springframework.restdocs.payload.PayloadDocumentation.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @WebMvcTest(controllers = UserController.class) @@ -162,4 +162,22 @@ void updateMe() throws Exception { )); } + @Test + @DisplayName("사용자 계정을 삭제할 수 있다.") + void deleteMe() throws Exception { + // given + doNothing().when(userService).deleteMe(any(User.class)); + + // when + ResultActions result = mockMvc.perform( + delete("/users/me") + .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) + .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) + ); + + // then + result.andExpect(status().isNoContent()) + .andDo(restDocs.document()); + } + } From be219756d0cfa8679f362a2752fb0b159bae6456 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Sun, 11 Aug 2024 22:30:19 +0900 Subject: [PATCH 08/37] =?UTF-8?q?feat:=20restDocs=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/index.adoc | 2 +- src/docs/asciidoc/user-controller-test.adoc | 19 ++++++++++++ .../user/controller/UserControllerTest.java | 31 ++++++++++++++++++- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/docs/asciidoc/user-controller-test.adoc diff --git a/src/docs/asciidoc/index.adoc b/src/docs/asciidoc/index.adoc index f5df7db7..19a59b53 100644 --- a/src/docs/asciidoc/index.adoc +++ b/src/docs/asciidoc/index.adoc @@ -6,4 +6,4 @@ :seclinks: include::auth-controller-test.adoc[] -// include::eventPeriod.adoc[] 컨트롤러별로 주석 지우고 문서 추가 \ No newline at end of file +include::user-controller-test.adoc[] \ No newline at end of file diff --git a/src/docs/asciidoc/user-controller-test.adoc b/src/docs/asciidoc/user-controller-test.adoc new file mode 100644 index 00000000..c451eac0 --- /dev/null +++ b/src/docs/asciidoc/user-controller-test.adoc @@ -0,0 +1,19 @@ +== 유저 API +:source-highlighter: highlightjs + +--- + +=== 로그인 유저 기본 정보 조회 (GET /users/me) +==== +operation::user-controller-test/get-me[snippets="http-request,request-cookies,request-headers,http-response,response-fields"] +==== + +=== 로그인 유저 기본 정보 수정 (PATCH /users/me) +==== +operation::user-controller-test/update-me[snippets="http-request,request-cookies,request-headers,request-fields,http-response,response-fields"] +==== + +=== 유저 탈퇴 (DELETE /users/me) +==== +operation::user-controller-test/delete-me[snippets="http-request,request-cookies,request-headers,http-response"] +==== diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index ed54b326..5846c905 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -26,6 +26,10 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.when; +import static org.springframework.restdocs.cookies.CookieDocumentation.cookieWithName; +import static org.springframework.restdocs.cookies.CookieDocumentation.requestCookies; +import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; +import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders; import static org.springframework.restdocs.payload.PayloadDocumentation.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -77,6 +81,14 @@ void getMe() throws Exception { // then result.andExpect(status().isOk()) .andDo(restDocs.document( + requestCookies( + cookieWithName("refresh-token") + .description("갱신 토큰") + ), + requestHeaders( + headerWithName("Authorization") + .description("access token") + ), responseFields( fieldWithPath("id").type(JsonFieldType.NUMBER).description("사용자 ID"), fieldWithPath("name").type(JsonFieldType.STRING).description("사용자 이름"), @@ -136,6 +148,14 @@ void updateMe() throws Exception { // then result.andExpect(status().isOk()) .andDo(restDocs.document( + requestCookies( + cookieWithName("refresh-token") + .description("갱신 토큰") + ), + requestHeaders( + headerWithName("Authorization") + .description("access token") + ), requestFields( fieldWithPath("name").type(JsonFieldType.STRING).description("이름").optional(), fieldWithPath("phone").type(JsonFieldType.STRING).description("전화번호").optional(), @@ -177,7 +197,16 @@ void deleteMe() throws Exception { // then result.andExpect(status().isNoContent()) - .andDo(restDocs.document()); + .andDo(restDocs.document( + requestCookies( + cookieWithName("refresh-token") + .description("갱신 토큰") + ), + requestHeaders( + headerWithName("Authorization") + .description("access token") + ) + )); } } From 8282e39f38895deab558749eedcad17e9ceb40fd Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:35:48 +0900 Subject: [PATCH 09/37] =?UTF-8?q?feat:=20UpdateUserRequest=20validation=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stop/global/exception/ExceptionCode.java | 4 ++- .../user/dto/request/UserUpdateRequest.java | 29 +++++++++++++++++-- .../scg/stop/user/service/UserService.java | 6 ++++ .../user/controller/UserControllerTest.java | 2 ++ 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/scg/stop/global/exception/ExceptionCode.java b/src/main/java/com/scg/stop/global/exception/ExceptionCode.java index 7b813fa6..00420152 100644 --- a/src/main/java/com/scg/stop/global/exception/ExceptionCode.java +++ b/src/main/java/com/scg/stop/global/exception/ExceptionCode.java @@ -22,7 +22,9 @@ public enum ExceptionCode { REGISTER_NOT_FINISHED(4001, "회원가입이 필요합니다."), NOT_AUTHORIZED(4002, "유저 권한이 존재하지 않습니다."), NOT_FOUND_DEPARTMENT(4003, "학과가 존재하지 않습니다."), - INVALID_STUDENTINFO(4004, "학과/학번 정보가 존재하지 않습니다."); + INVALID_STUDENTINFO(4004, "학과/학번 정보가 존재하지 않습니다."), + + UNABLE_TO_EDIT_USER_TYPE(4100, "회원 유형은 수정할 수 없습니다."); private final int code; private final String message; diff --git a/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java index a8a9509c..5919061f 100644 --- a/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java +++ b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java @@ -1,6 +1,8 @@ package com.scg.stop.user.dto.request; -import lombok.AllArgsConstructor; +import com.scg.stop.global.exception.BadRequestException; +import com.scg.stop.global.exception.ExceptionCode; +import com.scg.stop.user.domain.UserType; import lombok.Getter; import lombok.NoArgsConstructor; @@ -8,13 +10,14 @@ @Getter @NoArgsConstructor(access = PRIVATE) -@AllArgsConstructor public class UserUpdateRequest { private String name; private String phone; private String email; + private UserType userType; + // UserType.PROFESSOR, UserType.COMPANY private String division; private String position; @@ -22,4 +25,26 @@ public class UserUpdateRequest { // UserType.STUDENT private String studentNumber; private String departmentName; + + public UserUpdateRequest(String name, String phone, String email, UserType userType, + String division, String position, String studentNumber, String departmentName) { + validateStudentInfo(userType, studentNumber, departmentName); + this.name = name; + this.phone = phone; + this.email = email; + this.userType = userType; + this.division = division; + this.position = position; + this.studentNumber = studentNumber; + this.departmentName = departmentName; + } + + private void validateStudentInfo(UserType userType, String studentNumber, String departmentName) { + if(userType.equals(UserType.STUDENT)){ + if(studentNumber == null || departmentName == null){ + throw new BadRequestException(ExceptionCode.INVALID_STUDENTINFO); + } + } + } + } diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 71497299..9d1917ae 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -1,5 +1,7 @@ package com.scg.stop.user.service; +import com.scg.stop.global.exception.BadRequestException; +import com.scg.stop.global.exception.ExceptionCode; import com.scg.stop.user.domain.User; import com.scg.stop.user.domain.UserType; import com.scg.stop.user.dto.request.UserUpdateRequest; @@ -48,6 +50,10 @@ else if (userType == UserType.STUDENT) { } public UserResponse updateMe(User user, UserUpdateRequest request) { + if (request.getUserType() != user.getUserType()) { + throw new BadRequestException(ExceptionCode.UNABLE_TO_EDIT_USER_TYPE); + } + if (request.getName() != null) user.updateName(request.getName()); if (request.getPhone() != null) user.updatePhone(request.getPhone()); if (request.getEmail() != null) user.updateEmail(request.getEmail()); diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 5846c905..18b327a8 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -114,6 +114,7 @@ void updateMe() throws Exception { "이름", "010-1234-5678", "student@g.skku.edu", + UserType.STUDENT, null, null, "2000123456", @@ -160,6 +161,7 @@ void updateMe() throws Exception { fieldWithPath("name").type(JsonFieldType.STRING).description("이름").optional(), fieldWithPath("phone").type(JsonFieldType.STRING).description("전화번호").optional(), fieldWithPath("email").type(JsonFieldType.STRING).description("이메일").optional(), + fieldWithPath("userType").type(JsonFieldType.STRING).description("회원 유형"), fieldWithPath("division").type(JsonFieldType.STRING).description("소속").optional(), fieldWithPath("position").type(JsonFieldType.STRING).description("직책").optional(), fieldWithPath("studentNumber").type(JsonFieldType.STRING).description("학번").optional(), From a7bf2119854deffc9299aa73df7e267af37f97ee Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Thu, 15 Aug 2024 22:46:09 +0900 Subject: [PATCH 10/37] =?UTF-8?q?fix:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=8B=9C=20=EC=97=B0=EA=B4=80=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20=EC=82=AD=EC=A0=9C=EB=90=98=EB=8A=94=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/scg/stop/auth/service/AuthService.java | 2 ++ src/main/java/com/scg/stop/user/domain/User.java | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/com/scg/stop/auth/service/AuthService.java b/src/main/java/com/scg/stop/auth/service/AuthService.java index d62b950d..9b8e6fca 100644 --- a/src/main/java/com/scg/stop/auth/service/AuthService.java +++ b/src/main/java/com/scg/stop/auth/service/AuthService.java @@ -65,12 +65,14 @@ public RegisterResponse finishRegister(User user, RegisterRequest registerReques user , department); studentRepository.save(student); + user.updateStudentInfo(student); } else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR) .contains(registerRequest.getUserType())) { Application application = new Application(registerRequest.getDivision(), registerRequest.getPosition(), user); applicationRepository.save(application); + user.updateApplication(application); } user.register(registerRequest.getName(), registerRequest.getEmail(), diff --git a/src/main/java/com/scg/stop/user/domain/User.java b/src/main/java/com/scg/stop/user/domain/User.java index 3acf958f..646bb39a 100644 --- a/src/main/java/com/scg/stop/user/domain/User.java +++ b/src/main/java/com/scg/stop/user/domain/User.java @@ -88,6 +88,14 @@ public void register(String name, String email, String phone, UserType userType, this.signupSource = signupSource; } + public void updateStudentInfo(Student studentInfo) { + this.studentInfo = studentInfo; + } + + public void updateApplication(Application application) { + this.application = application; + } + @PreRemove private void preRemove() { proposals.forEach(proposal -> proposal.setUser(null)); From 1583db0fe3af0cf15d5a9fa64cdc9a1f4eda9d1f Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 16 Aug 2024 12:09:39 +0900 Subject: [PATCH 11/37] =?UTF-8?q?fix:=20INACTIVE=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=ED=8F=AC=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scg/stop/user/service/UserService.java | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 9d1917ae..a553abe0 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -2,40 +2,45 @@ import com.scg.stop.global.exception.BadRequestException; import com.scg.stop.global.exception.ExceptionCode; +import com.scg.stop.user.domain.Department; +import com.scg.stop.user.domain.Student; import com.scg.stop.user.domain.User; import com.scg.stop.user.domain.UserType; import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.UserResponse; +import com.scg.stop.user.repository.DepartmentRepository; import com.scg.stop.user.repository.UserRepository; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Arrays; + @Service @RequiredArgsConstructor @Transactional public class UserService { private final UserRepository userRepository; + private final DepartmentRepository departmentRepository; public UserResponse getMe(User user) { - UserType userType = user.getUserType(); - if (userType == UserType.PROFESSOR || userType == UserType.COMPANY) { + if (user.getUserType().equals(UserType.STUDENT)) { return UserResponse.of( user, - user.getApplication().getDivision(), - user.getApplication().getPosition(), null, - null + null, + user.getStudentInfo().getStudentNumber(), + user.getStudentInfo().getDepartment().getName() ); } - else if (userType == UserType.STUDENT) { + else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { return UserResponse.of( user, + user.getApplication().getDivision(), + user.getApplication().getPosition(), null, - null, - user.getStudentInfo().getStudentNumber(), - user.getStudentInfo().getDepartment().getName() + null ); } else { @@ -58,16 +63,16 @@ public UserResponse updateMe(User user, UserUpdateRequest request) { if (request.getPhone() != null) user.updatePhone(request.getPhone()); if (request.getEmail() != null) user.updateEmail(request.getEmail()); - if (user.getUserType() == UserType.PROFESSOR || user.getUserType() == UserType.COMPANY) { - if (request.getDivision() != null) user.getApplication().updateDivision(request.getDivision()); - if (request.getPosition() != null) user.getApplication().updatePosition(request.getPosition()); - } - - if (user.getUserType() == UserType.STUDENT) { + if (user.getUserType().equals(UserType.STUDENT)) { if (request.getStudentNumber() != null) user.getStudentInfo().updateStudentNumber(request.getStudentNumber()); if (request.getDepartmentName() != null) user.getStudentInfo().getDepartment().updateName(request.getDepartmentName()); } + if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { + if (request.getDivision() != null) user.getApplication().updateDivision(request.getDivision()); + if (request.getPosition() != null) user.getApplication().updatePosition(request.getPosition()); + } + userRepository.save(user); return UserResponse.of( From 1d980394a0469f2689bb06612b1e95331bfa1e4f Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 16 Aug 2024 12:26:34 +0900 Subject: [PATCH 12/37] =?UTF-8?q?fix:=20getMe=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=ED=95=99=EA=B3=BC=EC=A0=95=EB=B3=B4=20=ED=99=95=EC=9D=B8?= =?UTF-8?q?=ED=95=A0=20=EB=95=8C=20=EC=98=A4=EB=A5=98=EB=82=98=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/scg/stop/user/service/UserService.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index a553abe0..1ecbaf99 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -26,12 +26,16 @@ public class UserService { public UserResponse getMe(User user) { if (user.getUserType().equals(UserType.STUDENT)) { + Student studentInfo = user.getStudentInfo(); + Department department = departmentRepository.findById(studentInfo.getDepartment().getId()) + .orElseThrow(() -> new BadRequestException(ExceptionCode.NOT_FOUND_DEPARTMENT)); + return UserResponse.of( user, null, null, - user.getStudentInfo().getStudentNumber(), - user.getStudentInfo().getDepartment().getName() + studentInfo.getStudentNumber(), + department.getName() ); } else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { From ae767c7b0d3bb45a7c150290fff3c242bf7d732a Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 16 Aug 2024 15:23:53 +0900 Subject: [PATCH 13/37] =?UTF-8?q?fix:=20updateMe=20=EA=B3=B5=EB=B0=B1=20?= =?UTF-8?q?=EB=B0=A9=EC=A7=80,=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/scg/stop/user/domain/Student.java | 4 +++ .../user/dto/request/UserUpdateRequest.java | 27 ++++------------ .../scg/stop/user/service/UserService.java | 31 +++++++++++-------- .../user/controller/UserControllerTest.java | 2 -- 4 files changed, 28 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/scg/stop/user/domain/Student.java b/src/main/java/com/scg/stop/user/domain/Student.java index cb3f916f..8844928e 100644 --- a/src/main/java/com/scg/stop/user/domain/Student.java +++ b/src/main/java/com/scg/stop/user/domain/Student.java @@ -54,4 +54,8 @@ public static Student of(String studentNumber, User user, Department department) public void updateStudentNumber(String newStudentNumber) { this.studentNumber = newStudentNumber; } + + public void updateDepartment(Department newDepartment) { + this.department = newDepartment; + } } diff --git a/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java index 5919061f..8286b27d 100644 --- a/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java +++ b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java @@ -2,22 +2,22 @@ import com.scg.stop.global.exception.BadRequestException; import com.scg.stop.global.exception.ExceptionCode; -import com.scg.stop.user.domain.UserType; +import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import static io.micrometer.common.util.StringUtils.isBlank; import static lombok.AccessLevel.PRIVATE; @Getter @NoArgsConstructor(access = PRIVATE) +@AllArgsConstructor public class UserUpdateRequest { private String name; private String phone; private String email; - private UserType userType; - // UserType.PROFESSOR, UserType.COMPANY private String division; private String position; @@ -26,24 +26,9 @@ public class UserUpdateRequest { private String studentNumber; private String departmentName; - public UserUpdateRequest(String name, String phone, String email, UserType userType, - String division, String position, String studentNumber, String departmentName) { - validateStudentInfo(userType, studentNumber, departmentName); - this.name = name; - this.phone = phone; - this.email = email; - this.userType = userType; - this.division = division; - this.position = position; - this.studentNumber = studentNumber; - this.departmentName = departmentName; - } - - private void validateStudentInfo(UserType userType, String studentNumber, String departmentName) { - if(userType.equals(UserType.STUDENT)){ - if(studentNumber == null || departmentName == null){ - throw new BadRequestException(ExceptionCode.INVALID_STUDENTINFO); - } + public void validateStudentInfo() { + if (isBlank(this.studentNumber) || isBlank(this.departmentName)) { + throw new BadRequestException(ExceptionCode.INVALID_STUDENTINFO); } } diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 1ecbaf99..083ebd3b 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -8,7 +8,9 @@ import com.scg.stop.user.domain.UserType; import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.UserResponse; +import com.scg.stop.user.repository.ApplicationRepository; import com.scg.stop.user.repository.DepartmentRepository; +import com.scg.stop.user.repository.StudentRepository; import com.scg.stop.user.repository.UserRepository; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; @@ -16,6 +18,8 @@ import java.util.Arrays; +import static io.micrometer.common.util.StringUtils.isNotBlank; + @Service @RequiredArgsConstructor @Transactional @@ -59,22 +63,23 @@ else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.I } public UserResponse updateMe(User user, UserUpdateRequest request) { - if (request.getUserType() != user.getUserType()) { - throw new BadRequestException(ExceptionCode.UNABLE_TO_EDIT_USER_TYPE); - } - - if (request.getName() != null) user.updateName(request.getName()); - if (request.getPhone() != null) user.updatePhone(request.getPhone()); - if (request.getEmail() != null) user.updateEmail(request.getEmail()); + if (isNotBlank(request.getName())) user.updateName(request.getName()); + if (isNotBlank(request.getPhone())) user.updatePhone(request.getPhone()); + if (isNotBlank(request.getEmail())) user.updateEmail(request.getEmail()); if (user.getUserType().equals(UserType.STUDENT)) { - if (request.getStudentNumber() != null) user.getStudentInfo().updateStudentNumber(request.getStudentNumber()); - if (request.getDepartmentName() != null) user.getStudentInfo().getDepartment().updateName(request.getDepartmentName()); - } + request.validateStudentInfo(); - if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { - if (request.getDivision() != null) user.getApplication().updateDivision(request.getDivision()); - if (request.getPosition() != null) user.getApplication().updatePosition(request.getPosition()); + Department department = departmentRepository.findByName( + request.getDepartmentName()) + .orElseThrow(() -> new BadRequestException(ExceptionCode.NOT_FOUND_DEPARTMENT)); + + user.getStudentInfo().updateStudentNumber(request.getStudentNumber()); + user.getStudentInfo().updateDepartment(department); + } + else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { + if (isNotBlank(request.getDivision())) user.getApplication().updateDivision(request.getDivision()); + if (isNotBlank(request.getPosition())) user.getApplication().updatePosition(request.getPosition()); } userRepository.save(user); diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 18b327a8..5846c905 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -114,7 +114,6 @@ void updateMe() throws Exception { "이름", "010-1234-5678", "student@g.skku.edu", - UserType.STUDENT, null, null, "2000123456", @@ -161,7 +160,6 @@ void updateMe() throws Exception { fieldWithPath("name").type(JsonFieldType.STRING).description("이름").optional(), fieldWithPath("phone").type(JsonFieldType.STRING).description("전화번호").optional(), fieldWithPath("email").type(JsonFieldType.STRING).description("이메일").optional(), - fieldWithPath("userType").type(JsonFieldType.STRING).description("회원 유형"), fieldWithPath("division").type(JsonFieldType.STRING).description("소속").optional(), fieldWithPath("position").type(JsonFieldType.STRING).description("직책").optional(), fieldWithPath("studentNumber").type(JsonFieldType.STRING).description("학번").optional(), From a98a8cd4b9bc8742cadf817c0681cb40d7f68ea1 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Sat, 17 Aug 2024 23:38:38 +0900 Subject: [PATCH 14/37] =?UTF-8?q?feat:=20updateMe=20patch=EC=97=90?= =?UTF-8?q?=EC=84=9C=20put=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/user-controller-test.adoc | 2 +- .../java/com/scg/stop/user/controller/UserController.java | 5 +++-- .../com/scg/stop/user/dto/request/UserUpdateRequest.java | 7 +++++++ .../com/scg/stop/user/controller/UserControllerTest.java | 8 ++++---- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/docs/asciidoc/user-controller-test.adoc b/src/docs/asciidoc/user-controller-test.adoc index c451eac0..a8313db4 100644 --- a/src/docs/asciidoc/user-controller-test.adoc +++ b/src/docs/asciidoc/user-controller-test.adoc @@ -8,7 +8,7 @@ operation::user-controller-test/get-me[snippets="http-request,request-cookies,request-headers,http-response,response-fields"] ==== -=== 로그인 유저 기본 정보 수정 (PATCH /users/me) +=== 로그인 유저 기본 정보 수정 (PUT /users/me) ==== operation::user-controller-test/update-me[snippets="http-request,request-cookies,request-headers,request-fields,http-response,response-fields"] ==== diff --git a/src/main/java/com/scg/stop/user/controller/UserController.java b/src/main/java/com/scg/stop/user/controller/UserController.java index 6f0f453a..e44a20c7 100644 --- a/src/main/java/com/scg/stop/user/controller/UserController.java +++ b/src/main/java/com/scg/stop/user/controller/UserController.java @@ -6,6 +6,7 @@ import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.service.UserService; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -23,10 +24,10 @@ public ResponseEntity getMe(@AuthUser(accessType = {AccessType.ALL return ResponseEntity.ok(userResponse); } - @PatchMapping("/me") + @PutMapping("/me") public ResponseEntity updateMe( @AuthUser(accessType = {AccessType.ALL}) User user, - @RequestBody UserUpdateRequest request + @RequestBody @Valid UserUpdateRequest request ) { UserResponse updatedUserResponse = userService.updateMe(user, request); return ResponseEntity.ok(updatedUserResponse); diff --git a/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java index 8286b27d..5897b330 100644 --- a/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java +++ b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java @@ -2,6 +2,8 @@ import com.scg.stop.global.exception.BadRequestException; import com.scg.stop.global.exception.ExceptionCode; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -14,8 +16,13 @@ @AllArgsConstructor public class UserUpdateRequest { + @NotBlank(message = "이름을 입력해주세요.") private String name; + + @NotBlank(message = "전화번호를 입력해주세요.") private String phone; + + @NotBlank(message = "이메일을 입력해주세요.") private String email; // UserType.PROFESSOR, UserType.COMPANY diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 5846c905..414e041f 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -138,7 +138,7 @@ void updateMe() throws Exception { // when ResultActions result = mockMvc.perform( - patch("/users/me") + put("/users/me") .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) .contentType(MediaType.APPLICATION_JSON) @@ -157,9 +157,9 @@ void updateMe() throws Exception { .description("access token") ), requestFields( - fieldWithPath("name").type(JsonFieldType.STRING).description("이름").optional(), - fieldWithPath("phone").type(JsonFieldType.STRING).description("전화번호").optional(), - fieldWithPath("email").type(JsonFieldType.STRING).description("이메일").optional(), + fieldWithPath("name").type(JsonFieldType.STRING).description("이름"), + fieldWithPath("phone").type(JsonFieldType.STRING).description("전화번호"), + fieldWithPath("email").type(JsonFieldType.STRING).description("이메일"), fieldWithPath("division").type(JsonFieldType.STRING).description("소속").optional(), fieldWithPath("position").type(JsonFieldType.STRING).description("직책").optional(), fieldWithPath("studentNumber").type(JsonFieldType.STRING).description("학번").optional(), From 3b747ef9383af48651e19732389b06fbcfe8d164 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 23 Aug 2024 01:40:13 +0900 Subject: [PATCH 15/37] =?UTF-8?q?feat:=20getUserInquiries,=20getUserPropos?= =?UTF-8?q?als=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/repository/InquiryRepository.java | 11 ++++++ .../repository/ProposalRepository.java | 12 +++++++ .../stop/user/controller/UserController.java | 16 +++++++++ .../dto/response/UserInquiryResponse.java | 29 +++++++++++++++ .../dto/response/UserProposalResponse.java | 27 ++++++++++++++ .../scg/stop/user/service/UserService.java | 35 +++++++++++++++---- 6 files changed, 124 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/scg/stop/domain/project/repository/InquiryRepository.java create mode 100644 src/main/java/com/scg/stop/domain/proposal/repository/ProposalRepository.java create mode 100644 src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java create mode 100644 src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java diff --git a/src/main/java/com/scg/stop/domain/project/repository/InquiryRepository.java b/src/main/java/com/scg/stop/domain/project/repository/InquiryRepository.java new file mode 100644 index 00000000..997dfd27 --- /dev/null +++ b/src/main/java/com/scg/stop/domain/project/repository/InquiryRepository.java @@ -0,0 +1,11 @@ +package com.scg.stop.domain.project.repository; + +import com.scg.stop.domain.project.domain.Inquiry; +import com.scg.stop.user.domain.User; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface InquiryRepository extends JpaRepository { + List findByUser(User user); +} \ No newline at end of file diff --git a/src/main/java/com/scg/stop/domain/proposal/repository/ProposalRepository.java b/src/main/java/com/scg/stop/domain/proposal/repository/ProposalRepository.java new file mode 100644 index 00000000..03e1bd4e --- /dev/null +++ b/src/main/java/com/scg/stop/domain/proposal/repository/ProposalRepository.java @@ -0,0 +1,12 @@ +package com.scg.stop.domain.proposal.repository; + +import com.scg.stop.domain.project.domain.Inquiry; +import com.scg.stop.domain.proposal.domain.Proposal; +import com.scg.stop.user.domain.User; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ProposalRepository extends JpaRepository { + List findByUser(User user); +} diff --git a/src/main/java/com/scg/stop/user/controller/UserController.java b/src/main/java/com/scg/stop/user/controller/UserController.java index e44a20c7..5a0bcee5 100644 --- a/src/main/java/com/scg/stop/user/controller/UserController.java +++ b/src/main/java/com/scg/stop/user/controller/UserController.java @@ -4,6 +4,8 @@ import com.scg.stop.user.domain.AccessType; import com.scg.stop.user.domain.User; import com.scg.stop.user.dto.request.UserUpdateRequest; +import com.scg.stop.user.dto.response.UserInquiryResponse; +import com.scg.stop.user.dto.response.UserProposalResponse; import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.service.UserService; import jakarta.validation.Valid; @@ -11,6 +13,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @RequestMapping("/users") @@ -38,4 +42,16 @@ public ResponseEntity deleteMe(@AuthUser(accessType = {AccessType.ALL}) Us userService.deleteMe(user); return ResponseEntity.noContent().build(); } + + @GetMapping("/inquiries") + public ResponseEntity> getUserInquiries(@AuthUser(accessType = {AccessType.ALL}) User user) { + List inquiries = userService.getUserInquiries(user); + return ResponseEntity.ok(inquiries); + } + + @GetMapping("/proposals") + public ResponseEntity> getUserProposals(@AuthUser(accessType = {AccessType.ALL}) User user) { + List proposals = userService.getUserProposals(user); + return ResponseEntity.ok(proposals); + } } diff --git a/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java new file mode 100644 index 00000000..d5891c3b --- /dev/null +++ b/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java @@ -0,0 +1,29 @@ +package com.scg.stop.user.dto.response; + +import com.scg.stop.domain.project.domain.Inquiry; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.time.LocalDateTime; + +import static lombok.AccessLevel.PRIVATE; + +@Getter +@AllArgsConstructor(access = PRIVATE) +public class UserInquiryResponse { + + private Long id; + private String title; + private Long projectId; + private LocalDateTime createdDate; + + public static UserInquiryResponse from(Inquiry inquiry) { + return new UserInquiryResponse( + inquiry.getId(), + inquiry.getTitle(), + inquiry.getProject() != null ? inquiry.getProject().getId() : null, + inquiry.getCreatedAt() + ); + } +} + diff --git a/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java new file mode 100644 index 00000000..6fd340dc --- /dev/null +++ b/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java @@ -0,0 +1,27 @@ +package com.scg.stop.user.dto.response; + +import com.scg.stop.domain.project.domain.Inquiry; +import com.scg.stop.domain.proposal.domain.Proposal; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.time.LocalDateTime; + +import static lombok.AccessLevel.PRIVATE; + +@Getter +@AllArgsConstructor(access = PRIVATE) +public class UserProposalResponse { + + private Long id; + private String title; + private LocalDateTime createdDate; + + public static UserProposalResponse from(Proposal proposal) { + return new UserProposalResponse( + proposal.getId(), + proposal.getTitle(), + proposal.getCreatedAt() + ); + } +} diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 083ebd3b..991c6679 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -1,5 +1,10 @@ package com.scg.stop.user.service; +import com.scg.stop.domain.project.domain.Inquiry; +import com.scg.stop.domain.project.domain.InquiryResponse; +import com.scg.stop.domain.project.repository.InquiryRepository; +import com.scg.stop.domain.proposal.domain.Proposal; +import com.scg.stop.domain.proposal.repository.ProposalRepository; import com.scg.stop.global.exception.BadRequestException; import com.scg.stop.global.exception.ExceptionCode; import com.scg.stop.user.domain.Department; @@ -7,6 +12,8 @@ import com.scg.stop.user.domain.User; import com.scg.stop.user.domain.UserType; import com.scg.stop.user.dto.request.UserUpdateRequest; +import com.scg.stop.user.dto.response.UserInquiryResponse; +import com.scg.stop.user.dto.response.UserProposalResponse; import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.repository.ApplicationRepository; import com.scg.stop.user.repository.DepartmentRepository; @@ -17,6 +24,8 @@ import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; import static io.micrometer.common.util.StringUtils.isNotBlank; @@ -27,6 +36,8 @@ public class UserService { private final UserRepository userRepository; private final DepartmentRepository departmentRepository; + private final InquiryRepository inquiryRepository; + private final ProposalRepository proposalRepository; public UserResponse getMe(User user) { if (user.getUserType().equals(UserType.STUDENT)) { @@ -41,8 +52,7 @@ public UserResponse getMe(User user) { studentInfo.getStudentNumber(), department.getName() ); - } - else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { + } else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { return UserResponse.of( user, user.getApplication().getDivision(), @@ -50,8 +60,7 @@ else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.I null, null ); - } - else { + } else { return UserResponse.of( user, null, @@ -76,8 +85,7 @@ public UserResponse updateMe(User user, UserUpdateRequest request) { user.getStudentInfo().updateStudentNumber(request.getStudentNumber()); user.getStudentInfo().updateDepartment(department); - } - else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { + } else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { if (isNotBlank(request.getDivision())) user.getApplication().updateDivision(request.getDivision()); if (isNotBlank(request.getPosition())) user.getApplication().updatePosition(request.getPosition()); } @@ -96,4 +104,19 @@ else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.I public void deleteMe(User user) { userRepository.delete(user); } + + public List getUserInquiries(User user) { + List inquiries = inquiryRepository.findByUser(user); + return inquiries.stream() + .map(UserInquiryResponse::from) + .collect(Collectors.toList()); + } + + public List getUserProposals(User user) { + List proposals = proposalRepository.findByUser(user); + return proposals.stream() + .map(UserProposalResponse::from) + .collect(Collectors.toList()); + } + } From 4d5180d73d06454ccfe58747cd91ca751f4f4d1c Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 23 Aug 2024 02:42:51 +0900 Subject: [PATCH 16/37] =?UTF-8?q?feat:=20getUserInquiries,=20getUserPropos?= =?UTF-8?q?als=20restDocs=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/user-controller-test.adoc | 10 +++ .../dto/response/UserInquiryResponse.java | 2 +- .../dto/response/UserProposalResponse.java | 2 +- .../user/controller/UserControllerTest.java | 76 +++++++++++++++++++ 4 files changed, 88 insertions(+), 2 deletions(-) diff --git a/src/docs/asciidoc/user-controller-test.adoc b/src/docs/asciidoc/user-controller-test.adoc index a8313db4..cddcfb15 100644 --- a/src/docs/asciidoc/user-controller-test.adoc +++ b/src/docs/asciidoc/user-controller-test.adoc @@ -17,3 +17,13 @@ operation::user-controller-test/update-me[snippets="http-request,request-cookies ==== operation::user-controller-test/delete-me[snippets="http-request,request-cookies,request-headers,http-response"] ==== + +=== 유저 문의 리스트 조회 (GET /users/inquiries) +==== +operation::user-controller-test/get-user-inquiries[snippets="http-request,request-cookies,request-headers,http-response, response-fields"] +==== + +=== 유저 과제 제안 리스트 조회 (GET /users/proposals) +==== +operation::user-controller-test/get-user-proposals[snippets="http-request,request-cookies,request-headers,http-response, response-fields"] +==== diff --git a/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java index d5891c3b..0c406a8b 100644 --- a/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java +++ b/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java @@ -9,7 +9,7 @@ import static lombok.AccessLevel.PRIVATE; @Getter -@AllArgsConstructor(access = PRIVATE) +@AllArgsConstructor public class UserInquiryResponse { private Long id; diff --git a/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java index 6fd340dc..7c331a0d 100644 --- a/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java +++ b/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java @@ -10,7 +10,7 @@ import static lombok.AccessLevel.PRIVATE; @Getter -@AllArgsConstructor(access = PRIVATE) +@AllArgsConstructor public class UserProposalResponse { private Long id; diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 414e041f..d4bd396e 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -2,9 +2,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.scg.stop.configuration.AbstractControllerTest; +import com.scg.stop.domain.project.domain.InquiryResponse; import com.scg.stop.user.domain.User; import com.scg.stop.user.domain.UserType; import com.scg.stop.user.dto.request.UserUpdateRequest; +import com.scg.stop.user.dto.response.UserInquiryResponse; +import com.scg.stop.user.dto.response.UserProposalResponse; import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.service.UserService; import jakarta.servlet.http.Cookie; @@ -22,6 +25,8 @@ import org.springframework.test.web.servlet.ResultActions; import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; @@ -209,4 +214,75 @@ void deleteMe() throws Exception { )); } + @Test + @DisplayName("로그인 유저의 프로젝트 문의 리스트를 조회할 수 있다.") + void getUserInquiries() throws Exception { + // given + List inquiryResponses = Arrays.asList( + new UserInquiryResponse(1L, "Title 1", 1L, LocalDateTime.now()), + new UserInquiryResponse(2L, "Title 2", 2L, LocalDateTime.now()) + ); + when(userService.getUserInquiries(any(User.class))).thenReturn(inquiryResponses); + + // when + ResultActions result = mockMvc.perform( + get("/users/inquiries") + .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) + .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) + ); + + // then + result.andExpect(status().isOk()) + .andDo(restDocs.document( + requestCookies( + cookieWithName("refresh-token").description("갱신 토큰") + ), + requestHeaders( + headerWithName("Authorization").description("Access Token") + ), + responseFields( + fieldWithPath("[].id").description("문의 ID"), + fieldWithPath("[].title").description("문의 제목"), + fieldWithPath("[].projectId").description("프로젝트 ID"), + fieldWithPath("[].createdDate").description("문의 생성일") + ) + )); + + } + + @Test + @DisplayName("로그인 유저의 과제 제안 리스트를 조회할 수 있다.") + void getUserProposals() throws Exception { + // given + List proposalResponses = Arrays.asList( + new UserProposalResponse(1L, "Title 1", LocalDateTime.now()), + new UserProposalResponse(2L, "Title 2", LocalDateTime.now()) + ); + when(userService.getUserProposals(any(User.class))).thenReturn(proposalResponses); + + // when + ResultActions result = mockMvc.perform( + get("/users/proposals") + .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) + .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) + ); + + // then + result.andExpect(status().isOk()) + .andDo(restDocs.document( + requestCookies( + cookieWithName("refresh-token").description("갱신 토큰") + ), + requestHeaders( + headerWithName("Authorization").description("Access Token") + ), + responseFields( + fieldWithPath("[].id").description("과제 제안 ID"), + fieldWithPath("[].title").description("프로젝트명"), + fieldWithPath("[].createdDate").description("과제 제안 생성일") + ) + )); + + } + } From 6ff147b7336891189bc61c6d1159fc971e895d12 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 23 Aug 2024 02:58:57 +0900 Subject: [PATCH 17/37] =?UTF-8?q?feat:=20getDepartments=20api=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/DepartmentController.java | 25 +++++++++++++++++++ .../user/dto/response/DepartmentResponse.java | 20 +++++++++++++++ .../stop/user/service/DepartmentService.java | 25 +++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 src/main/java/com/scg/stop/user/controller/DepartmentController.java create mode 100644 src/main/java/com/scg/stop/user/dto/response/DepartmentResponse.java create mode 100644 src/main/java/com/scg/stop/user/service/DepartmentService.java diff --git a/src/main/java/com/scg/stop/user/controller/DepartmentController.java b/src/main/java/com/scg/stop/user/controller/DepartmentController.java new file mode 100644 index 00000000..f595e94e --- /dev/null +++ b/src/main/java/com/scg/stop/user/controller/DepartmentController.java @@ -0,0 +1,25 @@ +package com.scg.stop.user.controller; + +import com.scg.stop.user.dto.response.DepartmentResponse; +import com.scg.stop.user.service.DepartmentService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/departments") +public class DepartmentController { + + private final DepartmentService departmentService; + + @GetMapping + public ResponseEntity> getDepartments() { + List departments = departmentService.getDepartments(); + return ResponseEntity.ok(departments); + } +} \ No newline at end of file diff --git a/src/main/java/com/scg/stop/user/dto/response/DepartmentResponse.java b/src/main/java/com/scg/stop/user/dto/response/DepartmentResponse.java new file mode 100644 index 00000000..e57eb400 --- /dev/null +++ b/src/main/java/com/scg/stop/user/dto/response/DepartmentResponse.java @@ -0,0 +1,20 @@ +package com.scg.stop.user.dto.response; + +import com.scg.stop.user.domain.Department; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class DepartmentResponse { + + private Long id; + private String name; + + public static DepartmentResponse from(Department department) { + return new DepartmentResponse( + department.getId(), + department.getName() + ); + } +} diff --git a/src/main/java/com/scg/stop/user/service/DepartmentService.java b/src/main/java/com/scg/stop/user/service/DepartmentService.java new file mode 100644 index 00000000..09429546 --- /dev/null +++ b/src/main/java/com/scg/stop/user/service/DepartmentService.java @@ -0,0 +1,25 @@ +package com.scg.stop.user.service; + +import com.scg.stop.user.dto.response.DepartmentResponse; +import com.scg.stop.user.repository.DepartmentRepository; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +@Transactional +public class DepartmentService { + + private final DepartmentRepository departmentRepository; + + public List getDepartments() { + return departmentRepository.findAll() + .stream() + .map(DepartmentResponse::from) + .collect(Collectors.toList()); + } +} \ No newline at end of file From 9e085a71489340b73ac9db96c3ee0e7a8053ffff Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 23 Aug 2024 03:21:34 +0900 Subject: [PATCH 18/37] =?UTF-8?q?feat:=20getDepartments=20restdocs=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/department.adoc | 9 +++ src/docs/asciidoc/index.adoc | 3 +- .../controller/DepartmentControllerTest.java | 64 +++++++++++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 src/docs/asciidoc/department.adoc create mode 100644 src/test/java/com/scg/stop/user/controller/DepartmentControllerTest.java diff --git a/src/docs/asciidoc/department.adoc b/src/docs/asciidoc/department.adoc new file mode 100644 index 00000000..3cb17f80 --- /dev/null +++ b/src/docs/asciidoc/department.adoc @@ -0,0 +1,9 @@ +== 학과 API +:source-highlighter: highlightjs + +--- + +=== 학과 리스트 조회 (GET /departments) +==== +operation::department-controller-test/get-departments[snippets="http-request,,http-response,response-fields"] +==== \ No newline at end of file diff --git a/src/docs/asciidoc/index.adoc b/src/docs/asciidoc/index.adoc index 19a59b53..41e2f1b9 100644 --- a/src/docs/asciidoc/index.adoc +++ b/src/docs/asciidoc/index.adoc @@ -6,4 +6,5 @@ :seclinks: include::auth-controller-test.adoc[] -include::user-controller-test.adoc[] \ No newline at end of file +include::user-controller-test.adoc[] +include::department.adoc[] \ No newline at end of file diff --git a/src/test/java/com/scg/stop/user/controller/DepartmentControllerTest.java b/src/test/java/com/scg/stop/user/controller/DepartmentControllerTest.java new file mode 100644 index 00000000..d3ca4e23 --- /dev/null +++ b/src/test/java/com/scg/stop/user/controller/DepartmentControllerTest.java @@ -0,0 +1,64 @@ +package com.scg.stop.user.controller; + +import com.scg.stop.configuration.AbstractControllerTest; +import com.scg.stop.user.dto.response.DepartmentResponse; +import com.scg.stop.user.service.DepartmentService; +import com.scg.stop.user.service.UserService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext; +import org.springframework.http.HttpHeaders; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; + +import java.util.Arrays; +import java.util.List; + +import static org.mockito.Mockito.when; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@WebMvcTest(controllers = DepartmentController.class) +@MockBean(JpaMetamodelMappingContext.class) +@AutoConfigureRestDocs +class DepartmentControllerTest extends AbstractControllerTest { + + @MockBean + private DepartmentService departmentService; + + @Autowired + private MockMvc mockMvc; + + @Test + @DisplayName("학과 리스트를 조회할 수 있다.") + void getDepartments() throws Exception { + // given + List departmentResponses = Arrays.asList( + new DepartmentResponse(1L, "소프트웨어학과"), + new DepartmentResponse(2L, "학과2") + ); + when(departmentService.getDepartments()).thenReturn(departmentResponses); + + // when + ResultActions result = mockMvc.perform( + get("/departments") + .contentType(APPLICATION_JSON) + ); + + // then + result.andExpect(status().isOk()) + .andDo(restDocs.document( + responseFields( + fieldWithPath("[].id").description("학과 ID"), + fieldWithPath("[].name").description("학과 이름") + ) + )); + } +} \ No newline at end of file From 032db9f94b38e8665041188b9e9e2590c2984501 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 23 Aug 2024 03:38:10 +0900 Subject: [PATCH 19/37] =?UTF-8?q?refactor:=20userUpdateRequest=20dto=20?= =?UTF-8?q?=EB=B3=80=EC=88=98=EB=AA=85=20auth/register=EA=B3=BC=20?= =?UTF-8?q?=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/scg/stop/user/dto/request/UserUpdateRequest.java | 7 +++---- src/main/java/com/scg/stop/user/service/UserService.java | 6 ++---- .../com/scg/stop/user/controller/UserControllerTest.java | 4 ++-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java index 5897b330..caeee8de 100644 --- a/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java +++ b/src/main/java/com/scg/stop/user/dto/request/UserUpdateRequest.java @@ -3,7 +3,6 @@ import com.scg.stop.global.exception.BadRequestException; import com.scg.stop.global.exception.ExceptionCode; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -20,7 +19,7 @@ public class UserUpdateRequest { private String name; @NotBlank(message = "전화번호를 입력해주세요.") - private String phone; + private String phoneNumber; @NotBlank(message = "이메일을 입력해주세요.") private String email; @@ -31,10 +30,10 @@ public class UserUpdateRequest { // UserType.STUDENT private String studentNumber; - private String departmentName; + private String department; public void validateStudentInfo() { - if (isBlank(this.studentNumber) || isBlank(this.departmentName)) { + if (isBlank(this.studentNumber) || isBlank(this.department)) { throw new BadRequestException(ExceptionCode.INVALID_STUDENTINFO); } } diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 083ebd3b..cc16baf5 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -8,9 +8,7 @@ import com.scg.stop.user.domain.UserType; import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.UserResponse; -import com.scg.stop.user.repository.ApplicationRepository; import com.scg.stop.user.repository.DepartmentRepository; -import com.scg.stop.user.repository.StudentRepository; import com.scg.stop.user.repository.UserRepository; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; @@ -64,14 +62,14 @@ else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.I public UserResponse updateMe(User user, UserUpdateRequest request) { if (isNotBlank(request.getName())) user.updateName(request.getName()); - if (isNotBlank(request.getPhone())) user.updatePhone(request.getPhone()); + if (isNotBlank(request.getPhoneNumber())) user.updatePhone(request.getPhoneNumber()); if (isNotBlank(request.getEmail())) user.updateEmail(request.getEmail()); if (user.getUserType().equals(UserType.STUDENT)) { request.validateStudentInfo(); Department department = departmentRepository.findByName( - request.getDepartmentName()) + request.getDepartment()) .orElseThrow(() -> new BadRequestException(ExceptionCode.NOT_FOUND_DEPARTMENT)); user.getStudentInfo().updateStudentNumber(request.getStudentNumber()); diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 414e041f..4beafc68 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -158,12 +158,12 @@ void updateMe() throws Exception { ), requestFields( fieldWithPath("name").type(JsonFieldType.STRING).description("이름"), - fieldWithPath("phone").type(JsonFieldType.STRING).description("전화번호"), + fieldWithPath("phoneNumber").type(JsonFieldType.STRING).description("전화번호"), fieldWithPath("email").type(JsonFieldType.STRING).description("이메일"), fieldWithPath("division").type(JsonFieldType.STRING).description("소속").optional(), fieldWithPath("position").type(JsonFieldType.STRING).description("직책").optional(), fieldWithPath("studentNumber").type(JsonFieldType.STRING).description("학번").optional(), - fieldWithPath("departmentName").type(JsonFieldType.STRING).description("학과").optional() + fieldWithPath("department").type(JsonFieldType.STRING).description("학과").optional() ), responseFields( fieldWithPath("id").type(JsonFieldType.NUMBER).description("사용자 ID"), From 24f30cdc9bce22376979965f58318a6b2d0be335 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 23 Aug 2024 03:48:47 +0900 Subject: [PATCH 20/37] =?UTF-8?q?feat:=20userResponse=20dto=EC=97=90?= =?UTF-8?q?=EC=84=9C=20socialLoginId=20=ED=95=84=EB=93=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/scg/stop/user/dto/response/UserResponse.java | 2 -- .../java/com/scg/stop/user/controller/UserControllerTest.java | 4 ---- 2 files changed, 6 deletions(-) diff --git a/src/main/java/com/scg/stop/user/dto/response/UserResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserResponse.java index 1321e59e..4df8ce9a 100644 --- a/src/main/java/com/scg/stop/user/dto/response/UserResponse.java +++ b/src/main/java/com/scg/stop/user/dto/response/UserResponse.java @@ -22,7 +22,6 @@ public class UserResponse { private String name; private String phone; private String email; - private String socialLoginId; private UserType userType; private String division; // UserType.PROFESSOR, UserType.COMPANY private String position; // UserType.PROFESSOR, UserType.COMPANY @@ -37,7 +36,6 @@ public static UserResponse of(User user, String division, String position, Strin user.getName(), user.getPhone(), user.getEmail(), - user.getSocialLoginId(), user.getUserType(), division, position, diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 4beafc68..1fb5be95 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -60,7 +60,6 @@ void getMe() throws Exception { "이름", "010-1234-5678", "student@g.skku.edu", - "아이디", UserType.STUDENT, null, null, @@ -94,7 +93,6 @@ void getMe() throws Exception { fieldWithPath("name").type(JsonFieldType.STRING).description("사용자 이름"), fieldWithPath("phone").type(JsonFieldType.STRING).description("사용자 전화번호"), fieldWithPath("email").type(JsonFieldType.STRING).description("사용자 이메일"), - fieldWithPath("socialLoginId").type(JsonFieldType.STRING).description("사용자 이메일"), fieldWithPath("userType").type(JsonFieldType.STRING).description("사용자 유형"), fieldWithPath("division").type(JsonFieldType.STRING).description("소속").optional(), fieldWithPath("position").type(JsonFieldType.STRING).description("직책").optional(), @@ -124,7 +122,6 @@ void updateMe() throws Exception { "이름", "010-1234-5678", "student@g.skku.edu", - "아이디", UserType.STUDENT, null, null, @@ -170,7 +167,6 @@ void updateMe() throws Exception { fieldWithPath("name").type(JsonFieldType.STRING).description("사용자 이름"), fieldWithPath("phone").type(JsonFieldType.STRING).description("사용자 전화번호"), fieldWithPath("email").type(JsonFieldType.STRING).description("사용자 이메일"), - fieldWithPath("socialLoginId").type(JsonFieldType.STRING).description("사용자 이메일"), fieldWithPath("userType").type(JsonFieldType.STRING).description("사용자 유형"), fieldWithPath("division").type(JsonFieldType.STRING).description("소속").optional(), fieldWithPath("position").type(JsonFieldType.STRING).description("직책").optional(), From 4105a41030f438a38d60882998077186ac324903 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 23 Aug 2024 04:13:54 +0900 Subject: [PATCH 21/37] =?UTF-8?q?fix:=20updateMe=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=86=8C=EC=86=8D,=20=EC=A7=81=EC=B1=85=EC=9D=84=20=EB=B9=88?= =?UTF-8?q?=20=EB=AC=B8=EC=9E=90=EC=97=B4=EB=A1=9C=20=EB=B0=94=EA=BF=80=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scg/stop/global/exception/ExceptionCode.java | 3 ++- .../com/scg/stop/user/service/UserService.java | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/scg/stop/global/exception/ExceptionCode.java b/src/main/java/com/scg/stop/global/exception/ExceptionCode.java index 00420152..038dc1f8 100644 --- a/src/main/java/com/scg/stop/global/exception/ExceptionCode.java +++ b/src/main/java/com/scg/stop/global/exception/ExceptionCode.java @@ -24,7 +24,8 @@ public enum ExceptionCode { NOT_FOUND_DEPARTMENT(4003, "학과가 존재하지 않습니다."), INVALID_STUDENTINFO(4004, "학과/학번 정보가 존재하지 않습니다."), - UNABLE_TO_EDIT_USER_TYPE(4100, "회원 유형은 수정할 수 없습니다."); + UNABLE_TO_EDIT_USER_TYPE(4100, "회원 유형은 수정할 수 없습니다."), + DIVISION_OR_POSITION_REQUIRED(4101, "소속과 직책 정보가 필요합니다."); private final int code; private final String message; diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index cc16baf5..08db7bee 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -16,7 +16,9 @@ import java.util.Arrays; +import static io.micrometer.common.util.StringUtils.isBlank; import static io.micrometer.common.util.StringUtils.isNotBlank; +import static java.util.Objects.isNull; @Service @RequiredArgsConstructor @@ -61,9 +63,9 @@ else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.I } public UserResponse updateMe(User user, UserUpdateRequest request) { - if (isNotBlank(request.getName())) user.updateName(request.getName()); - if (isNotBlank(request.getPhoneNumber())) user.updatePhone(request.getPhoneNumber()); - if (isNotBlank(request.getEmail())) user.updateEmail(request.getEmail()); + user.updateName(request.getName()); + user.updatePhone(request.getPhoneNumber()); + user.updateEmail(request.getEmail()); if (user.getUserType().equals(UserType.STUDENT)) { request.validateStudentInfo(); @@ -76,8 +78,12 @@ public UserResponse updateMe(User user, UserUpdateRequest request) { user.getStudentInfo().updateDepartment(department); } else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { - if (isNotBlank(request.getDivision())) user.getApplication().updateDivision(request.getDivision()); - if (isNotBlank(request.getPosition())) user.getApplication().updatePosition(request.getPosition()); + if (isNull(request.getDivision()) || isNull(request.getPosition())) { + throw new BadRequestException(ExceptionCode.DIVISION_OR_POSITION_REQUIRED); + } + + user.getApplication().updateDivision(request.getDivision()); + user.getApplication().updatePosition(request.getPosition()); } userRepository.save(user); From b522d1316355a9ca87e1e8077b8ccf8d07b0e4e2 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Fri, 23 Aug 2024 04:20:30 +0900 Subject: [PATCH 22/37] =?UTF-8?q?feat:=20=EC=9C=A0=EC=A0=80=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EC=8B=9C=20=EC=A2=8B=EC=95=84=EC=9A=94=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=EB=8F=84=20=EC=82=AD=EC=A0=9C=EB=90=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/scg/stop/user/domain/User.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/scg/stop/user/domain/User.java b/src/main/java/com/scg/stop/user/domain/User.java index 646bb39a..5b460fbb 100644 --- a/src/main/java/com/scg/stop/user/domain/User.java +++ b/src/main/java/com/scg/stop/user/domain/User.java @@ -63,7 +63,7 @@ public class User extends BaseTimeEntity { @OneToMany(fetch = LAZY, mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List favoriteVideos = new ArrayList<>(); - @OneToMany(fetch = LAZY, mappedBy = "user") + @OneToMany(fetch = LAZY, mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List likes = new ArrayList<>(); @OneToMany(fetch = LAZY, mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) @@ -99,7 +99,6 @@ public void updateApplication(Application application) { @PreRemove private void preRemove() { proposals.forEach(proposal -> proposal.setUser(null)); - likes.forEach(like -> like.setUser(null)); comments.forEach(comment -> comment.setUser(null)); inquiries.forEach(inquiry -> inquiry.setUser(null)); } From 5319d2eb7e1ee75a26c63c0698e097c907bec961 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Sat, 24 Aug 2024 01:37:23 +0900 Subject: [PATCH 23/37] =?UTF-8?q?feat:=20getUserFavorites=20api=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/dto/response/ProjectResponse.java | 16 ++++++++ .../repository/FavoriteProjectRepository.java | 15 +++++++ .../video/dto/response/VideoResponse.java | 17 ++++++++ .../repository/FavoriteVideoRepository.java | 19 +++++++++ .../stop/user/controller/UserController.java | 11 +++++ .../scg/stop/user/domain/FavoriteType.java | 7 ++++ .../scg/stop/user/service/UserService.java | 41 +++++++++++++++---- 7 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/scg/stop/domain/project/dto/response/ProjectResponse.java create mode 100644 src/main/java/com/scg/stop/domain/project/repository/FavoriteProjectRepository.java create mode 100644 src/main/java/com/scg/stop/domain/video/dto/response/VideoResponse.java create mode 100644 src/main/java/com/scg/stop/domain/video/repository/FavoriteVideoRepository.java create mode 100644 src/main/java/com/scg/stop/user/domain/FavoriteType.java diff --git a/src/main/java/com/scg/stop/domain/project/dto/response/ProjectResponse.java b/src/main/java/com/scg/stop/domain/project/dto/response/ProjectResponse.java new file mode 100644 index 00000000..b3277b87 --- /dev/null +++ b/src/main/java/com/scg/stop/domain/project/dto/response/ProjectResponse.java @@ -0,0 +1,16 @@ +package com.scg.stop.domain.project.dto.response; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class ProjectResponse { + private Long id; + private String name; + + public static ProjectResponse of(Long id, String name) { + return new ProjectResponse(id, name); + } +} \ No newline at end of file diff --git a/src/main/java/com/scg/stop/domain/project/repository/FavoriteProjectRepository.java b/src/main/java/com/scg/stop/domain/project/repository/FavoriteProjectRepository.java new file mode 100644 index 00000000..ccfcbb91 --- /dev/null +++ b/src/main/java/com/scg/stop/domain/project/repository/FavoriteProjectRepository.java @@ -0,0 +1,15 @@ +package com.scg.stop.domain.project.repository; + +import com.scg.stop.domain.project.domain.FavoriteProject; +import com.scg.stop.domain.project.domain.Project; +import com.scg.stop.user.domain.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface FavoriteProjectRepository extends JpaRepository { + @Query("SELECT f.project FROM FavoriteProject f WHERE f.user = :user") + List findAllByUser(@Param("user") User user); +} diff --git a/src/main/java/com/scg/stop/domain/video/dto/response/VideoResponse.java b/src/main/java/com/scg/stop/domain/video/dto/response/VideoResponse.java new file mode 100644 index 00000000..a4542700 --- /dev/null +++ b/src/main/java/com/scg/stop/domain/video/dto/response/VideoResponse.java @@ -0,0 +1,17 @@ +package com.scg.stop.domain.video.dto.response; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class VideoResponse { + private Long id; + private String title; + private String youtubeId; + + public static VideoResponse of(Long id, String title, String youtubeId) { + return new VideoResponse(id, title, youtubeId); + } +} diff --git a/src/main/java/com/scg/stop/domain/video/repository/FavoriteVideoRepository.java b/src/main/java/com/scg/stop/domain/video/repository/FavoriteVideoRepository.java new file mode 100644 index 00000000..32631901 --- /dev/null +++ b/src/main/java/com/scg/stop/domain/video/repository/FavoriteVideoRepository.java @@ -0,0 +1,19 @@ +package com.scg.stop.domain.video.repository; + +import com.scg.stop.domain.video.domain.FavoriteVideo; +import com.scg.stop.domain.video.domain.JobInterview; +import com.scg.stop.domain.video.domain.Talk; +import com.scg.stop.user.domain.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface FavoriteVideoRepository extends JpaRepository { + @Query("SELECT f.talk FROM FavoriteVideo f WHERE f.user = :user AND f.talk IS NOT NULL") + List findTalksByUser(@Param("user") User user); + + @Query("SELECT f.jobInterview FROM FavoriteVideo f WHERE f.user = :user AND f.jobInterview IS NOT NULL") + List findJobInterviewsByUser(@Param("user") User user); +} diff --git a/src/main/java/com/scg/stop/user/controller/UserController.java b/src/main/java/com/scg/stop/user/controller/UserController.java index 5a0bcee5..cdf842e5 100644 --- a/src/main/java/com/scg/stop/user/controller/UserController.java +++ b/src/main/java/com/scg/stop/user/controller/UserController.java @@ -2,6 +2,7 @@ import com.scg.stop.auth.annotation.AuthUser; import com.scg.stop.user.domain.AccessType; +import com.scg.stop.user.domain.FavoriteType; import com.scg.stop.user.domain.User; import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.UserInquiryResponse; @@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; @RestController @RequiredArgsConstructor @@ -54,4 +56,13 @@ public ResponseEntity> getUserProposals(@AuthUser(acc List proposals = userService.getUserProposals(user); return ResponseEntity.ok(proposals); } + + @GetMapping("/favorites") + public ResponseEntity> getUserFavorites( + @AuthUser(accessType = {AccessType.ALL}) User user, + @RequestParam("type") FavoriteType type + ) { + List userFavorites = userService.getUserFavorites(user, type); + return ResponseEntity.ok(userFavorites); + } } diff --git a/src/main/java/com/scg/stop/user/domain/FavoriteType.java b/src/main/java/com/scg/stop/user/domain/FavoriteType.java new file mode 100644 index 00000000..ba8fba1a --- /dev/null +++ b/src/main/java/com/scg/stop/user/domain/FavoriteType.java @@ -0,0 +1,7 @@ +package com.scg.stop.user.domain; + +public enum FavoriteType { + PROJECT, // 프로젝트 + TALK, // 대담영상 + JOBINTERVIEW // 잡페어영상 +} diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 991c6679..5ea62cfe 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -1,23 +1,24 @@ package com.scg.stop.user.service; import com.scg.stop.domain.project.domain.Inquiry; -import com.scg.stop.domain.project.domain.InquiryResponse; +import com.scg.stop.domain.project.domain.Project; +import com.scg.stop.domain.project.dto.response.ProjectResponse; +import com.scg.stop.domain.project.repository.FavoriteProjectRepository; import com.scg.stop.domain.project.repository.InquiryRepository; import com.scg.stop.domain.proposal.domain.Proposal; import com.scg.stop.domain.proposal.repository.ProposalRepository; +import com.scg.stop.domain.video.domain.JobInterview; +import com.scg.stop.domain.video.domain.Talk; +import com.scg.stop.domain.video.dto.response.VideoResponse; +import com.scg.stop.domain.video.repository.FavoriteVideoRepository; import com.scg.stop.global.exception.BadRequestException; import com.scg.stop.global.exception.ExceptionCode; -import com.scg.stop.user.domain.Department; -import com.scg.stop.user.domain.Student; -import com.scg.stop.user.domain.User; -import com.scg.stop.user.domain.UserType; +import com.scg.stop.user.domain.*; import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.UserInquiryResponse; import com.scg.stop.user.dto.response.UserProposalResponse; import com.scg.stop.user.dto.response.UserResponse; -import com.scg.stop.user.repository.ApplicationRepository; import com.scg.stop.user.repository.DepartmentRepository; -import com.scg.stop.user.repository.StudentRepository; import com.scg.stop.user.repository.UserRepository; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; @@ -38,6 +39,8 @@ public class UserService { private final DepartmentRepository departmentRepository; private final InquiryRepository inquiryRepository; private final ProposalRepository proposalRepository; + private final FavoriteProjectRepository favoriteProjectRepository; + private final FavoriteVideoRepository favoriteVideoRepository; public UserResponse getMe(User user) { if (user.getUserType().equals(UserType.STUDENT)) { @@ -119,4 +122,26 @@ public List getUserProposals(User user) { .collect(Collectors.toList()); } -} + public List getUserFavorites(User user, FavoriteType type) { + if (type.equals(FavoriteType.PROJECT)) { + List projects = favoriteProjectRepository.findAllByUser(user); + return projects.stream() + .map(project -> ProjectResponse.of(project.getId(), project.getName())) + .collect(Collectors.toList()); + } + else if (type.equals(FavoriteType.TALK)) { + List talks = favoriteVideoRepository.findTalksByUser(user); + return talks.stream() + .map(talk -> VideoResponse.of(talk.getId(), talk.getTitle(), talk.getYoutubeId())) + .collect(Collectors.toList()); + } + else { // if (type.equals(FavoriteType.JOBINTERVIEW)) { + List jobInterviews = favoriteVideoRepository.findJobInterviewsByUser(user); + return jobInterviews.stream() + .map(jobInterview -> VideoResponse.of(jobInterview.getId(), jobInterview.getTitle(), jobInterview.getYoutubeId())) + .collect(Collectors.toList()); + } + + } + +} \ No newline at end of file From 5b96b5284b0bd18c37096f61b8a63e8e63b59393 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Wed, 28 Aug 2024 14:41:34 +0900 Subject: [PATCH 24/37] =?UTF-8?q?chore:=20restdocs=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/user-controller-test.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/docs/asciidoc/user-controller-test.adoc b/src/docs/asciidoc/user-controller-test.adoc index a8313db4..ac6a72f6 100644 --- a/src/docs/asciidoc/user-controller-test.adoc +++ b/src/docs/asciidoc/user-controller-test.adoc @@ -5,15 +5,15 @@ === 로그인 유저 기본 정보 조회 (GET /users/me) ==== -operation::user-controller-test/get-me[snippets="http-request,request-cookies,request-headers,http-response,response-fields"] +operation::user-controller-test/get-me[snippets="http-request,http-response,response-fields"] ==== === 로그인 유저 기본 정보 수정 (PUT /users/me) ==== -operation::user-controller-test/update-me[snippets="http-request,request-cookies,request-headers,request-fields,http-response,response-fields"] +operation::user-controller-test/update-me[snippets="http-request,request-fields,http-response,response-fields"] ==== === 유저 탈퇴 (DELETE /users/me) ==== -operation::user-controller-test/delete-me[snippets="http-request,request-cookies,request-headers,http-response"] +operation::user-controller-test/delete-me[snippets="http-request,http-response"] ==== From 1b507a3d032c87b4d15757cb97d194bb5e8d8101 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:00:03 +0900 Subject: [PATCH 25/37] =?UTF-8?q?fix:=20=EC=86=8C=EC=86=8D,=20=EC=A7=81?= =?UTF-8?q?=EC=B1=85=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/scg/stop/global/exception/ExceptionCode.java | 2 +- src/main/java/com/scg/stop/user/service/UserService.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/scg/stop/global/exception/ExceptionCode.java b/src/main/java/com/scg/stop/global/exception/ExceptionCode.java index 038dc1f8..2656b4e6 100644 --- a/src/main/java/com/scg/stop/global/exception/ExceptionCode.java +++ b/src/main/java/com/scg/stop/global/exception/ExceptionCode.java @@ -25,7 +25,7 @@ public enum ExceptionCode { INVALID_STUDENTINFO(4004, "학과/학번 정보가 존재하지 않습니다."), UNABLE_TO_EDIT_USER_TYPE(4100, "회원 유형은 수정할 수 없습니다."), - DIVISION_OR_POSITION_REQUIRED(4101, "소속과 직책 정보가 필요합니다."); + DIVISION_OR_POSITION_REQUIRED(4101, "소속 또는 직책의 형식이 잘못되었습니다."); private final int code; private final String message; diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 08db7bee..48088a87 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -78,7 +78,9 @@ public UserResponse updateMe(User user, UserUpdateRequest request) { user.getStudentInfo().updateDepartment(department); } else if (Arrays.asList(UserType.INACTIVE_PROFESSOR, UserType.COMPANY, UserType.INACTIVE_COMPANY, UserType.PROFESSOR).contains(user.getUserType())) { - if (isNull(request.getDivision()) || isNull(request.getPosition())) { + if (!isNull(request.getDivision()) && isBlank(request.getDivision()) || + !isNull(request.getPosition()) && isBlank(request.getPosition())) { + throw new BadRequestException(ExceptionCode.DIVISION_OR_POSITION_REQUIRED); } From 02c8e1694e0b135a334d0b862d971367da7a63f8 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:27:30 +0900 Subject: [PATCH 26/37] =?UTF-8?q?chore:=20restdocs=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/index.adoc | 2 +- src/docs/asciidoc/{user-controller-test.adoc => user.adoc} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/docs/asciidoc/{user-controller-test.adoc => user.adoc} (84%) diff --git a/src/docs/asciidoc/index.adoc b/src/docs/asciidoc/index.adoc index 41e2f1b9..37ccaf74 100644 --- a/src/docs/asciidoc/index.adoc +++ b/src/docs/asciidoc/index.adoc @@ -6,5 +6,5 @@ :seclinks: include::auth-controller-test.adoc[] -include::user-controller-test.adoc[] +include::user.adoc[] include::department.adoc[] \ No newline at end of file diff --git a/src/docs/asciidoc/user-controller-test.adoc b/src/docs/asciidoc/user.adoc similarity index 84% rename from src/docs/asciidoc/user-controller-test.adoc rename to src/docs/asciidoc/user.adoc index 2105d601..6b414710 100644 --- a/src/docs/asciidoc/user-controller-test.adoc +++ b/src/docs/asciidoc/user.adoc @@ -20,10 +20,10 @@ operation::user-controller-test/delete-me[snippets="http-request,http-response"] === 유저 문의 리스트 조회 (GET /users/inquiries) ==== -operation::user-controller-test/get-user-inquiries[snippets="http-request,request-cookies,request-headers,http-response, response-fields"] +operation::user-controller-test/get-user-inquiries[snippets="http-request,http-response,response-fields"] ==== === 유저 과제 제안 리스트 조회 (GET /users/proposals) ==== -operation::user-controller-test/get-user-proposals[snippets="http-request,request-cookies,request-headers,http-response, response-fields"] +operation::user-controller-test/get-user-proposals[snippets="http-request,http-response,response-fields"] ==== From 60ca860ee5e7270937bf35ff10dea9b34a6f9a72 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:28:58 +0900 Subject: [PATCH 27/37] =?UTF-8?q?chore:=20department=20restdocs=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/department.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/docs/asciidoc/department.adoc b/src/docs/asciidoc/department.adoc index 3cb17f80..7d32b14c 100644 --- a/src/docs/asciidoc/department.adoc +++ b/src/docs/asciidoc/department.adoc @@ -5,5 +5,5 @@ === 학과 리스트 조회 (GET /departments) ==== -operation::department-controller-test/get-departments[snippets="http-request,,http-response,response-fields"] +operation::department-controller-test/get-departments[snippets="http-request,http-response,response-fields"] ==== \ No newline at end of file From 3aebc9ca7e53f94510f771deadf9d63a7b7d7070 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Wed, 28 Aug 2024 17:18:01 +0900 Subject: [PATCH 28/37] =?UTF-8?q?feat:=20transactional=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/scg/stop/user/service/DepartmentService.java | 3 ++- src/main/java/com/scg/stop/user/service/UserService.java | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/scg/stop/user/service/DepartmentService.java b/src/main/java/com/scg/stop/user/service/DepartmentService.java index 09429546..a75b03b7 100644 --- a/src/main/java/com/scg/stop/user/service/DepartmentService.java +++ b/src/main/java/com/scg/stop/user/service/DepartmentService.java @@ -2,9 +2,9 @@ import com.scg.stop.user.dto.response.DepartmentResponse; import com.scg.stop.user.repository.DepartmentRepository; -import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -16,6 +16,7 @@ public class DepartmentService { private final DepartmentRepository departmentRepository; + @Transactional(readOnly = true) public List getDepartments() { return departmentRepository.findAll() .stream() diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 55c1e7c7..3f0662aa 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -20,16 +20,15 @@ import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.repository.DepartmentRepository; import com.scg.stop.user.repository.UserRepository; -import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import static io.micrometer.common.util.StringUtils.isBlank; -import static io.micrometer.common.util.StringUtils.isNotBlank; import static java.util.Objects.isNull; @Service @@ -44,6 +43,7 @@ public class UserService { private final FavoriteProjectRepository favoriteProjectRepository; private final FavoriteVideoRepository favoriteVideoRepository; + @Transactional(readOnly = true) public UserResponse getMe(User user) { if (user.getUserType().equals(UserType.STUDENT)) { Student studentInfo = user.getStudentInfo(); @@ -117,6 +117,7 @@ public void deleteMe(User user) { userRepository.delete(user); } + @Transactional(readOnly = true) public List getUserInquiries(User user) { List inquiries = inquiryRepository.findByUser(user); return inquiries.stream() @@ -124,6 +125,7 @@ public List getUserInquiries(User user) { .collect(Collectors.toList()); } + @Transactional(readOnly = true) public List getUserProposals(User user) { List proposals = proposalRepository.findByUser(user); return proposals.stream() @@ -131,6 +133,7 @@ public List getUserProposals(User user) { .collect(Collectors.toList()); } + @Transactional(readOnly = true) public List getUserFavorites(User user, FavoriteType type) { if (type.equals(FavoriteType.PROJECT)) { List projects = favoriteProjectRepository.findAllByUser(user); From d507e3aa45ac345eb0994080a26fed02cb9cc4de Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Sat, 31 Aug 2024 17:53:12 +0900 Subject: [PATCH 29/37] =?UTF-8?q?feat:=20getUserFavorites=20response=20dto?= =?UTF-8?q?=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/dto/response/ProjectResponse.java | 16 ---------------- .../scg/stop/user/controller/UserController.java | 6 +++--- .../dto/response/FavoriteResponse.java} | 8 ++++---- .../com/scg/stop/user/service/UserService.java | 11 +++++------ 4 files changed, 12 insertions(+), 29 deletions(-) delete mode 100644 src/main/java/com/scg/stop/domain/project/dto/response/ProjectResponse.java rename src/main/java/com/scg/stop/{domain/video/dto/response/VideoResponse.java => user/dto/response/FavoriteResponse.java} (51%) diff --git a/src/main/java/com/scg/stop/domain/project/dto/response/ProjectResponse.java b/src/main/java/com/scg/stop/domain/project/dto/response/ProjectResponse.java deleted file mode 100644 index b3277b87..00000000 --- a/src/main/java/com/scg/stop/domain/project/dto/response/ProjectResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.scg.stop.domain.project.dto.response; - -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor(access = AccessLevel.PRIVATE) -public class ProjectResponse { - private Long id; - private String name; - - public static ProjectResponse of(Long id, String name) { - return new ProjectResponse(id, name); - } -} \ No newline at end of file diff --git a/src/main/java/com/scg/stop/user/controller/UserController.java b/src/main/java/com/scg/stop/user/controller/UserController.java index cdf842e5..6cda6c31 100644 --- a/src/main/java/com/scg/stop/user/controller/UserController.java +++ b/src/main/java/com/scg/stop/user/controller/UserController.java @@ -5,6 +5,7 @@ import com.scg.stop.user.domain.FavoriteType; import com.scg.stop.user.domain.User; import com.scg.stop.user.dto.request.UserUpdateRequest; +import com.scg.stop.user.dto.response.FavoriteResponse; import com.scg.stop.user.dto.response.UserInquiryResponse; import com.scg.stop.user.dto.response.UserProposalResponse; import com.scg.stop.user.dto.response.UserResponse; @@ -15,7 +16,6 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Map; @RestController @RequiredArgsConstructor @@ -58,11 +58,11 @@ public ResponseEntity> getUserProposals(@AuthUser(acc } @GetMapping("/favorites") - public ResponseEntity> getUserFavorites( + public ResponseEntity> getUserFavorites( @AuthUser(accessType = {AccessType.ALL}) User user, @RequestParam("type") FavoriteType type ) { - List userFavorites = userService.getUserFavorites(user, type); + List userFavorites = userService.getUserFavorites(user, type); return ResponseEntity.ok(userFavorites); } } diff --git a/src/main/java/com/scg/stop/domain/video/dto/response/VideoResponse.java b/src/main/java/com/scg/stop/user/dto/response/FavoriteResponse.java similarity index 51% rename from src/main/java/com/scg/stop/domain/video/dto/response/VideoResponse.java rename to src/main/java/com/scg/stop/user/dto/response/FavoriteResponse.java index a4542700..ba062e82 100644 --- a/src/main/java/com/scg/stop/domain/video/dto/response/VideoResponse.java +++ b/src/main/java/com/scg/stop/user/dto/response/FavoriteResponse.java @@ -1,4 +1,4 @@ -package com.scg.stop.domain.video.dto.response; +package com.scg.stop.user.dto.response; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -6,12 +6,12 @@ @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) -public class VideoResponse { +public class FavoriteResponse { private Long id; private String title; private String youtubeId; - public static VideoResponse of(Long id, String title, String youtubeId) { - return new VideoResponse(id, title, youtubeId); + public static FavoriteResponse of(Long id, String title, String youtubeId) { + return new FavoriteResponse(id, title, youtubeId); } } diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 3f0662aa..51169c8e 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -2,19 +2,18 @@ import com.scg.stop.domain.project.domain.Inquiry; import com.scg.stop.domain.project.domain.Project; -import com.scg.stop.domain.project.dto.response.ProjectResponse; import com.scg.stop.domain.project.repository.FavoriteProjectRepository; import com.scg.stop.domain.project.repository.InquiryRepository; import com.scg.stop.domain.proposal.domain.Proposal; import com.scg.stop.domain.proposal.repository.ProposalRepository; import com.scg.stop.domain.video.domain.JobInterview; import com.scg.stop.domain.video.domain.Talk; -import com.scg.stop.domain.video.dto.response.VideoResponse; import com.scg.stop.domain.video.repository.FavoriteVideoRepository; import com.scg.stop.global.exception.BadRequestException; import com.scg.stop.global.exception.ExceptionCode; import com.scg.stop.user.domain.*; import com.scg.stop.user.dto.request.UserUpdateRequest; +import com.scg.stop.user.dto.response.FavoriteResponse; import com.scg.stop.user.dto.response.UserInquiryResponse; import com.scg.stop.user.dto.response.UserProposalResponse; import com.scg.stop.user.dto.response.UserResponse; @@ -134,23 +133,23 @@ public List getUserProposals(User user) { } @Transactional(readOnly = true) - public List getUserFavorites(User user, FavoriteType type) { + public List getUserFavorites(User user, FavoriteType type) { if (type.equals(FavoriteType.PROJECT)) { List projects = favoriteProjectRepository.findAllByUser(user); return projects.stream() - .map(project -> ProjectResponse.of(project.getId(), project.getName())) + .map(project -> FavoriteResponse.of(project.getId(), project.getName(), project.getYoutubeId())) .collect(Collectors.toList()); } else if (type.equals(FavoriteType.TALK)) { List talks = favoriteVideoRepository.findTalksByUser(user); return talks.stream() - .map(talk -> VideoResponse.of(talk.getId(), talk.getTitle(), talk.getYoutubeId())) + .map(talk -> FavoriteResponse.of(talk.getId(), talk.getTitle(), talk.getYoutubeId())) .collect(Collectors.toList()); } else { // if (type.equals(FavoriteType.JOBINTERVIEW)) { List jobInterviews = favoriteVideoRepository.findJobInterviewsByUser(user); return jobInterviews.stream() - .map(jobInterview -> VideoResponse.of(jobInterview.getId(), jobInterview.getTitle(), jobInterview.getYoutubeId())) + .map(jobInterview -> FavoriteResponse.of(jobInterview.getId(), jobInterview.getTitle(), jobInterview.getYoutubeId())) .collect(Collectors.toList()); } From dbacd6867a74f8d405ec62a2f55b32461bfb3c13 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:03:22 +0900 Subject: [PATCH 30/37] =?UTF-8?q?feat:=20getUserFavorites=20restdocs=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/user.adoc | 5 +++ .../user/controller/UserControllerTest.java | 45 ++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/docs/asciidoc/user.adoc b/src/docs/asciidoc/user.adoc index 6b414710..2c97fbb8 100644 --- a/src/docs/asciidoc/user.adoc +++ b/src/docs/asciidoc/user.adoc @@ -18,6 +18,11 @@ operation::user-controller-test/update-me[snippets="http-request,request-fields, operation::user-controller-test/delete-me[snippets="http-request,http-response"] ==== +=== 유저 관심 리스트 조회 (GET /users/favorites) +==== +operation::user-controller-test/get-user-favorites[snippets="http-request,query-parameters,http-response,response-fields"] +==== + === 유저 문의 리스트 조회 (GET /users/inquiries) ==== operation::user-controller-test/get-user-inquiries[snippets="http-request,http-response,response-fields"] diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index e4d7e28e..672e6450 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -2,10 +2,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.scg.stop.configuration.AbstractControllerTest; -import com.scg.stop.domain.project.domain.InquiryResponse; +import com.scg.stop.user.domain.FavoriteType; import com.scg.stop.user.domain.User; import com.scg.stop.user.domain.UserType; import com.scg.stop.user.dto.request.UserUpdateRequest; +import com.scg.stop.user.dto.response.FavoriteResponse; import com.scg.stop.user.dto.response.UserInquiryResponse; import com.scg.stop.user.dto.response.UserProposalResponse; import com.scg.stop.user.dto.response.UserResponse; @@ -20,6 +21,7 @@ import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; +import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; @@ -36,6 +38,7 @@ import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders; import static org.springframework.restdocs.payload.PayloadDocumentation.*; +import static org.springframework.restdocs.request.RequestDocumentation.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -277,8 +280,46 @@ void getUserProposals() throws Exception { fieldWithPath("[].title").description("프로젝트명"), fieldWithPath("[].createdDate").description("과제 제안 생성일") ) - )); + )); + + } + + @Test + @DisplayName("유저의 관심 리스트를 조회할 수 있다.") + void getUserFavorites() throws Exception { + // given + List responses = Arrays.asList( + FavoriteResponse.of(1L, "Project 1", "youtube 1"), + FavoriteResponse.of(2L, "Project 2", "youtube 2") + ); + when(userService.getUserFavorites(any(User.class), any(FavoriteType.class))).thenReturn(responses); + + // when + ResultActions result = mockMvc.perform( + RestDocumentationRequestBuilders.get("/users/favorites") + .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) + .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) + .param("type", "TALK") + ); + // then + result.andExpect(status().isOk()) + .andDo(restDocs.document( + requestCookies( + cookieWithName("refresh-token").description("갱신 토큰") + ), + requestHeaders( + headerWithName("Authorization").description("Access Token") + ), + queryParameters( + parameterWithName("type").description("관심 항목의 타입 (PROJECT, TALK, JOBINTERVIEW)") + ), + responseFields( + fieldWithPath("[].id").description("ID"), + fieldWithPath("[].title").description("제목"), + fieldWithPath("[].youtubeId").description("유튜브 ID") + ) + )); } } From ebb721f48d22a776e0d393eb42db9da65558fbd4 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Sun, 3 Nov 2024 00:41:50 +0900 Subject: [PATCH 31/37] =?UTF-8?q?fix:=20getUserInquiries,=20getUserProposa?= =?UTF-8?q?ls=20dto=EC=97=90=20=EB=8B=B5=EB=B3=80=20=EC=97=AC=EB=B6=80=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/dto/response/UserInquiryResponse.java | 4 +++- .../user/dto/response/UserProposalResponse.java | 4 +++- .../stop/user/controller/UserControllerTest.java | 14 ++++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java index 0c406a8b..5c0b747e 100644 --- a/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java +++ b/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java @@ -16,13 +16,15 @@ public class UserInquiryResponse { private String title; private Long projectId; private LocalDateTime createdDate; + private boolean hasResponse; public static UserInquiryResponse from(Inquiry inquiry) { return new UserInquiryResponse( inquiry.getId(), inquiry.getTitle(), inquiry.getProject() != null ? inquiry.getProject().getId() : null, - inquiry.getCreatedAt() + inquiry.getCreatedAt(), + inquiry.getResponse() != null ); } } diff --git a/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java index 7c331a0d..156fb4ec 100644 --- a/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java +++ b/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java @@ -16,12 +16,14 @@ public class UserProposalResponse { private Long id; private String title; private LocalDateTime createdDate; + private boolean hasResponse; public static UserProposalResponse from(Proposal proposal) { return new UserProposalResponse( proposal.getId(), proposal.getTitle(), - proposal.getCreatedAt() + proposal.getCreatedAt(), + proposal.getProposalResponse() != null ); } } diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 672e6450..fa9ce113 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -218,8 +218,8 @@ void deleteMe() throws Exception { void getUserInquiries() throws Exception { // given List inquiryResponses = Arrays.asList( - new UserInquiryResponse(1L, "Title 1", 1L, LocalDateTime.now()), - new UserInquiryResponse(2L, "Title 2", 2L, LocalDateTime.now()) + new UserInquiryResponse(1L, "Title 1", 1L, LocalDateTime.now(), true), + new UserInquiryResponse(2L, "Title 2", 2L, LocalDateTime.now(), false) ); when(userService.getUserInquiries(any(User.class))).thenReturn(inquiryResponses); @@ -243,7 +243,8 @@ void getUserInquiries() throws Exception { fieldWithPath("[].id").description("문의 ID"), fieldWithPath("[].title").description("문의 제목"), fieldWithPath("[].projectId").description("프로젝트 ID"), - fieldWithPath("[].createdDate").description("문의 생성일") + fieldWithPath("[].createdDate").description("문의 생성일"), + fieldWithPath("[].hasResponse").description("답변 여부") ) )); @@ -254,8 +255,8 @@ void getUserInquiries() throws Exception { void getUserProposals() throws Exception { // given List proposalResponses = Arrays.asList( - new UserProposalResponse(1L, "Title 1", LocalDateTime.now()), - new UserProposalResponse(2L, "Title 2", LocalDateTime.now()) + new UserProposalResponse(1L, "Title 1", LocalDateTime.now(), true), + new UserProposalResponse(2L, "Title 2", LocalDateTime.now(), false) ); when(userService.getUserProposals(any(User.class))).thenReturn(proposalResponses); @@ -278,7 +279,8 @@ void getUserProposals() throws Exception { responseFields( fieldWithPath("[].id").description("과제 제안 ID"), fieldWithPath("[].title").description("프로젝트명"), - fieldWithPath("[].createdDate").description("과제 제안 생성일") + fieldWithPath("[].createdDate").description("과제 제안 생성일"), + fieldWithPath("[].hasResponse").description("답변 여부") ) )); From d28170ac7ae0dc5690d33a843777fa3b9148ccaf Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Sun, 3 Nov 2024 18:25:20 +0900 Subject: [PATCH 32/37] =?UTF-8?q?refactor:=20=EB=8B=B5=EB=B3=80=20?= =?UTF-8?q?=EC=97=94=ED=8B=B0=ED=8B=B0=EB=AA=85=20reply=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/scg/stop/domain/project/domain/Inquiry.java | 2 +- .../domain/{InquiryResponse.java => InquiryReply.java} | 2 +- .../java/com/scg/stop/domain/proposal/domain/Proposal.java | 2 +- .../domain/{ProposalResponse.java => ProposalReply.java} | 2 +- .../scg/stop/user/dto/response/UserInquiryResponse.java | 6 ++---- .../scg/stop/user/dto/response/UserProposalResponse.java | 7 ++----- .../com/scg/stop/user/controller/UserControllerTest.java | 4 ++-- 7 files changed, 10 insertions(+), 15 deletions(-) rename src/main/java/com/scg/stop/domain/project/domain/{InquiryResponse.java => InquiryReply.java} (93%) rename src/main/java/com/scg/stop/domain/proposal/domain/{ProposalResponse.java => ProposalReply.java} (93%) diff --git a/src/main/java/com/scg/stop/domain/project/domain/Inquiry.java b/src/main/java/com/scg/stop/domain/project/domain/Inquiry.java index b87d6b85..20a46114 100644 --- a/src/main/java/com/scg/stop/domain/project/domain/Inquiry.java +++ b/src/main/java/com/scg/stop/domain/project/domain/Inquiry.java @@ -40,7 +40,7 @@ public class Inquiry extends BaseTimeEntity { private User user; @OneToOne(fetch = LAZY, mappedBy = "inquiry") - private InquiryResponse response; + private InquiryReply reply; public void setUser(User user) { this.user = user; diff --git a/src/main/java/com/scg/stop/domain/project/domain/InquiryResponse.java b/src/main/java/com/scg/stop/domain/project/domain/InquiryReply.java similarity index 93% rename from src/main/java/com/scg/stop/domain/project/domain/InquiryResponse.java rename to src/main/java/com/scg/stop/domain/project/domain/InquiryReply.java index eaf6871d..d23f4501 100644 --- a/src/main/java/com/scg/stop/domain/project/domain/InquiryResponse.java +++ b/src/main/java/com/scg/stop/domain/project/domain/InquiryReply.java @@ -17,7 +17,7 @@ @Entity @Getter @NoArgsConstructor(access = PROTECTED) -public class InquiryResponse extends BaseTimeEntity { +public class InquiryReply extends BaseTimeEntity { @Id @GeneratedValue(strategy = IDENTITY) diff --git a/src/main/java/com/scg/stop/domain/proposal/domain/Proposal.java b/src/main/java/com/scg/stop/domain/proposal/domain/Proposal.java index c0a510b9..be7ab9ec 100644 --- a/src/main/java/com/scg/stop/domain/proposal/domain/Proposal.java +++ b/src/main/java/com/scg/stop/domain/proposal/domain/Proposal.java @@ -54,7 +54,7 @@ public class Proposal extends BaseTimeEntity { private User user; @OneToOne(fetch = LAZY, mappedBy = "proposal") - private ProposalResponse proposalResponse; + private ProposalReply reply; public void setUser(User user) { this.user = user; diff --git a/src/main/java/com/scg/stop/domain/proposal/domain/ProposalResponse.java b/src/main/java/com/scg/stop/domain/proposal/domain/ProposalReply.java similarity index 93% rename from src/main/java/com/scg/stop/domain/proposal/domain/ProposalResponse.java rename to src/main/java/com/scg/stop/domain/proposal/domain/ProposalReply.java index 59f5286e..93e1c9cc 100644 --- a/src/main/java/com/scg/stop/domain/proposal/domain/ProposalResponse.java +++ b/src/main/java/com/scg/stop/domain/proposal/domain/ProposalReply.java @@ -17,7 +17,7 @@ @Entity @Getter @NoArgsConstructor(access = PROTECTED) -public class ProposalResponse extends BaseTimeEntity { +public class ProposalReply extends BaseTimeEntity { @Id @GeneratedValue(strategy = IDENTITY) diff --git a/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java index 5c0b747e..7ac50699 100644 --- a/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java +++ b/src/main/java/com/scg/stop/user/dto/response/UserInquiryResponse.java @@ -6,8 +6,6 @@ import java.time.LocalDateTime; -import static lombok.AccessLevel.PRIVATE; - @Getter @AllArgsConstructor public class UserInquiryResponse { @@ -16,7 +14,7 @@ public class UserInquiryResponse { private String title; private Long projectId; private LocalDateTime createdDate; - private boolean hasResponse; + private boolean hasReply; public static UserInquiryResponse from(Inquiry inquiry) { return new UserInquiryResponse( @@ -24,7 +22,7 @@ public static UserInquiryResponse from(Inquiry inquiry) { inquiry.getTitle(), inquiry.getProject() != null ? inquiry.getProject().getId() : null, inquiry.getCreatedAt(), - inquiry.getResponse() != null + inquiry.getReply() != null ); } } diff --git a/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java b/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java index 156fb4ec..d6a5f69d 100644 --- a/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java +++ b/src/main/java/com/scg/stop/user/dto/response/UserProposalResponse.java @@ -1,14 +1,11 @@ package com.scg.stop.user.dto.response; -import com.scg.stop.domain.project.domain.Inquiry; import com.scg.stop.domain.proposal.domain.Proposal; import lombok.AllArgsConstructor; import lombok.Getter; import java.time.LocalDateTime; -import static lombok.AccessLevel.PRIVATE; - @Getter @AllArgsConstructor public class UserProposalResponse { @@ -16,14 +13,14 @@ public class UserProposalResponse { private Long id; private String title; private LocalDateTime createdDate; - private boolean hasResponse; + private boolean hasReply; public static UserProposalResponse from(Proposal proposal) { return new UserProposalResponse( proposal.getId(), proposal.getTitle(), proposal.getCreatedAt(), - proposal.getProposalResponse() != null + proposal.getReply() != null ); } } diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index fa9ce113..3d8a2ce9 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -244,7 +244,7 @@ void getUserInquiries() throws Exception { fieldWithPath("[].title").description("문의 제목"), fieldWithPath("[].projectId").description("프로젝트 ID"), fieldWithPath("[].createdDate").description("문의 생성일"), - fieldWithPath("[].hasResponse").description("답변 여부") + fieldWithPath("[].hasReply").description("답변 여부") ) )); @@ -280,7 +280,7 @@ void getUserProposals() throws Exception { fieldWithPath("[].id").description("과제 제안 ID"), fieldWithPath("[].title").description("프로젝트명"), fieldWithPath("[].createdDate").description("과제 제안 생성일"), - fieldWithPath("[].hasResponse").description("답변 여부") + fieldWithPath("[].hasReply").description("답변 여부") ) )); From d2a1cd835d5f6ba285913ba04e13c92e519abfe0 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Tue, 12 Nov 2024 15:17:21 +0900 Subject: [PATCH 33/37] =?UTF-8?q?=EB=A8=B8=EC=A7=80=20=EC=B6=A9=EB=8F=8C?= =?UTF-8?q?=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/FavoriteProjectRepository.java | 15 - .../project/repository/InquiryRepository.java | 11 - .../repository/FavoriteVideoRepository.java | 19 - .../repository/FavoriteProjectRepository.java | 8 + .../project/repository/InquiryRepository.java | 5 + .../scg/stop/user/service/UserService.java | 6 +- .../repository/FavoriteVideoRepository.java | 10 + .../static/docs/aiHub-controller-test.html | 18 +- .../resources/static/docs/application.html | 32 +- .../static/docs/auth-controller-test.html | 12 +- .../resources/static/docs/department.html | 14 +- .../resources/static/docs/eventNotice.html | 66 +- .../resources/static/docs/eventPeriod.html | 62 +- .../static/docs/file-controller-test.html | 16 +- src/main/resources/static/docs/gallery.html | 82 +- src/main/resources/static/docs/index.html | 27318 ++++++++-------- src/main/resources/static/docs/inquiry.html | 1666 + .../static/docs/jobInfo-controller-test.html | 10 +- .../resources/static/docs/jobInterview.html | 36 +- src/main/resources/static/docs/notice.html | 66 +- src/main/resources/static/docs/project.html | 68 +- src/main/resources/static/docs/quiz.html | 1602 +- src/main/resources/static/docs/talk.html | 42 +- src/main/resources/static/docs/user.html | 121 +- 24 files changed, 16885 insertions(+), 14420 deletions(-) delete mode 100644 src/main/java/com/scg/stop/domain/project/repository/FavoriteProjectRepository.java delete mode 100644 src/main/java/com/scg/stop/domain/project/repository/InquiryRepository.java delete mode 100644 src/main/java/com/scg/stop/domain/video/repository/FavoriteVideoRepository.java create mode 100644 src/main/resources/static/docs/inquiry.html diff --git a/src/main/java/com/scg/stop/domain/project/repository/FavoriteProjectRepository.java b/src/main/java/com/scg/stop/domain/project/repository/FavoriteProjectRepository.java deleted file mode 100644 index cba14005..00000000 --- a/src/main/java/com/scg/stop/domain/project/repository/FavoriteProjectRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.scg.stop.domain.project.repository; - -import com.scg.stop.project.domain.FavoriteProject; -import com.scg.stop.project.domain.Project; -import com.scg.stop.user.domain.User; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - -import java.util.List; - -public interface FavoriteProjectRepository extends JpaRepository { - @Query("SELECT f.project FROM FavoriteProject f WHERE f.user = :user") - List findAllByUser(@Param("user") User user); -} diff --git a/src/main/java/com/scg/stop/domain/project/repository/InquiryRepository.java b/src/main/java/com/scg/stop/domain/project/repository/InquiryRepository.java deleted file mode 100644 index f9898ffd..00000000 --- a/src/main/java/com/scg/stop/domain/project/repository/InquiryRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.scg.stop.domain.project.repository; - -import com.scg.stop.project.domain.Inquiry; -import com.scg.stop.user.domain.User; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.List; - -public interface InquiryRepository extends JpaRepository { - List findByUser(User user); -} \ No newline at end of file diff --git a/src/main/java/com/scg/stop/domain/video/repository/FavoriteVideoRepository.java b/src/main/java/com/scg/stop/domain/video/repository/FavoriteVideoRepository.java deleted file mode 100644 index 1e5bc786..00000000 --- a/src/main/java/com/scg/stop/domain/video/repository/FavoriteVideoRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.scg.stop.domain.video.repository; - -import com.scg.stop.video.domain.FavoriteVideo; -import com.scg.stop.video.domain.JobInterview; -import com.scg.stop.video.domain.Talk; -import com.scg.stop.user.domain.User; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - -import java.util.List; - -public interface FavoriteVideoRepository extends JpaRepository { - @Query("SELECT f.talk FROM FavoriteVideo f WHERE f.user = :user AND f.talk IS NOT NULL") - List findTalksByUser(@Param("user") User user); - - @Query("SELECT f.jobInterview FROM FavoriteVideo f WHERE f.user = :user AND f.jobInterview IS NOT NULL") - List findJobInterviewsByUser(@Param("user") User user); -} diff --git a/src/main/java/com/scg/stop/project/repository/FavoriteProjectRepository.java b/src/main/java/com/scg/stop/project/repository/FavoriteProjectRepository.java index 67a88a2b..b69bd2d2 100644 --- a/src/main/java/com/scg/stop/project/repository/FavoriteProjectRepository.java +++ b/src/main/java/com/scg/stop/project/repository/FavoriteProjectRepository.java @@ -1,10 +1,18 @@ package com.scg.stop.project.repository; import com.scg.stop.project.domain.FavoriteProject; +import com.scg.stop.project.domain.Project; +import com.scg.stop.user.domain.User; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import java.util.List; import java.util.Optional; public interface FavoriteProjectRepository extends JpaRepository { Optional findByProjectIdAndUserId(Long projectId, Long userId); + + @Query("SELECT f.project FROM FavoriteProject f WHERE f.user = :user") + List findAllByUser(@Param("user") User user); } diff --git a/src/main/java/com/scg/stop/project/repository/InquiryRepository.java b/src/main/java/com/scg/stop/project/repository/InquiryRepository.java index a08d5f32..ed48f2a8 100644 --- a/src/main/java/com/scg/stop/project/repository/InquiryRepository.java +++ b/src/main/java/com/scg/stop/project/repository/InquiryRepository.java @@ -1,13 +1,18 @@ package com.scg.stop.project.repository; import com.scg.stop.project.domain.Inquiry; +import com.scg.stop.user.domain.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.util.List; + public interface InquiryRepository extends JpaRepository { @Query("SELECT i FROM Inquiry i WHERE :title IS NULL OR i.title LIKE %:title%") Page findInquiries(@Param("title") String title, Pageable pageable); + + List findByUser(User user); } diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index dd99f78c..50b7475f 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -2,13 +2,13 @@ import com.scg.stop.project.domain.Inquiry; import com.scg.stop.project.domain.Project; -import com.scg.stop.domain.project.repository.FavoriteProjectRepository; -import com.scg.stop.domain.project.repository.InquiryRepository; +import com.scg.stop.project.repository.FavoriteProjectRepository; +import com.scg.stop.project.repository.InquiryRepository; import com.scg.stop.domain.proposal.domain.Proposal; import com.scg.stop.domain.proposal.repository.ProposalRepository; import com.scg.stop.video.domain.JobInterview; import com.scg.stop.video.domain.Talk; -import com.scg.stop.domain.video.repository.FavoriteVideoRepository; +import com.scg.stop.video.repository.FavoriteVideoRepository; import com.scg.stop.global.exception.BadRequestException; import com.scg.stop.global.exception.ExceptionCode; import com.scg.stop.user.domain.*; diff --git a/src/main/java/com/scg/stop/video/repository/FavoriteVideoRepository.java b/src/main/java/com/scg/stop/video/repository/FavoriteVideoRepository.java index 1a41d5c3..b3268c35 100644 --- a/src/main/java/com/scg/stop/video/repository/FavoriteVideoRepository.java +++ b/src/main/java/com/scg/stop/video/repository/FavoriteVideoRepository.java @@ -5,6 +5,10 @@ import com.scg.stop.video.domain.JobInterview; import com.scg.stop.video.domain.Talk; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; public interface FavoriteVideoRepository extends JpaRepository { FavoriteVideo findByTalkAndUser(Talk talk, User user); @@ -12,4 +16,10 @@ public interface FavoriteVideoRepository extends JpaRepository findTalksByUser(@Param("user") User user); + + @Query("SELECT f.jobInterview FROM FavoriteVideo f WHERE f.user = :user AND f.jobInterview IS NOT NULL") + List findJobInterviewsByUser(@Param("user") User user); } diff --git a/src/main/resources/static/docs/aiHub-controller-test.html b/src/main/resources/static/docs/aiHub-controller-test.html index 5025b31d..d7a7cb7a 100644 --- a/src/main/resources/static/docs/aiHub-controller-test.html +++ b/src/main/resources/static/docs/aiHub-controller-test.html @@ -540,7 +540,7 @@

HTTP request

POST /aihub/models HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Content-Length: 199
+Content-Length: 206
 Host: localhost:8080
 
 {
@@ -563,13 +563,11 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1221 +Content-Length: 1270 { "totalElements" : 2, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "title" : "title", @@ -600,6 +598,8 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 2, "pageable" : { "pageNumber" : 0, @@ -918,7 +918,7 @@

HTTP request

POST /aihub/datasets HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Content-Length: 197
+Content-Length: 204
 Host: localhost:8080
 
 {
@@ -941,13 +941,11 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1217 +Content-Length: 1266 { "totalElements" : 2, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "title" : "title", @@ -978,6 +976,8 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 2, "pageable" : { "pageNumber" : 0, @@ -1206,7 +1206,7 @@

Response fields

diff --git a/src/main/resources/static/docs/application.html b/src/main/resources/static/docs/application.html index 5bef031e..d204309b 100644 --- a/src/main/resources/static/docs/application.html +++ b/src/main/resources/static/docs/application.html @@ -497,13 +497,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 1176 +Content-Length: 1235 { "totalElements" : 3, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "id" : 1, @@ -511,24 +509,24 @@

HTTP response

"division" : "배민", "position" : null, "userType" : "INACTIVE_COMPANY", - "createdAt" : "2024-10-29T22:38:57.12596", - "updatedAt" : "2024-10-29T22:38:57.125962" + "createdAt" : "2024-11-12T15:04:16.8961349", + "updatedAt" : "2024-11-12T15:04:16.8961349" }, { "id" : 2, "name" : "김교수", "division" : "솦융대", "position" : "교수", "userType" : "INACTIVE_PROFESSOR", - "createdAt" : "2024-10-29T22:38:57.12597", - "updatedAt" : "2024-10-29T22:38:57.125972" + "createdAt" : "2024-11-12T15:04:16.8961349", + "updatedAt" : "2024-11-12T15:04:16.8961349" }, { "id" : 3, "name" : "박교수", "division" : "정통대", "position" : "교수", "userType" : "INACTIVE_PROFESSOR", - "createdAt" : "2024-10-29T22:38:57.125975", - "updatedAt" : "2024-10-29T22:38:57.125975" + "createdAt" : "2024-11-12T15:04:16.8961349", + "updatedAt" : "2024-11-12T15:04:16.8961349" } ], "number" : 0, "sort" : { @@ -536,6 +534,8 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 3, "pageable" : { "pageNumber" : 0, @@ -786,7 +786,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 272 +Content-Length: 284 { "id" : 1, @@ -796,8 +796,8 @@

HTTP response

"division" : "배민", "position" : "CEO", "userType" : "INACTIVE_COMPANY", - "createdAt" : "2024-10-29T22:38:57.150487", - "updatedAt" : "2024-10-29T22:38:57.150489" + "createdAt" : "2024-11-12T15:04:17.0431853", + "updatedAt" : "2024-11-12T15:04:17.0431853" }
@@ -926,7 +926,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 262 +Content-Length: 275 { "id" : 1, @@ -936,8 +936,8 @@

HTTP response

"division" : "배민", "position" : "CEO", "userType" : "COMPANY", - "createdAt" : "2024-10-29T22:38:57.14394", - "updatedAt" : "2024-10-29T22:38:57.143942" + "createdAt" : "2024-11-12T15:04:16.9965445", + "updatedAt" : "2024-11-12T15:04:16.9965445" }
@@ -1077,7 +1077,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/auth-controller-test.html b/src/main/resources/static/docs/auth-controller-test.html index 870be9e4..eb9a46e4 100644 --- a/src/main/resources/static/docs/auth-controller-test.html +++ b/src/main/resources/static/docs/auth-controller-test.html @@ -489,8 +489,8 @@

HTTP response

Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers -Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Tue, 5 Nov 2024 13:38:54 GMT; Secure; HttpOnly; SameSite=None -Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Tue, 5 Nov 2024 13:38:54 GMT; Secure; SameSite=None +Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Tue, 19 Nov 2024 06:04:01 GMT; Secure; HttpOnly; SameSite=None +Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Tue, 19 Nov 2024 06:04:01 GMT; Secure; SameSite=None Location: https://localhost:3000/login/kakao @@ -515,7 +515,7 @@

HTTP request

POST /auth/register HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: access_token
-Content-Length: 289
+Content-Length: 301
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -661,7 +661,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 86 +Content-Length: 90 { "name" : "stop-user", @@ -738,7 +738,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 45 +Content-Length: 47 { "accessToken" : "reissued_access_token" @@ -785,7 +785,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/department.html b/src/main/resources/static/docs/department.html index 0dd15421..a97b784a 100644 --- a/src/main/resources/static/docs/department.html +++ b/src/main/resources/static/docs/department.html @@ -483,14 +483,16 @@

HTTP response

Response fields

---++++ - + + @@ -498,11 +500,13 @@

Response fields

+ + @@ -517,7 +521,7 @@

Response fields

diff --git a/src/main/resources/static/docs/eventNotice.html b/src/main/resources/static/docs/eventNotice.html index ebc2768e..cafc10c3 100644 --- a/src/main/resources/static/docs/eventNotice.html +++ b/src/main/resources/static/docs/eventNotice.html @@ -454,7 +454,7 @@

HTTP request

POST /eventNotices HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 141
+Content-Length: 146
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -521,7 +521,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 979 +Content-Length: 1019 { "id" : 1, @@ -529,29 +529,29 @@

HTTP response

"content" : "이벤트 공지 사항 내용", "hitCount" : 0, "fixed" : true, - "createdAt" : "2024-10-29T22:38:55.011501", - "updatedAt" : "2024-10-29T22:38:55.011503", + "createdAt" : "2024-11-12T15:04:03.7121108", + "updatedAt" : "2024-11-12T15:04:03.7121108", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.011484", - "updatedAt" : "2024-10-29T22:38:55.011492" + "createdAt" : "2024-11-12T15:04:03.7121108", + "updatedAt" : "2024-11-12T15:04:03.7121108" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.011494", - "updatedAt" : "2024-10-29T22:38:55.011496" + "createdAt" : "2024-11-12T15:04:03.7121108", + "updatedAt" : "2024-11-12T15:04:03.7121108" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.011498", - "updatedAt" : "2024-10-29T22:38:55.0115" + "createdAt" : "2024-11-12T15:04:03.7121108", + "updatedAt" : "2024-11-12T15:04:03.7121108" } ] }
@@ -722,28 +722,26 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 874 +Content-Length: 919 { "totalElements" : 2, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "id" : 1, "title" : "이벤트 공지 사항 1", "hitCount" : 10, "fixed" : true, - "createdAt" : "2024-10-29T22:38:55.024738", - "updatedAt" : "2024-10-29T22:38:55.024743" + "createdAt" : "2024-11-12T15:04:03.7949335", + "updatedAt" : "2024-11-12T15:04:03.7949335" }, { "id" : 2, "title" : "이벤트 공지 사항 2", "hitCount" : 10, "fixed" : false, - "createdAt" : "2024-10-29T22:38:55.024751", - "updatedAt" : "2024-10-29T22:38:55.024753" + "createdAt" : "2024-11-12T15:04:03.7949335", + "updatedAt" : "2024-11-12T15:04:03.7949335" } ], "number" : 0, "sort" : { @@ -751,6 +749,8 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 2, "pageable" : { "pageNumber" : 0, @@ -994,7 +994,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 958 +Content-Length: 997 { "id" : 1, @@ -1002,29 +1002,29 @@

HTTP response

"content" : "content", "hitCount" : 10, "fixed" : true, - "createdAt" : "2024-10-29T22:38:54.991825", - "updatedAt" : "2024-10-29T22:38:54.991827", + "createdAt" : "2024-11-12T15:04:03.5238303", + "updatedAt" : "2024-11-12T15:04:03.5238303", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:54.991809", - "updatedAt" : "2024-10-29T22:38:54.991815" + "createdAt" : "2024-11-12T15:04:03.5238303", + "updatedAt" : "2024-11-12T15:04:03.5238303" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:54.991817", - "updatedAt" : "2024-10-29T22:38:54.99182" + "createdAt" : "2024-11-12T15:04:03.5238303", + "updatedAt" : "2024-11-12T15:04:03.5238303" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:54.991821", - "updatedAt" : "2024-10-29T22:38:54.991823" + "createdAt" : "2024-11-12T15:04:03.5238303", + "updatedAt" : "2024-11-12T15:04:03.5238303" } ] } @@ -1171,7 +1171,7 @@

HTTP request

PUT /eventNotices/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 162
+Content-Length: 167
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1238,7 +1238,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 975 +Content-Length: 1009 { "id" : 1, @@ -1247,28 +1247,28 @@

HTTP response

"hitCount" : 10, "fixed" : false, "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-10-29T22:38:54.967831", + "updatedAt" : "2024-11-12T15:04:03.3264144", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-10-29T22:38:54.967785" + "updatedAt" : "2024-11-12T15:04:03.3264144" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-10-29T22:38:54.967795" + "updatedAt" : "2024-11-12T15:04:03.3264144" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-10-29T22:38:54.967803" + "updatedAt" : "2024-11-12T15:04:03.3264144" } ] }
@@ -1440,7 +1440,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/eventPeriod.html b/src/main/resources/static/docs/eventPeriod.html index bc1433aa..677a74cf 100644 --- a/src/main/resources/static/docs/eventPeriod.html +++ b/src/main/resources/static/docs/eventPeriod.html @@ -455,13 +455,13 @@

HTTP request

POST /eventPeriods HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 84
+Content-Length: 89
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
 {
-  "start" : "2024-10-29T22:38:55.260304",
-  "end" : "2024-11-08T22:38:55.260308"
+  "start" : "2024-11-12T15:04:04.8161421",
+  "end" : "2024-11-22T15:04:04.8161421"
 }
@@ -508,15 +508,15 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 205 +Content-Length: 216 { "id" : 1, "year" : 2024, - "start" : "2024-10-29T22:38:55.260312", - "end" : "2024-11-08T22:38:55.260313", - "createdAt" : "2024-10-29T22:38:55.260315", - "updatedAt" : "2024-10-29T22:38:55.260317" + "start" : "2024-11-12T15:04:04.8161421", + "end" : "2024-11-22T15:04:04.8161421", + "createdAt" : "2024-11-12T15:04:04.8161421", + "updatedAt" : "2024-11-12T15:04:04.8161421" } @@ -605,15 +605,15 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 204 +Content-Length: 208 { "id" : 1, "year" : 2024, - "start" : "2024-10-29T22:38:55.251774", - "end" : "2024-11-08T22:38:55.251775", - "createdAt" : "2024-10-29T22:38:55.251778", - "updatedAt" : "2024-10-29T22:38:55.25178" + "start" : "2024-11-12T15:04:04.77104", + "end" : "2024-11-22T15:04:04.77104", + "createdAt" : "2024-11-12T15:04:04.77104", + "updatedAt" : "2024-11-12T15:04:04.77104" } @@ -702,22 +702,22 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 416 +Content-Length: 432 [ { "id" : 1, "year" : 2024, - "start" : "2024-10-29T22:38:55.269307", - "end" : "2024-11-08T22:38:55.269311", - "createdAt" : "2024-10-29T22:38:55.269314", - "updatedAt" : "2024-10-29T22:38:55.269315" + "start" : "2024-11-12T15:04:04.896861", + "end" : "2024-11-22T15:04:04.896861", + "createdAt" : "2024-11-12T15:04:04.896861", + "updatedAt" : "2024-11-12T15:04:04.896861" }, { "id" : 2, "year" : 2025, - "start" : "2024-10-29T22:38:55.269317", - "end" : "2024-11-08T22:38:55.269319", - "createdAt" : "2024-10-29T22:38:55.269321", - "updatedAt" : "2024-10-29T22:38:55.269323" + "start" : "2024-11-12T15:04:04.896861", + "end" : "2024-11-22T15:04:04.896861", + "createdAt" : "2024-11-12T15:04:04.8978643", + "updatedAt" : "2024-11-12T15:04:04.8978643" } ] @@ -793,13 +793,13 @@

HTTP request

PUT /eventPeriod HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 84
+Content-Length: 87
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
 {
-  "start" : "2024-10-29T22:38:55.233418",
-  "end" : "2024-11-08T22:38:55.233422"
+  "start" : "2024-11-12T15:04:04.688568",
+  "end" : "2024-11-22T15:04:04.688568"
 }
@@ -846,15 +846,15 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 205 +Content-Length: 212 { "id" : 1, "year" : 2024, - "start" : "2024-10-29T22:38:55.233454", - "end" : "2024-11-08T22:38:55.233455", - "createdAt" : "2024-10-29T22:38:55.233457", - "updatedAt" : "2024-10-29T22:38:55.233459" + "start" : "2024-11-12T15:04:04.688568", + "end" : "2024-11-22T15:04:04.688568", + "createdAt" : "2024-11-12T15:04:04.688568", + "updatedAt" : "2024-11-12T15:04:04.688568" } @@ -925,7 +925,7 @@

Response fields

diff --git a/src/main/resources/static/docs/file-controller-test.html b/src/main/resources/static/docs/file-controller-test.html index 9513dbc3..66f1a5e2 100644 --- a/src/main/resources/static/docs/file-controller-test.html +++ b/src/main/resources/static/docs/file-controller-test.html @@ -500,22 +500,22 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 446 +Content-Length: 464 [ { "id" : 1, - "uuid" : "e5fd517c-7376-4dce-83ea-693607200e43", + "uuid" : "6759ebde-c9ff-45d7-9d74-e32a43dc3cf2", "name" : "첨부파일1.png", "mimeType" : "image/png", - "createdAt" : "2024-10-29T22:38:55.703391", - "updatedAt" : "2024-10-29T22:38:55.703395" + "createdAt" : "2024-11-12T15:04:07.8310858", + "updatedAt" : "2024-11-12T15:04:07.8310858" }, { "id" : 2, - "uuid" : "338f27eb-914c-4ef2-a5b2-6f0d6b7f2053", + "uuid" : "cebc684a-eb66-4bf5-b420-40a6303271f3", "name" : "첨부파일2.pdf", "mimeType" : "application/pdf", - "createdAt" : "2024-10-29T22:38:55.703419", - "updatedAt" : "2024-10-29T22:38:55.703421" + "createdAt" : "2024-11-12T15:04:07.8310858", + "updatedAt" : "2024-11-12T15:04:07.8310858" } ] @@ -639,7 +639,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/gallery.html b/src/main/resources/static/docs/gallery.html index 6e6802b3..09bbdfcc 100644 --- a/src/main/resources/static/docs/gallery.html +++ b/src/main/resources/static/docs/gallery.html @@ -455,7 +455,7 @@

HTTP request

POST /galleries HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 96
+Content-Length: 101
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -522,7 +522,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 889 +Content-Length: 929 { "id" : 1, @@ -530,29 +530,29 @@

HTTP response

"year" : 2024, "month" : 4, "hitCount" : 1, - "createdAt" : "2024-10-29T22:38:55.963428", - "updatedAt" : "2024-10-29T22:38:55.96343", + "createdAt" : "2024-11-12T15:04:09.3618421", + "updatedAt" : "2024-11-12T15:04:09.3618421", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "사진1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.963412", - "updatedAt" : "2024-10-29T22:38:55.963416" + "createdAt" : "2024-11-12T15:04:09.3618421", + "updatedAt" : "2024-11-12T15:04:09.3618421" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "사진2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.963418", - "updatedAt" : "2024-10-29T22:38:55.96342" + "createdAt" : "2024-11-12T15:04:09.3618421", + "updatedAt" : "2024-11-12T15:04:09.3618421" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "사진3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.963421", - "updatedAt" : "2024-10-29T22:38:55.963423" + "createdAt" : "2024-11-12T15:04:09.3618421", + "updatedAt" : "2024-11-12T15:04:09.3618421" } ] }
@@ -728,13 +728,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1234 +Content-Length: 1289 { "totalElements" : 1, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 1, "content" : [ { "id" : 1, @@ -742,29 +740,29 @@

HTTP response

"year" : 2024, "month" : 4, "hitCount" : 0, - "createdAt" : "2024-10-29T22:38:55.939716", - "updatedAt" : "2024-10-29T22:38:55.939717", + "createdAt" : "2024-11-12T15:04:09.1602347", + "updatedAt" : "2024-11-12T15:04:09.1602347", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "사진1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.939702", - "updatedAt" : "2024-10-29T22:38:55.939706" + "createdAt" : "2024-11-12T15:04:09.1602347", + "updatedAt" : "2024-11-12T15:04:09.1602347" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "사진2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.939708", - "updatedAt" : "2024-10-29T22:38:55.93971" + "createdAt" : "2024-11-12T15:04:09.1602347", + "updatedAt" : "2024-11-12T15:04:09.1602347" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "사진3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.939711", - "updatedAt" : "2024-10-29T22:38:55.939712" + "createdAt" : "2024-11-12T15:04:09.1602347", + "updatedAt" : "2024-11-12T15:04:09.1602347" } ] } ], "number" : 0, @@ -773,6 +771,8 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 1, "pageable" : "INSTANCE", "empty" : false @@ -1005,7 +1005,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 890 +Content-Length: 929 { "id" : 1, @@ -1013,29 +1013,29 @@

HTTP response

"year" : 2024, "month" : 4, "hitCount" : 1, - "createdAt" : "2024-10-29T22:38:55.954566", - "updatedAt" : "2024-10-29T22:38:55.954568", + "createdAt" : "2024-11-12T15:04:09.2727084", + "updatedAt" : "2024-11-12T15:04:09.2727084", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "사진1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.954554", - "updatedAt" : "2024-10-29T22:38:55.954558" + "createdAt" : "2024-11-12T15:04:09.2727084", + "updatedAt" : "2024-11-12T15:04:09.2727084" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "사진2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.95456", - "updatedAt" : "2024-10-29T22:38:55.954561" + "createdAt" : "2024-11-12T15:04:09.2727084", + "updatedAt" : "2024-11-12T15:04:09.2727084" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "사진3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.954563", - "updatedAt" : "2024-10-29T22:38:55.954564" + "createdAt" : "2024-11-12T15:04:09.2727084", + "updatedAt" : "2024-11-12T15:04:09.2727084" } ] } @@ -1200,7 +1200,7 @@

HTTP request

PUT /galleries/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 93
+Content-Length: 98
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1289,7 +1289,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 887 +Content-Length: 926 { "id" : 1, @@ -1297,29 +1297,29 @@

HTTP response

"year" : 2024, "month" : 5, "hitCount" : 1, - "createdAt" : "2024-10-29T22:38:55.911236", - "updatedAt" : "2024-10-29T22:38:55.911238", + "createdAt" : "2024-11-12T15:04:08.9705233", + "updatedAt" : "2024-11-12T15:04:08.9705233", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "사진1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.911175", - "updatedAt" : "2024-10-29T22:38:55.911179" + "createdAt" : "2024-11-12T15:04:08.9695134", + "updatedAt" : "2024-11-12T15:04:08.9695134" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "사진2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.911184", - "updatedAt" : "2024-10-29T22:38:55.911185" + "createdAt" : "2024-11-12T15:04:08.9695134", + "updatedAt" : "2024-11-12T15:04:08.9695134" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "사진3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:55.91119", - "updatedAt" : "2024-10-29T22:38:55.911191" + "createdAt" : "2024-11-12T15:04:08.9695134", + "updatedAt" : "2024-11-12T15:04:08.9695134" } ] }
@@ -1439,7 +1439,7 @@

Response fields

diff --git a/src/main/resources/static/docs/index.html b/src/main/resources/static/docs/index.html index 04ca9c92..2b34079f 100644 --- a/src/main/resources/static/docs/index.html +++ b/src/main/resources/static/docs/index.html @@ -1,13277 +1,14043 @@ - - - - - - - -S-TOP Rest Docs - - - - - - -
-
-

커스텀 예외 코드

-
PathName TypeRequired Description

[].id

Number

true

학과 ID

[].name

String

true

학과 이름

---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CodeMessage

1000

요청 형식이 올바르지 않습니다.

1001

해당 연도의 행사 기간이 이미 존재합니다.

1002

올해의 이벤트 기간이 존재하지 않습니다.

1003

이벤트 시작 일시 혹은 종료 일시가 올해를 벗어났습니다.

2001

소셜 로그인 공급자로부터 유저 정보를 받아올 수 없습니다.

2002

소셜 로그인 공급자로부터 인증 토큰을 받아올 수 없습니다.

3000

접근할 수 없는 리소스입니다.

3001

유효하지 않은 Refresh Token 입니다.

3002

토큰 검증에 실패했습니다.

3003

유효하지 않은 Access Token 입니다.

13000

Notion 데이터를 가져오는데 실패했습니다.

4000

유저 id 를 찾을 수 없습니다.

4001

회원가입이 필요합니다.

4002

유저 권한이 존재하지 않습니다.

4003

학과가 존재하지 않습니다.

4004

학과/학번 정보가 존재하지 않습니다.

4005

회원 가입 이용이 불가능한 회원 유형입니다.

4010

ID에 해당하는 인증 신청 정보가 존재하지 않습니다.

4011

이미 인증 된 회원입니다.

77000

프로젝트를 찾을 수 없습니다.

77001

프로젝트 썸네일을 찾을 수 없습니다

77002

프로젝트 포스터를 찾을 수 없습니다

77003

멤버 정보가 올바르지 않습니다.

77004

기술 스택 정보가 올바르지 않습니다.

77005

관심 표시한 프로젝트가 이미 존재합니다

77007

관심 표시한 프로젝트를 찾을 수 없습니다.

77008

이미 좋아요 한 프로젝트입니다.

77009

좋아요 표시한 프로젝트가 존재하지 않습니다

77010

댓글을 찾을 수 없습니다

77011

유저 정보가 일치하지 않습니다

5000

파일 업로드를 실패했습니다.

5001

파일 가져오기를 실패했습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

10000

요청한 ID에 해당하는 공지사항이 존재하지 않습니다.

11000

요청한 ID에 해당하는 이벤트가 존재하지 않습니다.

8000

요청한 ID에 해당하는 문의가 존재하지 않습니다.

8001

요청한 ID에 해당하는 문의 답변이 존재하지 않습니다.

8002

이미 답변이 등록된 문의입니다.

8003

해당 문의에 대한 권한이 없습니다.

8200

해당 ID에 해당하는 잡페어 인터뷰가 없습니다.

8400

해당 ID에 해당하는 대담 영상이 없습니다.

8401

퀴즈 데이터가 존재하지 않습니다.

8402

퀴즈 제출 데이터가 존재하지 않습니다.

8601

이미 퀴즈의 정답을 모두 맞추었습니다.

8801

이미 관심 리스트에 추가되었습니다.

8802

이미 관심 리스트에 추가되어 있지 않습니다.

8804

퀴즈 이벤트 참여 기간이 아닙니다.

8805

대담 영상과 현재 이벤트 참여 연도가 일치하지 않습니다.

8901

퀴즈 최대 시도 횟수를 초과하였습니다.

71001

엑셀 파일이 주어진 클래스와 호환되지 않습니다.

9001

요청한 ID에 해당하는 갤러리가 존재하지 않습니다.

- -
-

인증 API

-
-
-
-

카카오 소셜 로그인 (POST /auth/login/kakao/)

-
-
-
-

HTTP request

-
-
-
GET /auth/login/kakao?code=codefromkakaologin HTTP/1.1
-Host: localhost:8080
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

code

true

카카오 인가코드

-
-
-

HTTP response

-
-
-
HTTP/1.1 302 Found
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Tue, 5 Nov 2024 13:38:54 GMT; Secure; HttpOnly; SameSite=None
-Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Tue, 5 Nov 2024 13:38:54 GMT; Secure; SameSite=None
-Location: https://localhost:3000/login/kakao
-
-
-
-
-

Response fields

-
-

Snippet response-fields not found for operation::auth-controller-test/kakao-social-login

-
-
-
-
-
-
-

회원가입 (POST /auth/register)

-
-
-
-

HTTP request

-
-
-
POST /auth/register HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Content-Length: 289
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "name" : "stop-user",
-  "phoneNumber" : "010-1234-1234",
-  "userType" : "STUDENT",
-  "email" : "email@gmail.com",
-  "signUpSource" : "ad",
-  "studentInfo" : {
-    "department" : "소프트웨어학과",
-    "studentNumber" : "2021123123"
-  },
-  "division" : null,
-  "position" : null
-}
-
-
-
-
-

Request cookies

- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

Request headers

- ---- - - - - - - - - - - - - -
NameDescription

Authorization

access token

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

유저 이름

phoneNumber

String

true

전화 번호

userType

String

true

회원 유형

email

String

true

이메일

signUpSource

String

false

가입 경로

studentInfo.department

String

true

학과

studentInfo.studentNumber

String

true

학번

division

String

false

소속

position

String

false

직책

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 86
-
-{
-  "name" : "stop-user",
-  "email" : "email@email.com",
-  "phone" : "010-1234-1234"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

이름

email

String

true

이메일

phone

String

true

전화번호

-
-
-
-
-
-

Access Token 재발급 (POST /auth/reissue)

-
-
-
-

HTTP request

-
-
-
POST /auth/reissue HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 45
-
-{
-  "accessToken" : "reissued_access_token"
-}
-
-
-
-
-
-
-
-

로그아웃 (POST /auth/logout)

-
-
-
-

HTTP request

-
-
-
POST /auth/logout HTTP/1.1
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-Content-Type: application/x-www-form-urlencoded
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

파일 API

-
-
-
-

다중 파일 업로드 (POST /files)

-
-
-
-

HTTP request

-
-
-
POST /files HTTP/1.1
-Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Host: localhost:8080
-
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=files; filename=첨부파일1.png
-Content-Type: image/png
-
-[BINARY DATA - PNG IMAGE CONTENT]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=files; filename=첨부파일2.pdf
-Content-Type: application/pdf
-
-[BINARY DATA - PDF CONTENT]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
-
-
-

Request parts

- ---- - - - - - - - - - - - - -
PartDescription

files

업로드할 파일 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 446
-
-[ {
-  "id" : 1,
-  "uuid" : "e5fd517c-7376-4dce-83ea-693607200e43",
-  "name" : "첨부파일1.png",
-  "mimeType" : "image/png",
-  "createdAt" : "2024-10-29T22:38:55.703391",
-  "updatedAt" : "2024-10-29T22:38:55.703395"
-}, {
-  "id" : 2,
-  "uuid" : "338f27eb-914c-4ef2-a5b2-6f0d6b7f2053",
-  "name" : "첨부파일2.pdf",
-  "mimeType" : "application/pdf",
-  "createdAt" : "2024-10-29T22:38:55.703419",
-  "updatedAt" : "2024-10-29T22:38:55.703421"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

파일 ID

[].uuid

String

true

파일 UUID

[].name

String

true

파일 이름

[].mimeType

String

true

파일의 MIME 타입

[].createdAt

String

true

파일 생성일

[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

파일 조회 (GET /files/{fileId})

-
-
-
-

HTTP request

-
-
-
GET /files/1 HTTP/1.1
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /files/{fileId}
ParameterDescription

fileId

파일 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: image/png;charset=UTF-8
-Content-Length: 33
-
-[BINARY DATA - PNG IMAGE CONTENT]
-
-
-
-
-
-
-
-
-
-

잡페어 인터뷰 API

-
-
-
-

잡페어 인터뷰 생성 (POST /jobInterviews)

-
-
-
-

HTTP request

-
-
-
POST /jobInterviews HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 213
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "category" : "INTERN"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 317
-
-{
-  "id" : 1,
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "category" : "INTERN",
-  "createdAt" : "2024-10-29T22:38:57.366975",
-  "updatedAt" : "2024-10-29T22:38:57.366976"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 리스트 조회 (GET /jobInterviews)

-
-
-
-

HTTP request

-
-
-
GET /jobInterviews HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 잡페어 인터뷰 연도

category

false

찾고자 하는 잡페어 인터뷰 카테고리: SENIOR, INTERN

title

false

찾고자 하는 잡페어 인터뷰의 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1205
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "잡페어 인터뷰의 제목1",
-    "youtubeId" : "유튜브 고유 ID1",
-    "year" : 2023,
-    "talkerBelonging" : "대담자의 소속1",
-    "talkerName" : "대담자의 성명1",
-    "favorite" : false,
-    "category" : "INTERN",
-    "createdAt" : "2024-10-29T22:38:57.350426",
-    "updatedAt" : "2024-10-29T22:38:57.350429"
-  }, {
-    "id" : 2,
-    "title" : "잡페어 인터뷰의 제목2",
-    "youtubeId" : "유튜브 고유 ID2",
-    "year" : 2024,
-    "talkerBelonging" : "대담자의 소속2",
-    "talkerName" : "대담자의 성명2",
-    "favorite" : true,
-    "category" : "INTERN",
-    "createdAt" : "2024-10-29T22:38:57.35044",
-    "updatedAt" : "2024-10-29T22:38:57.350441"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

잡페어 인터뷰 ID

content[].title

String

true

잡페어 인터뷰 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

잡페어 인터뷰 연도

content[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

content[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

content[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

content[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

content[].createdAt

String

true

잡페어 인터뷰 생성일

content[].updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 단건 조회 (GET /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
GET /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

조회할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 339
-
-{
-  "id" : 1,
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "favorite" : false,
-  "category" : "INTERN",
-  "createdAt" : "2024-10-29T22:38:57.360921",
-  "updatedAt" : "2024-10-29T22:38:57.360922"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 수정 (PUT /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
PUT /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 217
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 제목",
-  "youtubeId" : "수정된 유튜브 ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정된 대담자 소속",
-  "talkerName" : "수정된 대담자 성명",
-  "category" : "INTERN"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

수정할 잡페어 인터뷰의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 314
-
-{
-  "id" : 1,
-  "title" : "수정된 제목",
-  "youtubeId" : "수정된 유튜브 ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정된 대담자 소속",
-  "talkerName" : "수정된 대담자 성명",
-  "category" : "INTERN",
-  "createdAt" : "2021-01-01T12:00:00",
-  "updatedAt" : "2024-10-29T22:38:57.331715"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 삭제 (DELETE /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
DELETE /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

삭제할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

잡페어 인터뷰 관심 등록 (POST /jobInterviews/{jobInterviews}/favorite)

-
-
-
-

HTTP request

-
-
-
POST /jobInterviews/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에 추가할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

잡페어 인터뷰 관심 삭제 (DELETE /jobInterviews/{jobInterviews}/favorite)

-
-
-
-

HTTP request

-
-
-
DELETE /jobInterviews/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에서 삭제할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

대담 영상 API

-
-
-
-

대담 영상 생성 (POST /talks)

-
-
-
-

HTTP request

-
-
-
POST /talks HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 361
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 464
-
-{
-  "id" : 1,
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-10-29T22:38:57.956919",
-  "updatedAt" : "2024-10-29T22:38:57.95692"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 리스트 조회 (GET /talks)

-
-
-
-

HTTP request

-
-
-
GET /talks HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 대담 영상의 연도

title

false

찾고자 하는 대담 영상의 제목 일부

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 999
-
-{
-  "totalElements" : 1,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "제목",
-    "youtubeId" : "유튜브 고유ID",
-    "year" : 2024,
-    "talkerBelonging" : "대담자 소속",
-    "talkerName" : "대담자 성명",
-    "favorite" : true,
-    "quiz" : [ {
-      "question" : "질문1",
-      "answer" : 0,
-      "options" : [ "선지1", "선지2" ]
-    }, {
-      "question" : "질문2",
-      "answer" : 0,
-      "options" : [ "선지1", "선지2" ]
-    } ],
-    "createdAt" : "2024-10-29T22:38:57.964821",
-    "updatedAt" : "2024-10-29T22:38:57.964822"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 1,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

대담 영상 ID

content[].title

String

true

대담 영상 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

대담 영상 연도

content[].talkerBelonging

String

true

대담자의 소속된 직장/단체

content[].talkerName

String

true

대담자의 성명

content[].favorite

Boolean

true

관심한 대담영상의 여부

content[].quiz

Array

false

퀴즈 데이터, 없는경우 null

content[].quiz[].question

String

false

퀴즈 1개의 질문

content[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

content[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

content[].createdAt

String

true

대담 영상 생성일

content[].updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 단건 조회 (GET /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
GET /talks/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

조회할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 485
-
-{
-  "id" : 1,
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "favorite" : true,
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-10-29T22:38:57.949768",
-  "updatedAt" : "2024-10-29T22:38:57.94977"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

favorite

Boolean

true

관심한 대담영상의 여부

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 수정 (PUT /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
PUT /talks/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 461
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정한 제목",
-  "youtubeId" : "수정한 유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정한 대담자 소속",
-  "talkerName" : "수정한 대담자 성명",
-  "quiz" : [ {
-    "question" : "수정한 질문1",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  }, {
-    "question" : "수정한 질문2",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  } ]
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

수정할 대담 영상의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 565
-
-{
-  "id" : 1,
-  "title" : "수정한 제목",
-  "youtubeId" : "수정한 유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정한 대담자 소속",
-  "talkerName" : "수정한 대담자 성명",
-  "quiz" : [ {
-    "question" : "수정한 질문1",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  }, {
-    "question" : "수정한 질문2",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  } ],
-  "createdAt" : "2024-10-29T22:38:57.913428",
-  "updatedAt" : "2024-10-29T22:38:57.913431"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 삭제 (DELETE /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
DELETE /talks/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

삭제할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

대담 영상의 퀴즈 조회 (GET /talks/{talkId}/quiz)

-
-
-
-

HTTP request

-
-
-
GET /talks/1/quiz HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 가져올 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 205
-
-{
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-
-
-
-

대담 영상의 퀴즈 결과 제출 (POST /talks/{talkId}/quiz)

-
-
-
-

HTTP request

-
-
-
POST /talks/1/quiz HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Content-Length: 47
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "result" : {
-    "0" : 0,
-    "1" : 1
-  }
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 제출할 대담 영상의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

result

Object

true

퀴즈를 푼 결과

result.*

Number

true

퀴즈 각 문제별 정답 인덱스, key는 문제 번호

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 40
-
-{
-  "success" : true,
-  "tryCount" : 1
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

success

Boolean

true

퀴즈 성공 여부

tryCount

Number

true

퀴즈 시도 횟수

-
-
-
-
-
-

대담 영상의 관심 등록 (POST /talks/{talkId}/favorite)

-
-
-
-

HTTP request

-
-
-
POST /talks/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에 추가할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

대담 영상의 관심 삭제 (DELETE /talks/{talkId}/favorite)

-
-
-
-

HTTP request

-
-
-
DELETE /talks/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에서 삭제할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

유저의 퀴즈 제출 기록 조회 (GET /talks/{talkId/quiz/submit)

-
-
-
-

HTTP request

-
-
-
GET /talks/1/quiz/submit HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz/submit
ParameterDescription

talkId

퀴즈가 연결된 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 41
-
-{
-  "success" : false,
-  "tryCount" : 2
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

tryCount

Number

true

시도한 횟수

success

Boolean

true

퀴즈 성공 여부

-
-
-
-
-
-
-
-

퀴즈 결과 API

-
-
-
-

퀴즈 결과 조회 (GET /quizzes/result)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 739
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "userId" : 1,
-    "name" : "name",
-    "phone" : "010-1111-1111",
-    "email" : "scg@scg.skku.ac.kr",
-    "successCount" : 3
-  }, {
-    "userId" : 2,
-    "name" : "name2",
-    "phone" : "010-0000-1234",
-    "email" : "iam@2tle.io",
-    "successCount" : 1
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

-
-
-
-
-
-

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result/excel HTTP/1.1
-Content-Type: application/octet-stream;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/octet-stream;charset=UTF-8
-Content-Disposition: attachment; filename=excel.xlsx
-Content-Length: 2822
-
-PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
-�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
-�0D�~EȽ��ADҔ���A? ��6�lB�J?ߜ���0���ͯ�)�@��׍H6���V>��$;�SC
-;̢(�ra�g�l�&�e��L!y�%��49��`_���4G���F��J��Wg
�GS�b����
-~�PK�|wؑ�PK-docProps/core.xmlm��J�0E��=M�emQ�gP|ɱ-6�hǿ7�c�-�^gq���A
�;:�]��$A-��u[��n��H�גFcM�!��	�p�Ez�I�hτ�I�e^t���"�c�b��!^]��W�"y~
-�<p���]�䨔bQ�77�)T���Q�a:�����<�~��q��r��F��n���^O_H��f�!(�(`���F�����z�!M�')���bGKV����s��'��ٸ�2�a�����幂?57�PK�_*X�PK-xl/sharedStrings.xml=�A� ツ��.z0Ɣ�`������,�����q2��o�ԇ���N�E��x5�z>�W���(R�K���^4{�����ŀ�5��y�V����y�m�XV�\�.�j����
8�PKp��&x�PK-
xl/styles.xml���n� ��>bop2TQ��P)U�RWb�6*�����ӤS�Nw�s���3ߍ֐���t��(l��������ҝx�!N=@$ɀ��}��3c���ʰr`:i��2��w,�
-�d
�T��R#�voc �;c�iE��Û��E<|��4Iɣ����F#��n���B�z�F���y�j3y��yҥ�jt>���2��Lژ�!6��2F�OY��4@M�!���G��������1�t��y��p��"	n����u�����a�ΦDi�9�&#��%I��9��}���cK��T��$?������`J������7���o��f��M|PK�1X@C�PK-xl/workbook.xmlM���0��>E�wi1ƨ����z/�HmI�_j��qf��)ʧٌ��w�LC��ָ��[u��T�b�a��؊;���8�9��G�)��5�|�:�2<8MuK=b�#�	q�V�u
����K��H\)�\�&�t͌��%���?��B��T�PK	���PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
����s����;[�E8D&a��h@-
��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-�|wؑ��docProps/app.xmlPK-�_*X�qdocProps/core.xmlPK-p��&x��xl/sharedStrings.xmlPK-�1X@C�
�xl/styles.xmlPK-	���xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
-
-
-
-
-
-
-
-
-
-

공지 사항 API

-
-
-

공지 사항 생성 (POST /notices)

-
-
-
-

HTTP request

-
-
-
POST /notices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 121
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "공지 사항 제목",
-  "content" : "공지 사항 내용",
-  "fixed" : true,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 960
-
-{
-  "id" : 1,
-  "title" : "공지 사항 제목",
-  "content" : "공지 사항 내용",
-  "hitCount" : 0,
-  "fixed" : true,
-  "createdAt" : "2024-10-29T22:38:56.701497",
-  "updatedAt" : "2024-10-29T22:38:56.701498",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:56.70149",
-    "updatedAt" : "2024-10-29T22:38:56.701491"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:56.701493",
-    "updatedAt" : "2024-10-29T22:38:56.701493"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:56.701494",
-    "updatedAt" : "2024-10-29T22:38:56.701495"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 리스트 조회 (GET /notices)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP request

-
-
-
GET /notices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 854
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "공지 사항 1",
-    "hitCount" : 10,
-    "fixed" : true,
-    "createdAt" : "2024-10-29T22:38:56.662802",
-    "updatedAt" : "2024-10-29T22:38:56.662804"
-  }, {
-    "id" : 2,
-    "title" : "공지 사항 2",
-    "hitCount" : 10,
-    "fixed" : false,
-    "createdAt" : "2024-10-29T22:38:56.662818",
-    "updatedAt" : "2024-10-29T22:38:56.662819"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

공지 사항 ID

content[].title

String

true

공지 사항 제목

content[].hitCount

Number

true

공지 사항 조회수

content[].fixed

Boolean

true

공지 사항 고정 여부

content[].createdAt

String

true

공지 사항 생성일

content[].updatedAt

String

true

공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

공지 사항 조회 (GET /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

조회할 공지 사항 ID

-
-
-

HTTP request

-
-
-
GET /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 947
-
-{
-  "id" : 1,
-  "title" : "공지 사항 제목",
-  "content" : "content",
-  "hitCount" : 10,
-  "fixed" : true,
-  "createdAt" : "2024-10-29T22:38:56.694639",
-  "updatedAt" : "2024-10-29T22:38:56.69464",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:56.69463",
-    "updatedAt" : "2024-10-29T22:38:56.694634"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:56.694635",
-    "updatedAt" : "2024-10-29T22:38:56.694636"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:56.694637",
-    "updatedAt" : "2024-10-29T22:38:56.694638"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 수정 (PUT /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

수정할 공지 사항 ID

-
-
-

HTTP request

-
-
-
PUT /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 142
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 공지 사항 제목",
-  "content" : "수정된 공지 사항 내용",
-  "fixed" : false,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 955
-
-{
-  "id" : 1,
-  "title" : "수정된 공지 사항 제목",
-  "content" : "수정된 공지 사항 내용",
-  "hitCount" : 10,
-  "fixed" : false,
-  "createdAt" : "2024-01-01T12:00:00",
-  "updatedAt" : "2024-10-29T22:38:56.676945",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-10-29T22:38:56.676908"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-10-29T22:38:56.676917"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-10-29T22:38:56.676919"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 삭제 (DELETE /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

삭제할 공지 사항 ID

-
-
-

HTTP request

-
-
-
DELETE /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

이벤트 공지 사항 API

-
-
-

이벤트 공지 사항 생성 (POST /eventNotices)

-
-
-
-

HTTP request

-
-
-
POST /eventNotices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 141
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "이벤트 공지 사항 내용",
-  "fixed" : true,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 979
-
-{
-  "id" : 1,
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "이벤트 공지 사항 내용",
-  "hitCount" : 0,
-  "fixed" : true,
-  "createdAt" : "2024-10-29T22:38:55.011501",
-  "updatedAt" : "2024-10-29T22:38:55.011503",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.011484",
-    "updatedAt" : "2024-10-29T22:38:55.011492"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.011494",
-    "updatedAt" : "2024-10-29T22:38:55.011496"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.011498",
-    "updatedAt" : "2024-10-29T22:38:55.0115"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 리스트 조회 (GET /eventNotices)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 이벤트 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP request

-
-
-
GET /eventNotices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 874
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "이벤트 공지 사항 1",
-    "hitCount" : 10,
-    "fixed" : true,
-    "createdAt" : "2024-10-29T22:38:55.024738",
-    "updatedAt" : "2024-10-29T22:38:55.024743"
-  }, {
-    "id" : 2,
-    "title" : "이벤트 공지 사항 2",
-    "hitCount" : 10,
-    "fixed" : false,
-    "createdAt" : "2024-10-29T22:38:55.024751",
-    "updatedAt" : "2024-10-29T22:38:55.024753"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

이벤트 공지 사항 ID

content[].title

String

true

이벤트 공지 사항 제목

content[].hitCount

Number

true

이벤트 공지 사항 조회수

content[].fixed

Boolean

true

이벤트 공지 사항 고정 여부

content[].createdAt

String

true

이벤트 공지 사항 생성일

content[].updatedAt

String

true

이벤트 공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

이벤트 공지 사항 조회 (GET /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

조회할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
GET /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 958
-
-{
-  "id" : 1,
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "content",
-  "hitCount" : 10,
-  "fixed" : true,
-  "createdAt" : "2024-10-29T22:38:54.991825",
-  "updatedAt" : "2024-10-29T22:38:54.991827",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:54.991809",
-    "updatedAt" : "2024-10-29T22:38:54.991815"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:54.991817",
-    "updatedAt" : "2024-10-29T22:38:54.99182"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:54.991821",
-    "updatedAt" : "2024-10-29T22:38:54.991823"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 수정 (PUT /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

수정할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
PUT /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 162
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 이벤트 공지 사항 제목",
-  "content" : "수정된 이벤트 공지 사항 내용",
-  "fixed" : false,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 975
-
-{
-  "id" : 1,
-  "title" : "수정된 이벤트 공지 사항 제목",
-  "content" : "수정된 이벤트 공지 사항 내용",
-  "hitCount" : 10,
-  "fixed" : false,
-  "createdAt" : "2024-01-01T12:00:00",
-  "updatedAt" : "2024-10-29T22:38:54.967831",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-10-29T22:38:54.967785"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-10-29T22:38:54.967795"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-10-29T22:38:54.967803"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 삭제 (DELETE /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

삭제할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
DELETE /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

이벤트 기간 API

-
-
-
-

이벤트 기간 생성 (POST /eventPeriods)

-
-
-
-

HTTP request

-
-
-
POST /eventPeriods HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 84
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "start" : "2024-10-29T22:38:55.260304",
-  "end" : "2024-11-08T22:38:55.260308"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 205
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-10-29T22:38:55.260312",
-  "end" : "2024-11-08T22:38:55.260313",
-  "createdAt" : "2024-10-29T22:38:55.260315",
-  "updatedAt" : "2024-10-29T22:38:55.260317"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-

올해의 이벤트 기간 조회 (GET /eventPeriod)

-
-
-
-

HTTP request

-
-
-
GET /eventPeriod HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 204
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-10-29T22:38:55.251774",
-  "end" : "2024-11-08T22:38:55.251775",
-  "createdAt" : "2024-10-29T22:38:55.251778",
-  "updatedAt" : "2024-10-29T22:38:55.25178"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-

전체 이벤트 기간 리스트 조회 (GET /eventPeriods)

-
-
-
-

HTTP request

-
-
-
GET /eventPeriods HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 416
-
-[ {
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-10-29T22:38:55.269307",
-  "end" : "2024-11-08T22:38:55.269311",
-  "createdAt" : "2024-10-29T22:38:55.269314",
-  "updatedAt" : "2024-10-29T22:38:55.269315"
-}, {
-  "id" : 2,
-  "year" : 2025,
-  "start" : "2024-10-29T22:38:55.269317",
-  "end" : "2024-11-08T22:38:55.269319",
-  "createdAt" : "2024-10-29T22:38:55.269321",
-  "updatedAt" : "2024-10-29T22:38:55.269323"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

이벤트 기간 ID

[].year

Number

true

이벤트 연도

[].start

String

true

이벤트 시작 일시

[].end

String

true

이벤트 종료 일시

[].createdAt

String

true

생성일

[].updatedAt

String

true

변경일

-
-
-
-
-
-

올해의 이벤트 기간 업데이트 (PUT /eventPeriod)

-
-
-
-

HTTP request

-
-
-
PUT /eventPeriod HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 84
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "start" : "2024-10-29T22:38:55.233418",
-  "end" : "2024-11-08T22:38:55.233422"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 205
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-10-29T22:38:55.233454",
-  "end" : "2024-11-08T22:38:55.233455",
-  "createdAt" : "2024-10-29T22:38:55.233457",
-  "updatedAt" : "2024-10-29T22:38:55.233459"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-
-
-

갤러리 API

-
-
-
-

갤러리 게시글 생성 (POST /galleries)

-
-
-
-

HTTP request

-
-
-
POST /galleries HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 96
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 889
-
-{
-  "id" : 1,
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "hitCount" : 1,
-  "createdAt" : "2024-10-29T22:38:55.963428",
-  "updatedAt" : "2024-10-29T22:38:55.96343",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.963412",
-    "updatedAt" : "2024-10-29T22:38:55.963416"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.963418",
-    "updatedAt" : "2024-10-29T22:38:55.96342"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.963421",
-    "updatedAt" : "2024-10-29T22:38:55.963423"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

갤러리 게시글 목록 조회 (GET /galleries)

-
-
-
-

HTTP request

-
-
-
GET /galleries?year=2024&month=4 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

연도

month

false

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1234
-
-{
-  "totalElements" : 1,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 1,
-  "content" : [ {
-    "id" : 1,
-    "title" : "새내기 배움터",
-    "year" : 2024,
-    "month" : 4,
-    "hitCount" : 0,
-    "createdAt" : "2024-10-29T22:38:55.939716",
-    "updatedAt" : "2024-10-29T22:38:55.939717",
-    "files" : [ {
-      "id" : 1,
-      "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-      "name" : "사진1.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-10-29T22:38:55.939702",
-      "updatedAt" : "2024-10-29T22:38:55.939706"
-    }, {
-      "id" : 2,
-      "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-      "name" : "사진2.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-10-29T22:38:55.939708",
-      "updatedAt" : "2024-10-29T22:38:55.93971"
-    }, {
-      "id" : 3,
-      "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-      "name" : "사진3.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-10-29T22:38:55.939711",
-      "updatedAt" : "2024-10-29T22:38:55.939712"
-    } ]
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 1,
-  "pageable" : "INSTANCE",
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

totalElements

Number

true

전체 데이터 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지당 데이터 수

content

Array

true

갤러리 목록

content[].id

Number

true

갤러리 ID

content[].title

String

true

갤러리 제목

content[].year

Number

true

갤러리 연도

content[].month

Number

true

갤러리 월

content[].hitCount

Number

true

갤러리 조회수

content[].createdAt

String

true

갤러리 생성일

content[].updatedAt

String

true

갤러리 수정일

content[].files

Array

true

파일 목록

content[].files[].id

Number

true

파일 ID

content[].files[].uuid

String

true

파일 UUID

content[].files[].name

String

true

파일 이름

content[].files[].mimeType

String

true

파일 MIME 타입

content[].files[].createdAt

String

true

파일 생성일

content[].files[].updatedAt

String

true

파일 수정일

number

Number

true

현재 페이지 번호

sort.empty

Boolean

true

정렬 정보

sort.sorted

Boolean

true

정렬 정보

sort.unsorted

Boolean

true

정렬 정보

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

numberOfElements

Number

true

현재 페이지의 데이터 수

empty

Boolean

true

빈 페이지 여부

-
-
-
-
-
-

갤러리 게시글 조회 (GET /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
GET /galleries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

조회할 갤러리 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 890
-
-{
-  "id" : 1,
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "hitCount" : 1,
-  "createdAt" : "2024-10-29T22:38:55.954566",
-  "updatedAt" : "2024-10-29T22:38:55.954568",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.954554",
-    "updatedAt" : "2024-10-29T22:38:55.954558"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.95456",
-    "updatedAt" : "2024-10-29T22:38:55.954561"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.954563",
-    "updatedAt" : "2024-10-29T22:38:55.954564"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

갤러리 게시글 삭제 (DELETE /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
DELETE /galleries/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

삭제할 갤러리 ID

-
-
-
-
-
-

갤러리 게시글 수정 (PUT /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
PUT /galleries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 93
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 제목",
-  "year" : 2024,
-  "month" : 5,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

수정할 갤러리 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 887
-
-{
-  "id" : 1,
-  "title" : "수정된 제목",
-  "year" : 2024,
-  "month" : 5,
-  "hitCount" : 1,
-  "createdAt" : "2024-10-29T22:38:55.911236",
-  "updatedAt" : "2024-10-29T22:38:55.911238",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.911175",
-    "updatedAt" : "2024-10-29T22:38:55.911179"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.911184",
-    "updatedAt" : "2024-10-29T22:38:55.911185"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-10-29T22:38:55.91119",
-    "updatedAt" : "2024-10-29T22:38:55.911191"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-
-
-

가입 신청 관리 API

-
-
-
-

가입 신청 리스트 조회 (GET /applications)

-
-
-
-

HTTP request

-
-
-
GET /applications HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 1176
-
-{
-  "totalElements" : 3,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "name" : "김영한",
-    "division" : "배민",
-    "position" : null,
-    "userType" : "INACTIVE_COMPANY",
-    "createdAt" : "2024-10-29T22:38:57.12596",
-    "updatedAt" : "2024-10-29T22:38:57.125962"
-  }, {
-    "id" : 2,
-    "name" : "김교수",
-    "division" : "솦융대",
-    "position" : "교수",
-    "userType" : "INACTIVE_PROFESSOR",
-    "createdAt" : "2024-10-29T22:38:57.12597",
-    "updatedAt" : "2024-10-29T22:38:57.125972"
-  }, {
-    "id" : 3,
-    "name" : "박교수",
-    "division" : "정통대",
-    "position" : "교수",
-    "userType" : "INACTIVE_PROFESSOR",
-    "createdAt" : "2024-10-29T22:38:57.125975",
-    "updatedAt" : "2024-10-29T22:38:57.125975"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 3,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

가입 신청 ID

content[].name

String

true

가입 신청자 이름

content[].division

String

false

소속

content[].position

String

false

직책

content[].userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

content[].createdAt

String

true

가입 신청 정보 생성일

content[].updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

가입 신청자 상세 정보 조회 (GET /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
GET /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 272
-
-{
-  "id" : 1,
-  "name" : "김영한",
-  "phone" : "010-1111-2222",
-  "email" : "email@gmail.com",
-  "division" : "배민",
-  "position" : "CEO",
-  "userType" : "INACTIVE_COMPANY",
-  "createdAt" : "2024-10-29T22:38:57.150487",
-  "updatedAt" : "2024-10-29T22:38:57.150489"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

교수/기업 가입 허가 (PATCH /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
PATCH /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 262
-
-{
-  "id" : 1,
-  "name" : "김영한",
-  "phone" : "010-1111-2222",
-  "email" : "email@gmail.com",
-  "division" : "배민",
-  "position" : "CEO",
-  "userType" : "COMPANY",
-  "createdAt" : "2024-10-29T22:38:57.14394",
-  "updatedAt" : "2024-10-29T22:38:57.143942"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [PROFESSOR, COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

교수/기업 가입 거절 (DELETE /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
DELETE /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

프로젝트 문의 사항 API

-
-
-
-

프로젝트 문의 사항 생성 (POST /projects/{projectId}/inquiry)

-
-
-
-

HTTP request

-
-
-
POST /projects/1/inquiry HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Content-Length: 102
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "프로젝트 문의 사항 제목",
-  "content" : "프로젝트 문의 사항 내용"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 283
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "문의 사항 제목",
-  "content" : "문의 사항 내용",
-  "createdAt" : "2024-10-29T22:38:56.24727",
-  "updatedAt" : "2024-10-29T22:38:56.247274"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 리스트 조회 (GET /inquiries)

-
-
-
-

HTTP request

-
-
-
GET /inquiries HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 823
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "authorName" : "프로젝트 문의 사항 제목",
-    "title" : "프로젝트 문의 사항 내용",
-    "createdAt" : "2024-10-29T22:38:56.218449"
-  }, {
-    "id" : 2,
-    "authorName" : "프로젝트 문의 사항 제목",
-    "title" : "프로젝트 문의 사항 내용",
-    "createdAt" : "2024-10-29T22:38:56.218476"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

문의 사항 ID

content[].authorName

String

true

문의 작성자 이름

content[].title

String

true

문의 사항 제목

content[].createdAt

String

true

문의 사항 생성 시간

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-

프로젝트 문의 사항 단건 조회 (GET /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
GET /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

조회할 문의 사항 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 284
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "문의 사항 제목",
-  "content" : "문의 사항 내용",
-  "createdAt" : "2024-10-29T22:38:56.234674",
-  "updatedAt" : "2024-10-29T22:38:56.234678"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 수정 (PUT /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
PUT /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Content-Length: 122
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 프로젝트 문의 사항 제목",
-  "content" : "수정된 프로젝트 문의 사항 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

수정할 문의 사항 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 304
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "수정된 문의 사항 제목",
-  "content" : "수정된 문의 사항 내용",
-  "createdAt" : "2024-10-29T22:38:56.266955",
-  "updatedAt" : "2024-10-29T22:38:56.266959"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

수정된 문의 사항 제목

content

String

true

수정된 문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 삭제 (DELETE /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
DELETE /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

삭제할 문의 사항 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-

프로젝트 문의 사항 답변 (POST /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
POST /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 76
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

답변할 문의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 88
-
-{
-  "id" : 1,
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 조회 (GET /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
GET /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

조회할 문의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 88
-
-{
-  "id" : 1,
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 수정 (PUT /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
PUT /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 96
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 문의 답변 제목",
-  "content" : "수정된 문의 답변 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

수정할 답변 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 108
-
-{
-  "id" : 1,
-  "title" : "수정된 문의 답변 제목",
-  "content" : "수정된 문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

수정된 답변 제목

content

String

true

수정된 답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 삭제 (DELETE /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
DELETE /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

삭제할 답변 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

프로젝트 API

-
-
-
-

프로젝트 조회 (GET /projects)

-
-

200 OK

-
-
-
-
HTTP request
-
-
-
GET /projects HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1759
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "thumbnailInfo" : {
-      "id" : 1,
-      "uuid" : "썸네일 uuid 1",
-      "name" : "썸네일 파일 이름 1",
-      "mimeType" : "썸네일 mime 타입 1"
-    },
-    "projectName" : "프로젝트 이름 1",
-    "teamName" : "팀 이름 1",
-    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-    "professorNames" : [ "교수 이름 1" ],
-    "projectType" : "STARTUP",
-    "projectCategory" : "BIG_DATA_ANALYSIS",
-    "awardStatus" : "FIRST",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : false,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  }, {
-    "id" : 2,
-    "thumbnailInfo" : {
-      "id" : 2,
-      "uuid" : "썸네일 uuid 2",
-      "name" : "썸네일 파일 이름 2",
-      "mimeType" : "썸네일 mime 타입 2"
-    },
-    "projectName" : "프로젝트 이름 2",
-    "teamName" : "팀 이름 2",
-    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-    "professorNames" : [ "교수 이름 2" ],
-    "projectType" : "LAB",
-    "projectCategory" : "AI_MACHINE_LEARNING",
-    "awardStatus" : "SECOND",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : true,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-
Query parameters
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

프로젝트 이름

year

false

프로젝트 년도

category

false

프로젝트 카테고리

type

false

프로젝트 타입

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-

프로젝트 생성 (POST /projects)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 535
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "thumbnailId" : 1,
-  "posterId" : 2,
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2021,
-  "awardStatus" : "NONE",
-  "members" : [ {
-    "name" : "학생 이름 1",
-    "role" : "STUDENT"
-  }, {
-    "name" : "학생 이름 2",
-    "role" : "STUDENT"
-  }, {
-    "name" : "교수 이름 1",
-    "role" : "PROFESSOR"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1480
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 2,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 2,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-  "professorNames" : [ "교수 이름 1" ],
-  "likeCount" : 0,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-10-29T22:38:56.958458",
-    "updatedAt" : "2024-10-29T22:38:56.95846"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-10-29T22:38:56.958461",
-    "updatedAt" : "2024-10-29T22:38:56.958462"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-10-29T22:38:56.958463",
-    "updatedAt" : "2024-10-29T22:38:56.958463"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
Request fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 조회 (GET /projects/{projectId})

-
-

200 OK

-
-
-
-
HTTP request
-
-
-
GET /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1481
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 2,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 2,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-  "professorNames" : [ "교수 이름 1" ],
-  "likeCount" : 0,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-10-29T22:38:56.934229",
-    "updatedAt" : "2024-10-29T22:38:56.934231"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-10-29T22:38:56.934235",
-    "updatedAt" : "2024-10-29T22:38:56.934236"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-10-29T22:38:56.934237",
-    "updatedAt" : "2024-10-29T22:38:56.934237"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 수정 (PUT /projects/{projectId})

-
-

200 OK

-
-
-
-
HTTP request
-
-
-
PUT /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 530
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "thumbnailId" : 3,
-  "posterId" : 4,
-  "projectName" : "프로젝트 이름",
-  "projectType" : "LAB",
-  "projectCategory" : "COMPUTER_VISION",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "members" : [ {
-    "name" : "학생 이름 3",
-    "role" : "STUDENT"
-  }, {
-    "name" : "학생 이름 4",
-    "role" : "STUDENT"
-  }, {
-    "name" : "교수 이름 2",
-    "role" : "PROFESSOR"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1477
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 3,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 4,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "LAB",
-  "projectCategory" : "COMPUTER_VISION",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-  "professorNames" : [ "교수 이름 2" ],
-  "likeCount" : 100,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-10-29T22:38:56.844657",
-    "updatedAt" : "2024-10-29T22:38:56.844659"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-10-29T22:38:56.844663",
-    "updatedAt" : "2024-10-29T22:38:56.844663"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-10-29T22:38:56.844665",
-    "updatedAt" : "2024-10-29T22:38:56.844666"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
Request fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 삭제 (DELETE /projects/{projectId})

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

관심 프로젝트 등록 (POST /projects/{projectId}/favorite)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

관심 프로젝트 삭제 (DELETE /projects/{projectId}/favorite)

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

프로젝트 좋아요 등록 (POST /projects/{projectId}/like)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects/1/like HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

프로젝트 좋아요 삭제 (DELETE /projects/{projectId}/like)

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1/like HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

프로젝트 댓글 등록 (POST /projects/{projectId}/comment)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects/1/comment HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Content-Length: 57
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "content" : "댓글 내용",
-  "isAnonymous" : true
-}
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 212
-
-{
-  "id" : 1,
-  "projectId" : 1,
-  "userName" : "유저 이름",
-  "isAnonymous" : true,
-  "content" : "댓글 내용",
-  "createdAt" : "2024-10-29T22:38:56.922837",
-  "updatedAt" : "2024-10-29T22:38:56.922839"
-}
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/comment
ParameterDescription

projectId

프로젝트 ID

-
-
-
Request fields
- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content

String

true

댓글 내용

isAnonymous

Boolean

true

익명 여부

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

댓글 ID

projectId

Number

true

프로젝트 ID

userName

String

true

유저 이름

isAnonymous

Boolean

true

익명 여부

content

String

true

댓글 내용

createdAt

String

true

생성 시간

updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 댓글 삭제 (DELETE /projects/{projectId}/comment)

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1/comment/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - - - - - -
Table 1. /projects/{projectId}/comment/{commentId}
ParameterDescription

projectId

프로젝트 ID

commentId

댓글 ID

-
-
-
-
-
-
-

수상 프로젝트 조회 (GET /projects/award?year={year})

-
-

200 No Content

-
-
-
-
HTTP request
-
-
-
GET /projects/award?year=2024 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1759
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "thumbnailInfo" : {
-      "id" : 1,
-      "uuid" : "썸네일 uuid 1",
-      "name" : "썸네일 파일 이름 1",
-      "mimeType" : "썸네일 mime 타입 1"
-    },
-    "projectName" : "프로젝트 이름 1",
-    "teamName" : "팀 이름 1",
-    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-    "professorNames" : [ "교수 이름 1" ],
-    "projectType" : "STARTUP",
-    "projectCategory" : "BIG_DATA_ANALYSIS",
-    "awardStatus" : "FIRST",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : false,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  }, {
-    "id" : 2,
-    "thumbnailInfo" : {
-      "id" : 2,
-      "uuid" : "썸네일 uuid 2",
-      "name" : "썸네일 파일 이름 2",
-      "mimeType" : "썸네일 mime 타입 2"
-    },
-    "projectName" : "프로젝트 이름 2",
-    "teamName" : "팀 이름 2",
-    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-    "professorNames" : [ "교수 이름 2" ],
-    "projectType" : "LAB",
-    "projectCategory" : "AI_MACHINE_LEARNING",
-    "awardStatus" : "SECOND",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : true,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-
Query parameters
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

true

프로젝트 년도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
-
-

AI HUB API

-
-
-
-

AI HUB 모델 리스트 조회 (POST /aihub/models)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

AI 모델 제목

learningModels

Array

true

학습 모델

topics

Array

true

주제 분류

developmentYears

Array

true

개발 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

-
-
-

HTTP request

-
-
-
POST /aihub/models HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 199
-Host: localhost:8080
-
-{
-  "title" : "title",
-  "learningModels" : [ "학습 모델 1" ],
-  "topics" : [ "주제 1" ],
-  "developmentYears" : [ 2024 ],
-  "professor" : "담당 교수 1",
-  "participants" : [ "학생 1" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1221
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "title" : "title",
-    "learningModels" : [ "학습 모델 1" ],
-    "topics" : [ "주제 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  }, {
-    "title" : "title",
-    "learningModels" : [ "학습 모델 1" ],
-    "topics" : [ "주제 1", "주제 2" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2", "학생 3" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 모델 제목

content[].learningModels

Array

true

학습 모델

content[].topics

Array

true

주제 분류

content[].developmentYears

Array

true

개발 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

AI HUB 데이터셋 리스트 조회 (POST /aihub/datasets)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

AI 데이터셋 제목

dataTypes

Array

true

데이터 유형

topics

Array

true

주제 분류

developmentYears

Array

true

구축 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

-
-
-

HTTP request

-
-
-
POST /aihub/datasets HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 197
-Host: localhost:8080
-
-{
-  "title" : "title",
-  "dataTypes" : [ "주제 1" ],
-  "topics" : [ "데이터 유형 1" ],
-  "developmentYears" : [ 2024 ],
-  "professor" : "담당 교수 1",
-  "participants" : [ "학생 1" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1217
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "title" : "title",
-    "dataTypes" : [ "주제 1" ],
-    "topics" : [ "데이터 유형 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  }, {
-    "title" : "title",
-    "dataTypes" : [ "주제 1", "주제 2" ],
-    "topics" : [ "데이터 유형 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2", "학생 3" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 데이터셋 제목

content[].topics

Array

true

주제 분류

content[].dataTypes

Array

true

데이터 유형

content[].developmentYears

Array

true

구축 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
-

JOB INFO API

-
-
-
-

JOB INFO 리스트 조회 (POST /jobInfos)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

company

String

true

기업명

jobTypes

Array

true

고용 형태

region

String

true

근무 지역

position

String

true

채용 포지션

hiringTime

String

true

채용 시점

state

Array

true

채용 상태

-
-
-

HTTP request

-
-
-
POST /jobInfos HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 198
-Host: localhost:8080
-
-{
-  "company" : "기업명 1",
-  "jobTypes" : [ "고용 형태 1" ],
-  "region" : "근무 지역 1",
-  "position" : "채용 포지션 1",
-  "hiringTime" : "채용 시점 1",
-  "state" : [ "open" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1295
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "company" : "기업명 1",
-    "jobTypes" : [ "고용 형태 1" ],
-    "region" : "근무 지역 1",
-    "position" : "채용 포지션 1",
-    "logo" : "로고 url",
-    "salary" : "연봉",
-    "website" : "웹사이트 url",
-    "state" : [ "open" ],
-    "hiringTime" : "채용 시점 1",
-    "object" : "page",
-    "id" : "노션 object 아이디 1",
-    "url" : "redirect url"
-  }, {
-    "company" : "기업명 1",
-    "jobTypes" : [ "고용 형태 1", "고용 형태 2" ],
-    "region" : "근무 지역 2",
-    "position" : "채용 포지션 1, 채용 시점 2",
-    "logo" : "로고 url",
-    "salary" : "연봉",
-    "website" : "웹사이트 url",
-    "state" : [ "open" ],
-    "hiringTime" : "채용 시점 1",
-    "object" : "page",
-    "id" : "노션 object 아이디 2",
-    "url" : "redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].company

String

true

기업명

content[].jobTypes

Array

true

고용 형태

content[].region

String

true

근무 지역

content[].position

String

true

채용 포지션

content[].logo

String

true

로고 url

content[].salary

String

true

연봉

content[].website

String

true

웹사이트 url

content[].state

Array

true

채용 상태

content[].hiringTime

String

true

채용 시점

content[].url

String

true

redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
- - - - - + + + + + + + +S-TOP Rest Docs + + + + + + +
+
+

커스텀 예외 코드

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodeMessage

1000

요청 형식이 올바르지 않습니다.

1001

해당 연도의 행사 기간이 이미 존재합니다.

1002

올해의 이벤트 기간이 존재하지 않습니다.

1003

이벤트 시작 일시 혹은 종료 일시가 올해를 벗어났습니다.

2001

소셜 로그인 공급자로부터 유저 정보를 받아올 수 없습니다.

2002

소셜 로그인 공급자로부터 인증 토큰을 받아올 수 없습니다.

3000

접근할 수 없는 리소스입니다.

3001

유효하지 않은 Refresh Token 입니다.

3002

토큰 검증에 실패했습니다.

3003

유효하지 않은 Access Token 입니다.

13000

Notion 데이터를 가져오는데 실패했습니다.

4000

유저 id 를 찾을 수 없습니다.

4001

회원가입이 필요합니다.

4002

유저 권한이 존재하지 않습니다.

4003

학과가 존재하지 않습니다.

4004

학과/학번 정보가 존재하지 않습니다.

4005

회원 가입 이용이 불가능한 회원 유형입니다.

4010

ID에 해당하는 인증 신청 정보가 존재하지 않습니다.

4011

이미 인증 된 회원입니다.

4100

회원 유형은 수정할 수 없습니다.

4101

소속 또는 직책의 형식이 잘못되었습니다.

77000

프로젝트를 찾을 수 없습니다.

77001

프로젝트 썸네일을 찾을 수 없습니다

77002

프로젝트 포스터를 찾을 수 없습니다

77003

멤버 정보가 올바르지 않습니다.

77004

기술 스택 정보가 올바르지 않습니다.

77005

관심 표시한 프로젝트가 이미 존재합니다

77007

관심 표시한 프로젝트를 찾을 수 없습니다.

77008

이미 좋아요 한 프로젝트입니다.

77009

좋아요 표시한 프로젝트가 존재하지 않습니다

77010

댓글을 찾을 수 없습니다

77011

유저 정보가 일치하지 않습니다

5000

파일 업로드를 실패했습니다.

5001

파일 가져오기를 실패했습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

10000

요청한 ID에 해당하는 공지사항이 존재하지 않습니다.

11000

요청한 ID에 해당하는 이벤트가 존재하지 않습니다.

8000

요청한 ID에 해당하는 문의가 존재하지 않습니다.

8001

요청한 ID에 해당하는 문의 답변이 존재하지 않습니다.

8002

이미 답변이 등록된 문의입니다.

8003

해당 문의에 대한 권한이 없습니다.

8200

해당 ID에 해당하는 잡페어 인터뷰가 없습니다.

8400

해당 ID에 해당하는 대담 영상이 없습니다.

8401

퀴즈 데이터가 존재하지 않습니다.

8402

퀴즈 제출 데이터가 존재하지 않습니다.

8601

이미 퀴즈의 정답을 모두 맞추었습니다.

8801

이미 관심 리스트에 추가되었습니다.

8802

이미 관심 리스트에 추가되어 있지 않습니다.

8804

퀴즈 이벤트 참여 기간이 아닙니다.

8805

대담 영상과 현재 이벤트 참여 연도가 일치하지 않습니다.

8901

퀴즈 최대 시도 횟수를 초과하였습니다.

71001

엑셀 파일이 주어진 클래스와 호환되지 않습니다.

9001

요청한 ID에 해당하는 갤러리가 존재하지 않습니다.

+
+
+

인증 API

+
+
+
+

카카오 소셜 로그인 (POST /auth/login/kakao/)

+
+
+
+

HTTP request

+
+
+
GET /auth/login/kakao?code=codefromkakaologin HTTP/1.1
+Host: localhost:8080
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + +
ParameterRequiredDescription

code

true

카카오 인가코드

+
+
+

HTTP response

+
+
+
HTTP/1.1 302 Found
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Tue, 19 Nov 2024 06:04:01 GMT; Secure; HttpOnly; SameSite=None
+Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Tue, 19 Nov 2024 06:04:01 GMT; Secure; SameSite=None
+Location: https://localhost:3000/login/kakao
+
+
+
+
+

Response fields

+
+

Snippet response-fields not found for operation::auth-controller-test/kakao-social-login

+
+
+
+
+
+
+

회원가입 (POST /auth/register)

+
+
+
+

HTTP request

+
+
+
POST /auth/register HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Content-Length: 301
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "name" : "stop-user",
+  "phoneNumber" : "010-1234-1234",
+  "userType" : "STUDENT",
+  "email" : "email@gmail.com",
+  "signUpSource" : "ad",
+  "studentInfo" : {
+    "department" : "소프트웨어학과",
+    "studentNumber" : "2021123123"
+  },
+  "division" : null,
+  "position" : null
+}
+
+
+
+
+

Request cookies

+ ++++ + + + + + + + + + + + + +
NameDescription

refresh-token

갱신 토큰

+
+
+

Request headers

+ ++++ + + + + + + + + + + + + +
NameDescription

Authorization

access token

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

name

String

true

유저 이름

phoneNumber

String

true

전화 번호

userType

String

true

회원 유형

email

String

true

이메일

signUpSource

String

false

가입 경로

studentInfo.department

String

true

학과

studentInfo.studentNumber

String

true

학번

division

String

false

소속

position

String

false

직책

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 90
+
+{
+  "name" : "stop-user",
+  "email" : "email@email.com",
+  "phone" : "010-1234-1234"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

name

String

true

이름

email

String

true

이메일

phone

String

true

전화번호

+
+
+
+
+
+

Access Token 재발급 (POST /auth/reissue)

+
+
+
+

HTTP request

+
+
+
POST /auth/reissue HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 47
+
+{
+  "accessToken" : "reissued_access_token"
+}
+
+
+
+
+
+
+
+

로그아웃 (POST /auth/logout)

+
+
+
+

HTTP request

+
+
+
POST /auth/logout HTTP/1.1
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+Content-Type: application/x-www-form-urlencoded
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

파일 API

+
+
+
+

다중 파일 업로드 (POST /files)

+
+
+
+

HTTP request

+
+
+
POST /files HTTP/1.1
+Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Host: localhost:8080
+
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Content-Disposition: form-data; name=files; filename=첨부파일1.png
+Content-Type: image/png
+
+[BINARY DATA - PNG IMAGE CONTENT]
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Content-Disposition: form-data; name=files; filename=첨부파일2.pdf
+Content-Type: application/pdf
+
+[BINARY DATA - PDF CONTENT]
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
+
+
+
+
+

Request parts

+ ++++ + + + + + + + + + + + + +
PartDescription

files

업로드할 파일 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 464
+
+[ {
+  "id" : 1,
+  "uuid" : "6759ebde-c9ff-45d7-9d74-e32a43dc3cf2",
+  "name" : "첨부파일1.png",
+  "mimeType" : "image/png",
+  "createdAt" : "2024-11-12T15:04:07.8310858",
+  "updatedAt" : "2024-11-12T15:04:07.8310858"
+}, {
+  "id" : 2,
+  "uuid" : "cebc684a-eb66-4bf5-b420-40a6303271f3",
+  "name" : "첨부파일2.pdf",
+  "mimeType" : "application/pdf",
+  "createdAt" : "2024-11-12T15:04:07.8310858",
+  "updatedAt" : "2024-11-12T15:04:07.8310858"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

파일 ID

[].uuid

String

true

파일 UUID

[].name

String

true

파일 이름

[].mimeType

String

true

파일의 MIME 타입

[].createdAt

String

true

파일 생성일

[].updatedAt

String

true

파일 수정일

+
+
+
+
+
+

파일 조회 (GET /files/{fileId})

+
+
+
+

HTTP request

+
+
+
GET /files/1 HTTP/1.1
+Host: localhost:8080
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /files/{fileId}
ParameterDescription

fileId

파일 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: image/png;charset=UTF-8
+Content-Length: 33
+
+[BINARY DATA - PNG IMAGE CONTENT]
+
+
+
+
+
+
+
+
+
+

잡페어 인터뷰 API

+
+
+
+

잡페어 인터뷰 생성 (POST /jobInterviews)

+
+
+
+

HTTP request

+
+
+
POST /jobInterviews HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 220
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "잡페어 인터뷰의 제목",
+  "youtubeId" : "유튜브 고유 ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자의 소속",
+  "talkerName" : "대담자의 성명",
+  "category" : "INTERN"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 329
+
+{
+  "id" : 1,
+  "title" : "잡페어 인터뷰의 제목",
+  "youtubeId" : "유튜브 고유 ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자의 소속",
+  "talkerName" : "대담자의 성명",
+  "category" : "INTERN",
+  "createdAt" : "2024-11-12T15:04:20.7648021",
+  "updatedAt" : "2024-11-12T15:04:20.7648021"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

+
+
+
+
+
+

잡페어 인터뷰 리스트 조회 (GET /jobInterviews)

+
+
+
+

HTTP request

+
+
+
GET /jobInterviews HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 잡페어 인터뷰 연도

category

false

찾고자 하는 잡페어 인터뷰 카테고리: SENIOR, INTERN

title

false

찾고자 하는 잡페어 인터뷰의 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1259
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "title" : "잡페어 인터뷰의 제목1",
+    "youtubeId" : "유튜브 고유 ID1",
+    "year" : 2023,
+    "talkerBelonging" : "대담자의 소속1",
+    "talkerName" : "대담자의 성명1",
+    "favorite" : false,
+    "category" : "INTERN",
+    "createdAt" : "2024-11-12T15:04:20.6120226",
+    "updatedAt" : "2024-11-12T15:04:20.6120226"
+  }, {
+    "id" : 2,
+    "title" : "잡페어 인터뷰의 제목2",
+    "youtubeId" : "유튜브 고유 ID2",
+    "year" : 2024,
+    "talkerBelonging" : "대담자의 소속2",
+    "talkerName" : "대담자의 성명2",
+    "favorite" : true,
+    "category" : "INTERN",
+    "createdAt" : "2024-11-12T15:04:20.6120226",
+    "updatedAt" : "2024-11-12T15:04:20.6120226"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

잡페어 인터뷰 ID

content[].title

String

true

잡페어 인터뷰 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

잡페어 인터뷰 연도

content[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

content[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

content[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

content[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

content[].createdAt

String

true

잡페어 인터뷰 생성일

content[].updatedAt

String

true

잡페어 인터뷰 수정일

+
+
+
+
+
+

잡페어 인터뷰 단건 조회 (GET /jobInterviews/{jobInterviewId})

+
+
+
+

HTTP request

+
+
+
GET /jobInterviews/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

조회할 잡페어 인터뷰의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 352
+
+{
+  "id" : 1,
+  "title" : "잡페어 인터뷰의 제목",
+  "youtubeId" : "유튜브 고유 ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자의 소속",
+  "talkerName" : "대담자의 성명",
+  "favorite" : false,
+  "category" : "INTERN",
+  "createdAt" : "2024-11-12T15:04:20.7001261",
+  "updatedAt" : "2024-11-12T15:04:20.7001261"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

+
+
+
+
+
+

잡페어 인터뷰 수정 (PUT /jobInterviews/{jobInterviewId})

+
+
+
+

HTTP request

+
+
+
PUT /jobInterviews/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 224
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 제목",
+  "youtubeId" : "수정된 유튜브 ID",
+  "year" : 2024,
+  "talkerBelonging" : "수정된 대담자 소속",
+  "talkerName" : "수정된 대담자 성명",
+  "category" : "INTERN"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

수정할 잡페어 인터뷰의 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 325
+
+{
+  "id" : 1,
+  "title" : "수정된 제목",
+  "youtubeId" : "수정된 유튜브 ID",
+  "year" : 2024,
+  "talkerBelonging" : "수정된 대담자 소속",
+  "talkerName" : "수정된 대담자 성명",
+  "category" : "INTERN",
+  "createdAt" : "2021-01-01T12:00:00",
+  "updatedAt" : "2024-11-12T15:04:20.4670126"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

+
+
+
+
+
+

잡페어 인터뷰 삭제 (DELETE /jobInterviews/{jobInterviewId})

+
+
+
+

HTTP request

+
+
+
DELETE /jobInterviews/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

삭제할 잡페어 인터뷰의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

잡페어 인터뷰 관심 등록 (POST /jobInterviews/{jobInterviews}/favorite)

+
+
+
+

HTTP request

+
+
+
POST /jobInterviews/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에 추가할 잡페어 인터뷰의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

잡페어 인터뷰 관심 삭제 (DELETE /jobInterviews/{jobInterviews}/favorite)

+
+
+
+

HTTP request

+
+
+
DELETE /jobInterviews/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에서 삭제할 잡페어 인터뷰의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

대담 영상 API

+
+
+
+

대담 영상 생성 (POST /talks)

+
+
+
+

HTTP request

+
+
+
POST /talks HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 376
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "제목",
+  "youtubeId" : "유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자 소속",
+  "talkerName" : "대담자 성명",
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 483
+
+{
+  "id" : 1,
+  "title" : "제목",
+  "youtubeId" : "유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자 소속",
+  "talkerName" : "대담자 성명",
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ],
+  "createdAt" : "2024-11-12T15:04:24.845687",
+  "updatedAt" : "2024-11-12T15:04:24.845687"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

+
+
+
+
+
+

대담 영상 리스트 조회 (GET /talks)

+
+
+
+

HTTP request

+
+
+
GET /talks HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 대담 영상의 연도

title

false

찾고자 하는 대담 영상의 제목 일부

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1047
+
+{
+  "totalElements" : 1,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "title" : "제목",
+    "youtubeId" : "유튜브 고유ID",
+    "year" : 2024,
+    "talkerBelonging" : "대담자 소속",
+    "talkerName" : "대담자 성명",
+    "favorite" : true,
+    "quiz" : [ {
+      "question" : "질문1",
+      "answer" : 0,
+      "options" : [ "선지1", "선지2" ]
+    }, {
+      "question" : "질문2",
+      "answer" : 0,
+      "options" : [ "선지1", "선지2" ]
+    } ],
+    "createdAt" : "2024-11-12T15:04:24.9098651",
+    "updatedAt" : "2024-11-12T15:04:24.9098651"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 1,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

대담 영상 ID

content[].title

String

true

대담 영상 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

대담 영상 연도

content[].talkerBelonging

String

true

대담자의 소속된 직장/단체

content[].talkerName

String

true

대담자의 성명

content[].favorite

Boolean

true

관심한 대담영상의 여부

content[].quiz

Array

false

퀴즈 데이터, 없는경우 null

content[].quiz[].question

String

false

퀴즈 1개의 질문

content[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

content[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

content[].createdAt

String

true

대담 영상 생성일

content[].updatedAt

String

true

대담 영상 수정일

+
+
+
+
+
+

대담 영상 단건 조회 (GET /talks/{talkId})

+
+
+
+

HTTP request

+
+
+
GET /talks/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}
ParameterDescription

talkId

조회할 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 507
+
+{
+  "id" : 1,
+  "title" : "제목",
+  "youtubeId" : "유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자 소속",
+  "talkerName" : "대담자 성명",
+  "favorite" : true,
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ],
+  "createdAt" : "2024-11-12T15:04:24.7720184",
+  "updatedAt" : "2024-11-12T15:04:24.7720184"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

favorite

Boolean

true

관심한 대담영상의 여부

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

+
+
+
+
+
+

대담 영상 수정 (PUT /talks/{talkId})

+
+
+
+

HTTP request

+
+
+
PUT /talks/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 476
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정한 제목",
+  "youtubeId" : "수정한 유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "수정한 대담자 소속",
+  "talkerName" : "수정한 대담자 성명",
+  "quiz" : [ {
+    "question" : "수정한 질문1",
+    "answer" : 0,
+    "options" : [ "수정한 선지1", "수정한 선지2" ]
+  }, {
+    "question" : "수정한 질문2",
+    "answer" : 0,
+    "options" : [ "수정한 선지1", "수정한 선지2" ]
+  } ]
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}
ParameterDescription

talkId

수정할 대담 영상의 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 585
+
+{
+  "id" : 1,
+  "title" : "수정한 제목",
+  "youtubeId" : "수정한 유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "수정한 대담자 소속",
+  "talkerName" : "수정한 대담자 성명",
+  "quiz" : [ {
+    "question" : "수정한 질문1",
+    "answer" : 0,
+    "options" : [ "수정한 선지1", "수정한 선지2" ]
+  }, {
+    "question" : "수정한 질문2",
+    "answer" : 0,
+    "options" : [ "수정한 선지1", "수정한 선지2" ]
+  } ],
+  "createdAt" : "2024-11-12T15:04:24.5646962",
+  "updatedAt" : "2024-11-12T15:04:24.5646962"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

+
+
+
+
+
+

대담 영상 삭제 (DELETE /talks/{talkId})

+
+
+
+

HTTP request

+
+
+
DELETE /talks/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}
ParameterDescription

talkId

삭제할 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

대담 영상의 퀴즈 조회 (GET /talks/{talkId}/quiz)

+
+
+
+

HTTP request

+
+
+
GET /talks/1/quiz HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 가져올 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 215
+
+{
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

+
+
+
+
+
+

대담 영상의 퀴즈 결과 제출 (POST /talks/{talkId}/quiz)

+
+
+
+

HTTP request

+
+
+
POST /talks/1/quiz HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Content-Length: 52
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "result" : {
+    "0" : 0,
+    "1" : 1
+  }
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 제출할 대담 영상의 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

result

Object

true

퀴즈를 푼 결과

result.*

Number

true

퀴즈 각 문제별 정답 인덱스, key는 문제 번호

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 43
+
+{
+  "success" : true,
+  "tryCount" : 1
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

success

Boolean

true

퀴즈 성공 여부

tryCount

Number

true

퀴즈 시도 횟수

+
+
+
+
+
+

대담 영상의 관심 등록 (POST /talks/{talkId}/favorite)

+
+
+
+

HTTP request

+
+
+
POST /talks/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에 추가할 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

대담 영상의 관심 삭제 (DELETE /talks/{talkId}/favorite)

+
+
+
+

HTTP request

+
+
+
DELETE /talks/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에서 삭제할 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

유저의 퀴즈 제출 기록 조회 (GET /talks/{talkId/quiz/submit)

+
+
+
+

HTTP request

+
+
+
GET /talks/1/quiz/submit HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/quiz/submit
ParameterDescription

talkId

퀴즈가 연결된 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 44
+
+{
+  "success" : false,
+  "tryCount" : 2
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

tryCount

Number

true

시도한 횟수

success

Boolean

true

퀴즈 성공 여부

+
+
+
+
+
+
+
+

퀴즈 결과 API

+
+
+
+

퀴즈 결과 조회 (GET /quizzes/result)

+
+
+
+

HTTP request

+
+
+
GET /quizzes/result HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 778
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "userId" : 1,
+    "name" : "name",
+    "phone" : "010-1111-1111",
+    "email" : "scg@scg.skku.ac.kr",
+    "successCount" : 3
+  }, {
+    "userId" : 2,
+    "name" : "name2",
+    "phone" : "010-0000-1234",
+    "email" : "iam@2tle.io",
+    "successCount" : 1
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

+
+
+
+
+
+

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

+
+
+
+

HTTP request

+
+
+
GET /quizzes/result/excel HTTP/1.1
+Content-Type: application/octet-stream;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/octet-stream;charset=UTF-8
+Content-Disposition: attachment; filename=excel.xlsx
+Content-Length: 2828
+
+PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
+�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
+�0D��ro�z�4� �'{����MHV�盓z���T��E�1e�����Ɇ�ѳ����:�No7jH!bb�Y��V��������T�)$o���0M��9ؗGb�7�pe��*~�R�>��Y�EB���nW������PK6n�!��PK-docProps/core.xmlm�]K�0��J�}���!��e (�(ޅ����h�7����.�������̀> �����bV9�۶Ə�]q�QL�j985�o�Jy�\�}pB�!���Q(_�.%/��#c�	��W�L�Z�z�-N�HR�$�$,�b�'�V�ҿ�ahE`6E�JF~����d!��_�q�q5sy#F��n���N_W���*�L�Q���s#?�������
+�|]0V0~�Aׂ������g��\Hh3q�sE�jn�PK�iX��PK-xl/sharedStrings.xml=�A
+�0�{��D�i�/��tm�&f7�����0Ì�7mꃕc&���B�y��Zx>���~72��X�I��nx�s�["�5����R7�\���u�\*����M��9��"��~PKh���y�PK-
+xl/styles.xml���n� ��J}���d���&C%W��J]�9ۨpX@"�O_0N�L:�������n4���ye���UA	`c�®���iKw���aҰ����C^�MF���Ik�!��c~p �O&�٦(��
+)/�dj<i�	CE�x�Z�*k�^�or:*i���XmQ(aY�m�P�]�B��S3O��,o�0O����%��[��Ii�;Ćf���ֱ K~��(Z�������}�91�8�/>Z'�nߟ%^jhC48��);�t�51�Jt�NȋcI"���iu��{lI���L����_�8ВfL.�����ƒ����hv���PK����E�PK-xl/workbook.xmlM���0��&�C�wi1ƨ����z/�@mI�_0��83��d��l�@�;	i"���|m\+�^\w'��v��>���=[xG���Tuh5%~D�$�V�E���P��!F;�Gn�q��[��j1=���F��U�&�3��U2]E3a�K	b���~���T�PK5%����PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
+����s����;[�E8D&a��h@-
+��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-6n�!���docProps/app.xmlPK-�iX��sdocProps/core.xmlPK-h���y��xl/sharedStrings.xmlPK-����E�
+�xl/styles.xmlPK-5%����
+xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
+
+
+
+
+
+
+
+
+
+

공지 사항 API

+
+
+

공지 사항 생성 (POST /notices)

+
+
+
+

HTTP request

+
+
+
POST /notices HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 126
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "공지 사항 제목",
+  "content" : "공지 사항 내용",
+  "fixed" : true,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 991
+
+{
+  "id" : 1,
+  "title" : "공지 사항 제목",
+  "content" : "공지 사항 내용",
+  "hitCount" : 0,
+  "fixed" : true,
+  "createdAt" : "2024-11-12T15:04:13.487226",
+  "updatedAt" : "2024-11-12T15:04:13.487226",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:13.487226",
+    "updatedAt" : "2024-11-12T15:04:13.487226"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:13.487226",
+    "updatedAt" : "2024-11-12T15:04:13.487226"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:13.487226",
+    "updatedAt" : "2024-11-12T15:04:13.487226"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

공지 사항 리스트 조회 (GET /notices)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP request

+
+
+
GET /notices HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 899
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "title" : "공지 사항 1",
+    "hitCount" : 10,
+    "fixed" : true,
+    "createdAt" : "2024-11-12T15:04:13.1973292",
+    "updatedAt" : "2024-11-12T15:04:13.1973292"
+  }, {
+    "id" : 2,
+    "title" : "공지 사항 2",
+    "hitCount" : 10,
+    "fixed" : false,
+    "createdAt" : "2024-11-12T15:04:13.1973292",
+    "updatedAt" : "2024-11-12T15:04:13.1973292"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

공지 사항 ID

content[].title

String

true

공지 사항 제목

content[].hitCount

Number

true

공지 사항 조회수

content[].fixed

Boolean

true

공지 사항 고정 여부

content[].createdAt

String

true

공지 사항 생성일

content[].updatedAt

String

true

공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+

공지 사항 조회 (GET /notices/{noticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

조회할 공지 사항 ID

+
+
+

HTTP request

+
+
+
GET /notices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 987
+
+{
+  "id" : 1,
+  "title" : "공지 사항 제목",
+  "content" : "content",
+  "hitCount" : 10,
+  "fixed" : true,
+  "createdAt" : "2024-11-12T15:04:13.4262238",
+  "updatedAt" : "2024-11-12T15:04:13.4262238",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:13.4262238",
+    "updatedAt" : "2024-11-12T15:04:13.4262238"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:13.4262238",
+    "updatedAt" : "2024-11-12T15:04:13.4262238"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:13.4262238",
+    "updatedAt" : "2024-11-12T15:04:13.4262238"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

공지 사항 수정 (PUT /notices/{noticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

수정할 공지 사항 ID

+
+
+

HTTP request

+
+
+
PUT /notices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 147
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 공지 사항 제목",
+  "content" : "수정된 공지 사항 내용",
+  "fixed" : false,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 989
+
+{
+  "id" : 1,
+  "title" : "수정된 공지 사항 제목",
+  "content" : "수정된 공지 사항 내용",
+  "hitCount" : 10,
+  "fixed" : false,
+  "createdAt" : "2024-01-01T12:00:00",
+  "updatedAt" : "2024-11-12T15:04:13.2794322",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-12T15:04:13.2794322"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-12T15:04:13.2794322"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-12T15:04:13.2794322"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

공지 사항 삭제 (DELETE /notices/{noticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

삭제할 공지 사항 ID

+
+
+

HTTP request

+
+
+
DELETE /notices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

이벤트 공지 사항 API

+
+
+

이벤트 공지 사항 생성 (POST /eventNotices)

+
+
+
+

HTTP request

+
+
+
POST /eventNotices HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 146
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "이벤트 공지 사항 제목",
+  "content" : "이벤트 공지 사항 내용",
+  "fixed" : true,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1019
+
+{
+  "id" : 1,
+  "title" : "이벤트 공지 사항 제목",
+  "content" : "이벤트 공지 사항 내용",
+  "hitCount" : 0,
+  "fixed" : true,
+  "createdAt" : "2024-11-12T15:04:03.7121108",
+  "updatedAt" : "2024-11-12T15:04:03.7121108",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:03.7121108",
+    "updatedAt" : "2024-11-12T15:04:03.7121108"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:03.7121108",
+    "updatedAt" : "2024-11-12T15:04:03.7121108"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:03.7121108",
+    "updatedAt" : "2024-11-12T15:04:03.7121108"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

이벤트 공지 사항 리스트 조회 (GET /eventNotices)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

title

false

찾고자 하는 이벤트 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP request

+
+
+
GET /eventNotices HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 919
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "title" : "이벤트 공지 사항 1",
+    "hitCount" : 10,
+    "fixed" : true,
+    "createdAt" : "2024-11-12T15:04:03.7949335",
+    "updatedAt" : "2024-11-12T15:04:03.7949335"
+  }, {
+    "id" : 2,
+    "title" : "이벤트 공지 사항 2",
+    "hitCount" : 10,
+    "fixed" : false,
+    "createdAt" : "2024-11-12T15:04:03.7949335",
+    "updatedAt" : "2024-11-12T15:04:03.7949335"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

이벤트 공지 사항 ID

content[].title

String

true

이벤트 공지 사항 제목

content[].hitCount

Number

true

이벤트 공지 사항 조회수

content[].fixed

Boolean

true

이벤트 공지 사항 고정 여부

content[].createdAt

String

true

이벤트 공지 사항 생성일

content[].updatedAt

String

true

이벤트 공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+

이벤트 공지 사항 조회 (GET /eventNotices/{eventNoticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

조회할 이벤트 공지 사항 ID

+
+
+

HTTP request

+
+
+
GET /eventNotices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 997
+
+{
+  "id" : 1,
+  "title" : "이벤트 공지 사항 제목",
+  "content" : "content",
+  "hitCount" : 10,
+  "fixed" : true,
+  "createdAt" : "2024-11-12T15:04:03.5238303",
+  "updatedAt" : "2024-11-12T15:04:03.5238303",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:03.5238303",
+    "updatedAt" : "2024-11-12T15:04:03.5238303"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:03.5238303",
+    "updatedAt" : "2024-11-12T15:04:03.5238303"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:03.5238303",
+    "updatedAt" : "2024-11-12T15:04:03.5238303"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

이벤트 공지 사항 수정 (PUT /eventNotices/{eventNoticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

수정할 이벤트 공지 사항 ID

+
+
+

HTTP request

+
+
+
PUT /eventNotices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 167
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 이벤트 공지 사항 제목",
+  "content" : "수정된 이벤트 공지 사항 내용",
+  "fixed" : false,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1009
+
+{
+  "id" : 1,
+  "title" : "수정된 이벤트 공지 사항 제목",
+  "content" : "수정된 이벤트 공지 사항 내용",
+  "hitCount" : 10,
+  "fixed" : false,
+  "createdAt" : "2024-01-01T12:00:00",
+  "updatedAt" : "2024-11-12T15:04:03.3264144",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-12T15:04:03.3264144"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-12T15:04:03.3264144"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-12T15:04:03.3264144"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

이벤트 공지 사항 삭제 (DELETE /eventNotices/{eventNoticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

삭제할 이벤트 공지 사항 ID

+
+
+

HTTP request

+
+
+
DELETE /eventNotices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

이벤트 기간 API

+
+
+
+

이벤트 기간 생성 (POST /eventPeriods)

+
+
+
+

HTTP request

+
+
+
POST /eventPeriods HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 89
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "start" : "2024-11-12T15:04:04.8161421",
+  "end" : "2024-11-22T15:04:04.8161421"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 216
+
+{
+  "id" : 1,
+  "year" : 2024,
+  "start" : "2024-11-12T15:04:04.8161421",
+  "end" : "2024-11-22T15:04:04.8161421",
+  "createdAt" : "2024-11-12T15:04:04.8161421",
+  "updatedAt" : "2024-11-12T15:04:04.8161421"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

+
+
+
+
+
+

올해의 이벤트 기간 조회 (GET /eventPeriod)

+
+
+
+

HTTP request

+
+
+
GET /eventPeriod HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 208
+
+{
+  "id" : 1,
+  "year" : 2024,
+  "start" : "2024-11-12T15:04:04.77104",
+  "end" : "2024-11-22T15:04:04.77104",
+  "createdAt" : "2024-11-12T15:04:04.77104",
+  "updatedAt" : "2024-11-12T15:04:04.77104"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

+
+
+
+
+
+

전체 이벤트 기간 리스트 조회 (GET /eventPeriods)

+
+
+
+

HTTP request

+
+
+
GET /eventPeriods HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 432
+
+[ {
+  "id" : 1,
+  "year" : 2024,
+  "start" : "2024-11-12T15:04:04.896861",
+  "end" : "2024-11-22T15:04:04.896861",
+  "createdAt" : "2024-11-12T15:04:04.896861",
+  "updatedAt" : "2024-11-12T15:04:04.896861"
+}, {
+  "id" : 2,
+  "year" : 2025,
+  "start" : "2024-11-12T15:04:04.896861",
+  "end" : "2024-11-22T15:04:04.896861",
+  "createdAt" : "2024-11-12T15:04:04.8978643",
+  "updatedAt" : "2024-11-12T15:04:04.8978643"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

이벤트 기간 ID

[].year

Number

true

이벤트 연도

[].start

String

true

이벤트 시작 일시

[].end

String

true

이벤트 종료 일시

[].createdAt

String

true

생성일

[].updatedAt

String

true

변경일

+
+
+
+
+
+

올해의 이벤트 기간 업데이트 (PUT /eventPeriod)

+
+
+
+

HTTP request

+
+
+
PUT /eventPeriod HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 87
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "start" : "2024-11-12T15:04:04.688568",
+  "end" : "2024-11-22T15:04:04.688568"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 212
+
+{
+  "id" : 1,
+  "year" : 2024,
+  "start" : "2024-11-12T15:04:04.688568",
+  "end" : "2024-11-22T15:04:04.688568",
+  "createdAt" : "2024-11-12T15:04:04.688568",
+  "updatedAt" : "2024-11-12T15:04:04.688568"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

+
+
+
+
+
+
+
+

갤러리 API

+
+
+
+

갤러리 게시글 생성 (POST /galleries)

+
+
+
+

HTTP request

+
+
+
POST /galleries HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 101
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "새내기 배움터",
+  "year" : 2024,
+  "month" : 4,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 929
+
+{
+  "id" : 1,
+  "title" : "새내기 배움터",
+  "year" : 2024,
+  "month" : 4,
+  "hitCount" : 1,
+  "createdAt" : "2024-11-12T15:04:09.3618421",
+  "updatedAt" : "2024-11-12T15:04:09.3618421",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "사진1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:09.3618421",
+    "updatedAt" : "2024-11-12T15:04:09.3618421"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "사진2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:09.3618421",
+    "updatedAt" : "2024-11-12T15:04:09.3618421"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "사진3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:09.3618421",
+    "updatedAt" : "2024-11-12T15:04:09.3618421"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

+
+
+
+
+
+

갤러리 게시글 목록 조회 (GET /galleries)

+
+
+
+

HTTP request

+
+
+
GET /galleries?year=2024&month=4 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

연도

month

false

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1289
+
+{
+  "totalElements" : 1,
+  "totalPages" : 1,
+  "size" : 1,
+  "content" : [ {
+    "id" : 1,
+    "title" : "새내기 배움터",
+    "year" : 2024,
+    "month" : 4,
+    "hitCount" : 0,
+    "createdAt" : "2024-11-12T15:04:09.1602347",
+    "updatedAt" : "2024-11-12T15:04:09.1602347",
+    "files" : [ {
+      "id" : 1,
+      "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+      "name" : "사진1.jpg",
+      "mimeType" : "image/jpeg",
+      "createdAt" : "2024-11-12T15:04:09.1602347",
+      "updatedAt" : "2024-11-12T15:04:09.1602347"
+    }, {
+      "id" : 2,
+      "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+      "name" : "사진2.jpg",
+      "mimeType" : "image/jpeg",
+      "createdAt" : "2024-11-12T15:04:09.1602347",
+      "updatedAt" : "2024-11-12T15:04:09.1602347"
+    }, {
+      "id" : 3,
+      "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+      "name" : "사진3.jpg",
+      "mimeType" : "image/jpeg",
+      "createdAt" : "2024-11-12T15:04:09.1602347",
+      "updatedAt" : "2024-11-12T15:04:09.1602347"
+    } ]
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 1,
+  "pageable" : "INSTANCE",
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

totalElements

Number

true

전체 데이터 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지당 데이터 수

content

Array

true

갤러리 목록

content[].id

Number

true

갤러리 ID

content[].title

String

true

갤러리 제목

content[].year

Number

true

갤러리 연도

content[].month

Number

true

갤러리 월

content[].hitCount

Number

true

갤러리 조회수

content[].createdAt

String

true

갤러리 생성일

content[].updatedAt

String

true

갤러리 수정일

content[].files

Array

true

파일 목록

content[].files[].id

Number

true

파일 ID

content[].files[].uuid

String

true

파일 UUID

content[].files[].name

String

true

파일 이름

content[].files[].mimeType

String

true

파일 MIME 타입

content[].files[].createdAt

String

true

파일 생성일

content[].files[].updatedAt

String

true

파일 수정일

number

Number

true

현재 페이지 번호

sort.empty

Boolean

true

정렬 정보

sort.sorted

Boolean

true

정렬 정보

sort.unsorted

Boolean

true

정렬 정보

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

numberOfElements

Number

true

현재 페이지의 데이터 수

empty

Boolean

true

빈 페이지 여부

+
+
+
+
+
+

갤러리 게시글 조회 (GET /galleries/{galleryId})

+
+
+
+

HTTP request

+
+
+
GET /galleries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

조회할 갤러리 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 929
+
+{
+  "id" : 1,
+  "title" : "새내기 배움터",
+  "year" : 2024,
+  "month" : 4,
+  "hitCount" : 1,
+  "createdAt" : "2024-11-12T15:04:09.2727084",
+  "updatedAt" : "2024-11-12T15:04:09.2727084",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "사진1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:09.2727084",
+    "updatedAt" : "2024-11-12T15:04:09.2727084"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "사진2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:09.2727084",
+    "updatedAt" : "2024-11-12T15:04:09.2727084"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "사진3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:09.2727084",
+    "updatedAt" : "2024-11-12T15:04:09.2727084"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

+
+
+
+
+
+

갤러리 게시글 삭제 (DELETE /galleries/{galleryId})

+
+
+
+

HTTP request

+
+
+
DELETE /galleries/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

삭제할 갤러리 ID

+
+
+
+
+
+

갤러리 게시글 수정 (PUT /galleries/{galleryId})

+
+
+
+

HTTP request

+
+
+
PUT /galleries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 98
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 제목",
+  "year" : 2024,
+  "month" : 5,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

수정할 갤러리 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 926
+
+{
+  "id" : 1,
+  "title" : "수정된 제목",
+  "year" : 2024,
+  "month" : 5,
+  "hitCount" : 1,
+  "createdAt" : "2024-11-12T15:04:08.9705233",
+  "updatedAt" : "2024-11-12T15:04:08.9705233",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "사진1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:08.9695134",
+    "updatedAt" : "2024-11-12T15:04:08.9695134"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "사진2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:08.9695134",
+    "updatedAt" : "2024-11-12T15:04:08.9695134"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "사진3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-12T15:04:08.9695134",
+    "updatedAt" : "2024-11-12T15:04:08.9695134"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

+
+
+
+
+
+
+
+

가입 신청 관리 API

+
+
+
+

가입 신청 리스트 조회 (GET /applications)

+
+
+
+

HTTP request

+
+
+
GET /applications HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 1235
+
+{
+  "totalElements" : 3,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "name" : "김영한",
+    "division" : "배민",
+    "position" : null,
+    "userType" : "INACTIVE_COMPANY",
+    "createdAt" : "2024-11-12T15:04:16.8961349",
+    "updatedAt" : "2024-11-12T15:04:16.8961349"
+  }, {
+    "id" : 2,
+    "name" : "김교수",
+    "division" : "솦융대",
+    "position" : "교수",
+    "userType" : "INACTIVE_PROFESSOR",
+    "createdAt" : "2024-11-12T15:04:16.8961349",
+    "updatedAt" : "2024-11-12T15:04:16.8961349"
+  }, {
+    "id" : 3,
+    "name" : "박교수",
+    "division" : "정통대",
+    "position" : "교수",
+    "userType" : "INACTIVE_PROFESSOR",
+    "createdAt" : "2024-11-12T15:04:16.8961349",
+    "updatedAt" : "2024-11-12T15:04:16.8961349"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 3,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

가입 신청 ID

content[].name

String

true

가입 신청자 이름

content[].division

String

false

소속

content[].position

String

false

직책

content[].userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

content[].createdAt

String

true

가입 신청 정보 생성일

content[].updatedAt

String

true

가입 신청 정보 수정일

+
+
+
+
+
+

가입 신청자 상세 정보 조회 (GET /applications/{applicationId})

+
+
+
+

HTTP request

+
+
+
GET /applications/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 284
+
+{
+  "id" : 1,
+  "name" : "김영한",
+  "phone" : "010-1111-2222",
+  "email" : "email@gmail.com",
+  "division" : "배민",
+  "position" : "CEO",
+  "userType" : "INACTIVE_COMPANY",
+  "createdAt" : "2024-11-12T15:04:17.0431853",
+  "updatedAt" : "2024-11-12T15:04:17.0431853"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

+
+
+
+
+
+

교수/기업 가입 허가 (PATCH /applications/{applicationId})

+
+
+
+

HTTP request

+
+
+
PATCH /applications/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 275
+
+{
+  "id" : 1,
+  "name" : "김영한",
+  "phone" : "010-1111-2222",
+  "email" : "email@gmail.com",
+  "division" : "배민",
+  "position" : "CEO",
+  "userType" : "COMPANY",
+  "createdAt" : "2024-11-12T15:04:16.9965445",
+  "updatedAt" : "2024-11-12T15:04:16.9965445"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [PROFESSOR, COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

+
+
+
+
+
+

교수/기업 가입 거절 (DELETE /applications/{applicationId})

+
+
+
+

HTTP request

+
+
+
DELETE /applications/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

프로젝트 문의 사항 API

+
+
+
+

프로젝트 문의 사항 생성 (POST /projects/{projectId}/inquiry)

+
+
+
+

HTTP request

+
+
+
POST /projects/1/inquiry HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Content-Length: 105
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "프로젝트 문의 사항 제목",
+  "content" : "프로젝트 문의 사항 내용"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 295
+
+{
+  "id" : 1,
+  "authorName" : "문의 작성자 이름",
+  "projectId" : 1,
+  "projectName" : "프로젝트 이름",
+  "title" : "문의 사항 제목",
+  "content" : "문의 사항 내용",
+  "createdAt" : "2024-11-12T15:04:10.7105352",
+  "updatedAt" : "2024-11-12T15:04:10.7105352"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

+
+
+
+
+
+
+

프로젝트 문의 사항 리스트 조회 (GET /inquiries)

+
+
+
+

HTTP request

+
+
+
GET /inquiries HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 862
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "authorName" : "프로젝트 문의 사항 제목",
+    "title" : "프로젝트 문의 사항 내용",
+    "createdAt" : "2024-11-12T15:04:10.5253675"
+  }, {
+    "id" : 2,
+    "authorName" : "프로젝트 문의 사항 제목",
+    "title" : "프로젝트 문의 사항 내용",
+    "createdAt" : "2024-11-12T15:04:10.5253675"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

문의 사항 ID

content[].authorName

String

true

문의 작성자 이름

content[].title

String

true

문의 사항 제목

content[].createdAt

String

true

문의 사항 생성 시간

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+

프로젝트 문의 사항 단건 조회 (GET /inquiries/{inquiryId})

+
+
+
+

HTTP request

+
+
+
GET /inquiries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

조회할 문의 사항 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 295
+
+{
+  "id" : 1,
+  "authorName" : "문의 작성자 이름",
+  "projectId" : 1,
+  "projectName" : "프로젝트 이름",
+  "title" : "문의 사항 제목",
+  "content" : "문의 사항 내용",
+  "createdAt" : "2024-11-12T15:04:10.6368772",
+  "updatedAt" : "2024-11-12T15:04:10.6368772"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

+
+
+
+
+
+
+

프로젝트 문의 사항 수정 (PUT /inquiries/{inquiryId})

+
+
+
+

HTTP request

+
+
+
PUT /inquiries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Content-Length: 125
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 프로젝트 문의 사항 제목",
+  "content" : "수정된 프로젝트 문의 사항 내용"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

수정할 문의 사항 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 315
+
+{
+  "id" : 1,
+  "authorName" : "문의 작성자 이름",
+  "projectId" : 1,
+  "projectName" : "프로젝트 이름",
+  "title" : "수정된 문의 사항 제목",
+  "content" : "수정된 문의 사항 내용",
+  "createdAt" : "2024-11-12T15:04:10.8368332",
+  "updatedAt" : "2024-11-12T15:04:10.8368332"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

수정된 문의 사항 제목

content

String

true

수정된 문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

+
+
+
+
+
+
+

프로젝트 문의 사항 삭제 (DELETE /inquiries/{inquiryId})

+
+
+
+

HTTP request

+
+
+
DELETE /inquiries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

삭제할 문의 사항 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+

프로젝트 문의 사항 답변 (POST /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
POST /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 79
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "문의 답변 제목",
+  "content" : "문의 답변 내용"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

답변할 문의 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 92
+
+{
+  "id" : 1,
+  "title" : "문의 답변 제목",
+  "content" : "문의 답변 내용"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+
+
+
+
+

프로젝트 문의 사항 답변 조회 (GET /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
GET /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

조회할 문의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 92
+
+{
+  "id" : 1,
+  "title" : "문의 답변 제목",
+  "content" : "문의 답변 내용"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+
+
+
+
+

프로젝트 문의 사항 답변 수정 (PUT /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
PUT /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 99
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 문의 답변 제목",
+  "content" : "수정된 문의 답변 내용"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

수정할 답변 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 112
+
+{
+  "id" : 1,
+  "title" : "수정된 문의 답변 제목",
+  "content" : "수정된 문의 답변 내용"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

수정된 답변 제목

content

String

true

수정된 답변 내용

+
+
+
+
+
+
+

프로젝트 문의 사항 답변 삭제 (DELETE /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
DELETE /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

삭제할 답변 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

프로젝트 API

+
+
+
+

프로젝트 조회 (GET /projects)

+
+

200 OK

+
+
+
+
HTTP request
+
+
+
GET /projects HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1828
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "thumbnailInfo" : {
+      "id" : 1,
+      "uuid" : "썸네일 uuid 1",
+      "name" : "썸네일 파일 이름 1",
+      "mimeType" : "썸네일 mime 타입 1"
+    },
+    "projectName" : "프로젝트 이름 1",
+    "teamName" : "팀 이름 1",
+    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+    "professorNames" : [ "교수 이름 1" ],
+    "projectType" : "STARTUP",
+    "projectCategory" : "BIG_DATA_ANALYSIS",
+    "awardStatus" : "FIRST",
+    "year" : 2023,
+    "likeCount" : 100,
+    "like" : false,
+    "bookMark" : false,
+    "url" : "프로젝트 URL",
+    "description" : "프로젝트 설명"
+  }, {
+    "id" : 2,
+    "thumbnailInfo" : {
+      "id" : 2,
+      "uuid" : "썸네일 uuid 2",
+      "name" : "썸네일 파일 이름 2",
+      "mimeType" : "썸네일 mime 타입 2"
+    },
+    "projectName" : "프로젝트 이름 2",
+    "teamName" : "팀 이름 2",
+    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
+    "professorNames" : [ "교수 이름 2" ],
+    "projectType" : "LAB",
+    "projectCategory" : "AI_MACHINE_LEARNING",
+    "awardStatus" : "SECOND",
+    "year" : 2023,
+    "likeCount" : 100,
+    "like" : false,
+    "bookMark" : true,
+    "url" : "프로젝트 URL",
+    "description" : "프로젝트 설명"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+
Query parameters
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

title

false

프로젝트 이름

year

false

프로젝트 년도

category

false

프로젝트 카테고리

type

false

프로젝트 타입

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

+
+
+
Response fields
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+

프로젝트 생성 (POST /projects)

+
+

201 Created

+
+
+
+
HTTP request
+
+
+
POST /projects HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 557
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "thumbnailId" : 1,
+  "posterId" : 2,
+  "projectName" : "프로젝트 이름",
+  "projectType" : "STARTUP",
+  "projectCategory" : "BIG_DATA_ANALYSIS",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2021,
+  "awardStatus" : "NONE",
+  "members" : [ {
+    "name" : "학생 이름 1",
+    "role" : "STUDENT"
+  }, {
+    "name" : "학생 이름 2",
+    "role" : "STUDENT"
+  }, {
+    "name" : "교수 이름 1",
+    "role" : "PROFESSOR"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1534
+
+{
+  "id" : 1,
+  "thumbnailInfo" : {
+    "id" : 2,
+    "uuid" : "썸네일 uuid",
+    "name" : "썸네일 파일 이름",
+    "mimeType" : "썸네일 mime 타입"
+  },
+  "posterInfo" : {
+    "id" : 2,
+    "uuid" : "포스터 uuid",
+    "name" : "포트서 파일 이름",
+    "mimeType" : "포스터 mime 타입"
+  },
+  "projectName" : "프로젝트 이름",
+  "projectType" : "STARTUP",
+  "projectCategory" : "BIG_DATA_ANALYSIS",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2024,
+  "awardStatus" : "FIRST",
+  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+  "professorNames" : [ "교수 이름 1" ],
+  "likeCount" : 0,
+  "like" : false,
+  "bookMark" : false,
+  "comments" : [ {
+    "id" : 1,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : true,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-12T15:04:15.753282",
+    "updatedAt" : "2024-11-12T15:04:15.753282"
+  }, {
+    "id" : 2,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-12T15:04:15.753282",
+    "updatedAt" : "2024-11-12T15:04:15.753282"
+  }, {
+    "id" : 3,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-12T15:04:15.753282",
+    "updatedAt" : "2024-11-12T15:04:15.753282"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+
Request fields
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

+
+
+
Response fields
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

+
+
+
+
+
+
+

프로젝트 조회 (GET /projects/{projectId})

+
+

200 OK

+
+
+
+
HTTP request
+
+
+
GET /projects/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1540
+
+{
+  "id" : 1,
+  "thumbnailInfo" : {
+    "id" : 2,
+    "uuid" : "썸네일 uuid",
+    "name" : "썸네일 파일 이름",
+    "mimeType" : "썸네일 mime 타입"
+  },
+  "posterInfo" : {
+    "id" : 2,
+    "uuid" : "포스터 uuid",
+    "name" : "포트서 파일 이름",
+    "mimeType" : "포스터 mime 타입"
+  },
+  "projectName" : "프로젝트 이름",
+  "projectType" : "STARTUP",
+  "projectCategory" : "BIG_DATA_ANALYSIS",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2024,
+  "awardStatus" : "FIRST",
+  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+  "professorNames" : [ "교수 이름 1" ],
+  "likeCount" : 0,
+  "like" : false,
+  "bookMark" : false,
+  "comments" : [ {
+    "id" : 1,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : true,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-12T15:04:15.2894177",
+    "updatedAt" : "2024-11-12T15:04:15.2894177"
+  }, {
+    "id" : 2,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-12T15:04:15.2904206",
+    "updatedAt" : "2024-11-12T15:04:15.2904206"
+  }, {
+    "id" : 3,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-12T15:04:15.2904206",
+    "updatedAt" : "2024-11-12T15:04:15.2904206"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+
Path parameters
+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

+
+
+
Response fields
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

+
+
+
+
+
+
+

프로젝트 수정 (PUT /projects/{projectId})

+
+

200 OK

+
+
+
+
HTTP request
+
+
+
PUT /projects/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 552
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "thumbnailId" : 3,
+  "posterId" : 4,
+  "projectName" : "프로젝트 이름",
+  "projectType" : "LAB",
+  "projectCategory" : "COMPUTER_VISION",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2024,
+  "awardStatus" : "FIRST",
+  "members" : [ {
+    "name" : "학생 이름 3",
+    "role" : "STUDENT"
+  }, {
+    "name" : "학생 이름 4",
+    "role" : "STUDENT"
+  }, {
+    "name" : "교수 이름 2",
+    "role" : "PROFESSOR"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1536
+
+{
+  "id" : 1,
+  "thumbnailInfo" : {
+    "id" : 3,
+    "uuid" : "썸네일 uuid",
+    "name" : "썸네일 파일 이름",
+    "mimeType" : "썸네일 mime 타입"
+  },
+  "posterInfo" : {
+    "id" : 4,
+    "uuid" : "포스터 uuid",
+    "name" : "포트서 파일 이름",
+    "mimeType" : "포스터 mime 타입"
+  },
+  "projectName" : "프로젝트 이름",
+  "projectType" : "LAB",
+  "projectCategory" : "COMPUTER_VISION",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2024,
+  "awardStatus" : "FIRST",
+  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
+  "professorNames" : [ "교수 이름 2" ],
+  "likeCount" : 100,
+  "like" : false,
+  "bookMark" : false,
+  "comments" : [ {
+    "id" : 1,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : true,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-12T15:04:14.4181762",
+    "updatedAt" : "2024-11-12T15:04:14.4191755"
+  }, {
+    "id" : 2,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-12T15:04:14.4191755",
+    "updatedAt" : "2024-11-12T15:04:14.4191755"
+  }, {
+    "id" : 3,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-12T15:04:14.4191755",
+    "updatedAt" : "2024-11-12T15:04:14.4191755"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+
Path parameters
+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

+
+
+
Request fields
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

+
+
+
Response fields
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

+
+
+
+
+
+
+

프로젝트 삭제 (DELETE /projects/{projectId})

+
+

204 No Content

+
+
+
+
HTTP request
+
+
+
DELETE /projects/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
Path parameters
+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+
+

관심 프로젝트 등록 (POST /projects/{projectId}/favorite)

+
+

201 Created

+
+
+
+
HTTP request
+
+
+
POST /projects/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
Path parameters
+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+
+

관심 프로젝트 삭제 (DELETE /projects/{projectId}/favorite)

+
+

204 No Content

+
+
+
+
HTTP request
+
+
+
DELETE /projects/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
Path parameters
+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+
+

프로젝트 좋아요 등록 (POST /projects/{projectId}/like)

+
+

201 Created

+
+
+
+
HTTP request
+
+
+
POST /projects/1/like HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
Path parameters
+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+
+

프로젝트 좋아요 삭제 (DELETE /projects/{projectId}/like)

+
+

204 No Content

+
+
+
+
HTTP request
+
+
+
DELETE /projects/1/like HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
Path parameters
+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+
+

프로젝트 댓글 등록 (POST /projects/{projectId}/comment)

+
+

201 Created

+
+
+
+
HTTP request
+
+
+
POST /projects/1/comment HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Content-Length: 60
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "content" : "댓글 내용",
+  "isAnonymous" : true
+}
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 222
+
+{
+  "id" : 1,
+  "projectId" : 1,
+  "userName" : "유저 이름",
+  "isAnonymous" : true,
+  "content" : "댓글 내용",
+  "createdAt" : "2024-11-12T15:04:15.0928796",
+  "updatedAt" : "2024-11-12T15:04:15.0928796"
+}
+
+
+
+
+
Path parameters
+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/comment
ParameterDescription

projectId

프로젝트 ID

+
+
+
Request fields
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content

String

true

댓글 내용

isAnonymous

Boolean

true

익명 여부

+
+
+
Response fields
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

댓글 ID

projectId

Number

true

프로젝트 ID

userName

String

true

유저 이름

isAnonymous

Boolean

true

익명 여부

content

String

true

댓글 내용

createdAt

String

true

생성 시간

updatedAt

String

true

수정 시간

+
+
+
+
+
+
+

프로젝트 댓글 삭제 (DELETE /projects/{projectId}/comment)

+
+

204 No Content

+
+
+
+
HTTP request
+
+
+
DELETE /projects/1/comment/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
Path parameters
+ + ++++ + + + + + + + + + + + + + + + + +
Table 1. /projects/{projectId}/comment/{commentId}
ParameterDescription

projectId

프로젝트 ID

commentId

댓글 ID

+
+
+
+
+
+
+

수상 프로젝트 조회 (GET /projects/award?year={year})

+
+

200 No Content

+
+
+
+
HTTP request
+
+
+
GET /projects/award?year=2024 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+
HTTP response
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1828
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "thumbnailInfo" : {
+      "id" : 1,
+      "uuid" : "썸네일 uuid 1",
+      "name" : "썸네일 파일 이름 1",
+      "mimeType" : "썸네일 mime 타입 1"
+    },
+    "projectName" : "프로젝트 이름 1",
+    "teamName" : "팀 이름 1",
+    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+    "professorNames" : [ "교수 이름 1" ],
+    "projectType" : "STARTUP",
+    "projectCategory" : "BIG_DATA_ANALYSIS",
+    "awardStatus" : "FIRST",
+    "year" : 2023,
+    "likeCount" : 100,
+    "like" : false,
+    "bookMark" : false,
+    "url" : "프로젝트 URL",
+    "description" : "프로젝트 설명"
+  }, {
+    "id" : 2,
+    "thumbnailInfo" : {
+      "id" : 2,
+      "uuid" : "썸네일 uuid 2",
+      "name" : "썸네일 파일 이름 2",
+      "mimeType" : "썸네일 mime 타입 2"
+    },
+    "projectName" : "프로젝트 이름 2",
+    "teamName" : "팀 이름 2",
+    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
+    "professorNames" : [ "교수 이름 2" ],
+    "projectType" : "LAB",
+    "projectCategory" : "AI_MACHINE_LEARNING",
+    "awardStatus" : "SECOND",
+    "year" : 2023,
+    "likeCount" : 100,
+    "like" : false,
+    "bookMark" : true,
+    "url" : "프로젝트 URL",
+    "description" : "프로젝트 설명"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+
Query parameters
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

true

프로젝트 년도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

+
+
+
Response fields
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+
+
+

AI HUB API

+
+
+
+

AI HUB 모델 리스트 조회 (POST /aihub/models)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

AI 모델 제목

learningModels

Array

true

학습 모델

topics

Array

true

주제 분류

developmentYears

Array

true

개발 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

+
+
+

HTTP request

+
+
+
POST /aihub/models HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 206
+Host: localhost:8080
+
+{
+  "title" : "title",
+  "learningModels" : [ "학습 모델 1" ],
+  "topics" : [ "주제 1" ],
+  "developmentYears" : [ 2024 ],
+  "professor" : "담당 교수 1",
+  "participants" : [ "학생 1" ]
+}
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1270
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "title" : "title",
+    "learningModels" : [ "학습 모델 1" ],
+    "topics" : [ "주제 1" ],
+    "developmentYears" : [ 2024 ],
+    "professor" : "담당 교수 1",
+    "participants" : [ "학생 1", "학생 2" ],
+    "object" : "page",
+    "id" : "노션 object 아이디",
+    "cover" : "커버 이미지 link",
+    "url" : "노션 redirect url"
+  }, {
+    "title" : "title",
+    "learningModels" : [ "학습 모델 1" ],
+    "topics" : [ "주제 1", "주제 2" ],
+    "developmentYears" : [ 2024 ],
+    "professor" : "담당 교수 1",
+    "participants" : [ "학생 1", "학생 2", "학생 3" ],
+    "object" : "page",
+    "id" : "노션 object 아이디",
+    "cover" : "커버 이미지 link",
+    "url" : "노션 redirect url"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 모델 제목

content[].learningModels

Array

true

학습 모델

content[].topics

Array

true

주제 분류

content[].developmentYears

Array

true

개발 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+

AI HUB 데이터셋 리스트 조회 (POST /aihub/datasets)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

AI 데이터셋 제목

dataTypes

Array

true

데이터 유형

topics

Array

true

주제 분류

developmentYears

Array

true

구축 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

+
+
+

HTTP request

+
+
+
POST /aihub/datasets HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 204
+Host: localhost:8080
+
+{
+  "title" : "title",
+  "dataTypes" : [ "주제 1" ],
+  "topics" : [ "데이터 유형 1" ],
+  "developmentYears" : [ 2024 ],
+  "professor" : "담당 교수 1",
+  "participants" : [ "학생 1" ]
+}
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1266
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "title" : "title",
+    "dataTypes" : [ "주제 1" ],
+    "topics" : [ "데이터 유형 1" ],
+    "developmentYears" : [ 2024 ],
+    "professor" : "담당 교수 1",
+    "participants" : [ "학생 1", "학생 2" ],
+    "object" : "page",
+    "id" : "노션 object 아이디",
+    "cover" : "커버 이미지 link",
+    "url" : "노션 redirect url"
+  }, {
+    "title" : "title",
+    "dataTypes" : [ "주제 1", "주제 2" ],
+    "topics" : [ "데이터 유형 1" ],
+    "developmentYears" : [ 2024 ],
+    "professor" : "담당 교수 1",
+    "participants" : [ "학생 1", "학생 2", "학생 3" ],
+    "object" : "page",
+    "id" : "노션 object 아이디",
+    "cover" : "커버 이미지 link",
+    "url" : "노션 redirect url"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 데이터셋 제목

content[].topics

Array

true

주제 분류

content[].dataTypes

Array

true

데이터 유형

content[].developmentYears

Array

true

구축 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+
+

JOB INFO API

+
+
+
+

JOB INFO 리스트 조회 (POST /jobInfos)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

company

String

true

기업명

jobTypes

Array

true

고용 형태

region

String

true

근무 지역

position

String

true

채용 포지션

hiringTime

String

true

채용 시점

state

Array

true

채용 상태

+
+
+

HTTP request

+
+
+
POST /jobInfos HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 205
+Host: localhost:8080
+
+{
+  "company" : "기업명 1",
+  "jobTypes" : [ "고용 형태 1" ],
+  "region" : "근무 지역 1",
+  "position" : "채용 포지션 1",
+  "hiringTime" : "채용 시점 1",
+  "state" : [ "open" ]
+}
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1348
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "company" : "기업명 1",
+    "jobTypes" : [ "고용 형태 1" ],
+    "region" : "근무 지역 1",
+    "position" : "채용 포지션 1",
+    "logo" : "로고 url",
+    "salary" : "연봉",
+    "website" : "웹사이트 url",
+    "state" : [ "open" ],
+    "hiringTime" : "채용 시점 1",
+    "object" : "page",
+    "id" : "노션 object 아이디 1",
+    "url" : "redirect url"
+  }, {
+    "company" : "기업명 1",
+    "jobTypes" : [ "고용 형태 1", "고용 형태 2" ],
+    "region" : "근무 지역 2",
+    "position" : "채용 포지션 1, 채용 시점 2",
+    "logo" : "로고 url",
+    "salary" : "연봉",
+    "website" : "웹사이트 url",
+    "state" : [ "open" ],
+    "hiringTime" : "채용 시점 1",
+    "object" : "page",
+    "id" : "노션 object 아이디 2",
+    "url" : "redirect url"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].company

String

true

기업명

content[].jobTypes

Array

true

고용 형태

content[].region

String

true

근무 지역

content[].position

String

true

채용 포지션

content[].logo

String

true

로고 url

content[].salary

String

true

연봉

content[].website

String

true

웹사이트 url

content[].state

Array

true

채용 상태

content[].hiringTime

String

true

채용 시점

content[].url

String

true

redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+
+

유저 API

+
+
+
+

로그인 유저 기본 정보 조회 (GET /users/me)

+
+
+
+

HTTP request

+
+
+
GET /users/me HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 331
+
+{
+  "id" : 1,
+  "name" : "이름",
+  "phone" : "010-1234-5678",
+  "email" : "student@g.skku.edu",
+  "userType" : "STUDENT",
+  "division" : null,
+  "position" : null,
+  "studentNumber" : "2000123456",
+  "departmentName" : "학과",
+  "createdAt" : "2024-11-12T15:04:18.6308",
+  "updatedAt" : "2024-11-12T15:04:18.6308"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

+
+
+
+
+
+

로그인 유저 기본 정보 수정 (PUT /users/me)

+
+
+
+

HTTP request

+
+
+
PUT /users/me HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: user_access_token
+Content-Length: 203
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "name" : "이름",
+  "phoneNumber" : "010-1234-5678",
+  "email" : "student@g.skku.edu",
+  "division" : null,
+  "position" : null,
+  "studentNumber" : "2000123456",
+  "department" : "학과"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

name

String

true

이름

phoneNumber

String

true

전화번호

email

String

true

이메일

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

department

String

false

학과

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 335
+
+{
+  "id" : 1,
+  "name" : "이름",
+  "phone" : "010-1234-5678",
+  "email" : "student@g.skku.edu",
+  "userType" : "STUDENT",
+  "division" : null,
+  "position" : null,
+  "studentNumber" : "2000123456",
+  "departmentName" : "학과",
+  "createdAt" : "2024-11-12T15:04:18.837977",
+  "updatedAt" : "2024-11-12T15:04:18.837977"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

+
+
+
+
+
+

유저 탈퇴 (DELETE /users/me)

+
+
+
+

HTTP request

+
+
+
DELETE /users/me HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

유저 관심 리스트 조회 (GET /users/favorites)

+
+
+
+

HTTP request

+
+
+
GET /users/favorites?type=TALK HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + +
ParameterRequiredDescription

type

true

관심 항목의 타입 (PROJECT, TALK, JOBINTERVIEW)

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 150
+
+[ {
+  "id" : 1,
+  "title" : "Project 1",
+  "youtubeId" : "youtube 1"
+}, {
+  "id" : 2,
+  "title" : "Project 2",
+  "youtubeId" : "youtube 2"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

ID

[].title

String

true

제목

[].youtubeId

String

true

유튜브 ID

+
+
+
+
+
+

유저 문의 리스트 조회 (GET /users/inquiries)

+
+
+
+

HTTP request

+
+
+
GET /users/inquiries HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 271
+
+[ {
+  "id" : 1,
+  "title" : "Title 1",
+  "projectId" : 1,
+  "createdDate" : "2024-11-12T15:04:18.5841819",
+  "hasReply" : true
+}, {
+  "id" : 2,
+  "title" : "Title 2",
+  "projectId" : 2,
+  "createdDate" : "2024-11-12T15:04:18.5841819",
+  "hasReply" : false
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

문의 ID

[].title

String

true

문의 제목

[].projectId

Number

true

프로젝트 ID

[].createdDate

String

true

문의 생성일

[].hasReply

Boolean

true

답변 여부

+
+
+
+
+
+

유저 과제 제안 리스트 조회 (GET /users/proposals)

+
+
+
+

HTTP request

+
+
+
GET /users/proposals HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 231
+
+[ {
+  "id" : 1,
+  "title" : "Title 1",
+  "createdDate" : "2024-11-12T15:04:18.7046253",
+  "hasReply" : true
+}, {
+  "id" : 2,
+  "title" : "Title 2",
+  "createdDate" : "2024-11-12T15:04:18.7046253",
+  "hasReply" : false
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

과제 제안 ID

[].title

String

true

프로젝트명

[].createdDate

String

true

과제 제안 생성일

[].hasReply

Boolean

true

답변 여부

+
+
+
+
+
+
+
+

학과 API

+
+
+
+

학과 리스트 조회 (GET /departments)

+
+
+
+

HTTP request

+
+
+
GET /departments HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 98
+
+[ {
+  "id" : 1,
+  "name" : "소프트웨어학과"
+}, {
+  "id" : 2,
+  "name" : "학과2"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

학과 ID

[].name

String

true

학과 이름

+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/static/docs/inquiry.html b/src/main/resources/static/docs/inquiry.html new file mode 100644 index 00000000..2915c043 --- /dev/null +++ b/src/main/resources/static/docs/inquiry.html @@ -0,0 +1,1666 @@ + + + + + + + +프로젝트 문의 사항 API + + + + + +
+
+

프로젝트 문의 사항 API

+
+
+
+

프로젝트 문의 사항 생성 (POST /projects/{projectId}/inquiry)

+
+
+
+

HTTP request

+
+
+
POST /projects/1/inquiry HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Content-Length: 105
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "프로젝트 문의 사항 제목",
+  "content" : "프로젝트 문의 사항 내용"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 295
+
+{
+  "id" : 1,
+  "authorName" : "문의 작성자 이름",
+  "projectId" : 1,
+  "projectName" : "프로젝트 이름",
+  "title" : "문의 사항 제목",
+  "content" : "문의 사항 내용",
+  "createdAt" : "2024-11-12T15:04:10.7105352",
+  "updatedAt" : "2024-11-12T15:04:10.7105352"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

+
+
+
+
+
+
+

프로젝트 문의 사항 리스트 조회 (GET /inquiries)

+
+
+
+

HTTP request

+
+
+
GET /inquiries HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 862
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "authorName" : "프로젝트 문의 사항 제목",
+    "title" : "프로젝트 문의 사항 내용",
+    "createdAt" : "2024-11-12T15:04:10.5253675"
+  }, {
+    "id" : 2,
+    "authorName" : "프로젝트 문의 사항 제목",
+    "title" : "프로젝트 문의 사항 내용",
+    "createdAt" : "2024-11-12T15:04:10.5253675"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

문의 사항 ID

content[].authorName

String

true

문의 작성자 이름

content[].title

String

true

문의 사항 제목

content[].createdAt

String

true

문의 사항 생성 시간

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+

프로젝트 문의 사항 단건 조회 (GET /inquiries/{inquiryId})

+
+
+
+

HTTP request

+
+
+
GET /inquiries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

조회할 문의 사항 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 295
+
+{
+  "id" : 1,
+  "authorName" : "문의 작성자 이름",
+  "projectId" : 1,
+  "projectName" : "프로젝트 이름",
+  "title" : "문의 사항 제목",
+  "content" : "문의 사항 내용",
+  "createdAt" : "2024-11-12T15:04:10.6368772",
+  "updatedAt" : "2024-11-12T15:04:10.6368772"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

+
+
+
+
+
+
+

프로젝트 문의 사항 수정 (PUT /inquiries/{inquiryId})

+
+
+
+

HTTP request

+
+
+
PUT /inquiries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Content-Length: 125
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 프로젝트 문의 사항 제목",
+  "content" : "수정된 프로젝트 문의 사항 내용"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

수정할 문의 사항 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 315
+
+{
+  "id" : 1,
+  "authorName" : "문의 작성자 이름",
+  "projectId" : 1,
+  "projectName" : "프로젝트 이름",
+  "title" : "수정된 문의 사항 제목",
+  "content" : "수정된 문의 사항 내용",
+  "createdAt" : "2024-11-12T15:04:10.8368332",
+  "updatedAt" : "2024-11-12T15:04:10.8368332"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

수정된 문의 사항 제목

content

String

true

수정된 문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

+
+
+
+
+
+
+

프로젝트 문의 사항 삭제 (DELETE /inquiries/{inquiryId})

+
+
+
+

HTTP request

+
+
+
DELETE /inquiries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

삭제할 문의 사항 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+

프로젝트 문의 사항 답변 (POST /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
POST /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 79
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "문의 답변 제목",
+  "content" : "문의 답변 내용"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

답변할 문의 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 92
+
+{
+  "id" : 1,
+  "title" : "문의 답변 제목",
+  "content" : "문의 답변 내용"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+
+
+
+
+

프로젝트 문의 사항 답변 조회 (GET /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
GET /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

조회할 문의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 92
+
+{
+  "id" : 1,
+  "title" : "문의 답변 제목",
+  "content" : "문의 답변 내용"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+
+
+
+
+

프로젝트 문의 사항 답변 수정 (PUT /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
PUT /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 99
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 문의 답변 제목",
+  "content" : "수정된 문의 답변 내용"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

수정할 답변 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 112
+
+{
+  "id" : 1,
+  "title" : "수정된 문의 답변 제목",
+  "content" : "수정된 문의 답변 내용"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

수정된 답변 제목

content

String

true

수정된 답변 내용

+
+
+
+
+
+
+

프로젝트 문의 사항 답변 삭제 (DELETE /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
DELETE /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

삭제할 답변 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/resources/static/docs/jobInfo-controller-test.html b/src/main/resources/static/docs/jobInfo-controller-test.html index 9f9e79e1..4352564f 100644 --- a/src/main/resources/static/docs/jobInfo-controller-test.html +++ b/src/main/resources/static/docs/jobInfo-controller-test.html @@ -540,7 +540,7 @@

HTTP request

POST /jobInfos HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Content-Length: 198
+Content-Length: 205
 Host: localhost:8080
 
 {
@@ -563,13 +563,11 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1295 +Content-Length: 1348 { "totalElements" : 2, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "company" : "기업명 1", @@ -604,6 +602,8 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 2, "pageable" : { "pageNumber" : 0, @@ -844,7 +844,7 @@

Response fields

diff --git a/src/main/resources/static/docs/jobInterview.html b/src/main/resources/static/docs/jobInterview.html index cfd6a1d9..cb84cdab 100644 --- a/src/main/resources/static/docs/jobInterview.html +++ b/src/main/resources/static/docs/jobInterview.html @@ -455,7 +455,7 @@

HTTP request

POST /jobInterviews HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 213
+Content-Length: 220
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -536,7 +536,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 317 +Content-Length: 329 { "id" : 1, @@ -546,8 +546,8 @@

HTTP response

"talkerBelonging" : "대담자의 소속", "talkerName" : "대담자의 성명", "category" : "INTERN", - "createdAt" : "2024-10-29T22:38:57.366975", - "updatedAt" : "2024-10-29T22:38:57.366976" + "createdAt" : "2024-11-12T15:04:20.7648021", + "updatedAt" : "2024-11-12T15:04:20.7648021" }
@@ -699,13 +699,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1205 +Content-Length: 1259 { "totalElements" : 2, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "id" : 1, @@ -716,8 +714,8 @@

HTTP response

"talkerName" : "대담자의 성명1", "favorite" : false, "category" : "INTERN", - "createdAt" : "2024-10-29T22:38:57.350426", - "updatedAt" : "2024-10-29T22:38:57.350429" + "createdAt" : "2024-11-12T15:04:20.6120226", + "updatedAt" : "2024-11-12T15:04:20.6120226" }, { "id" : 2, "title" : "잡페어 인터뷰의 제목2", @@ -727,8 +725,8 @@

HTTP response

"talkerName" : "대담자의 성명2", "favorite" : true, "category" : "INTERN", - "createdAt" : "2024-10-29T22:38:57.35044", - "updatedAt" : "2024-10-29T22:38:57.350441" + "createdAt" : "2024-11-12T15:04:20.6120226", + "updatedAt" : "2024-11-12T15:04:20.6120226" } ], "number" : 0, "sort" : { @@ -736,6 +734,8 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 2, "pageable" : { "pageNumber" : 0, @@ -1005,7 +1005,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 339 +Content-Length: 352 { "id" : 1, @@ -1016,8 +1016,8 @@

HTTP response

"talkerName" : "대담자의 성명", "favorite" : false, "category" : "INTERN", - "createdAt" : "2024-10-29T22:38:57.360921", - "updatedAt" : "2024-10-29T22:38:57.360922" + "createdAt" : "2024-11-12T15:04:20.7001261", + "updatedAt" : "2024-11-12T15:04:20.7001261" }
@@ -1117,7 +1117,7 @@

HTTP request

PUT /jobInterviews/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 217
+Content-Length: 224
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1220,7 +1220,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 314 +Content-Length: 325 { "id" : 1, @@ -1231,7 +1231,7 @@

HTTP response

"talkerName" : "수정된 대담자 성명", "category" : "INTERN", "createdAt" : "2021-01-01T12:00:00", - "updatedAt" : "2024-10-29T22:38:57.331715" + "updatedAt" : "2024-11-12T15:04:20.4670126" }
@@ -1476,7 +1476,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/notice.html b/src/main/resources/static/docs/notice.html index aeb7025d..321d0ae6 100644 --- a/src/main/resources/static/docs/notice.html +++ b/src/main/resources/static/docs/notice.html @@ -454,7 +454,7 @@

HTTP request

POST /notices HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 121
+Content-Length: 126
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -521,7 +521,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 960 +Content-Length: 991 { "id" : 1, @@ -529,29 +529,29 @@

HTTP response

"content" : "공지 사항 내용", "hitCount" : 0, "fixed" : true, - "createdAt" : "2024-10-29T22:38:56.701497", - "updatedAt" : "2024-10-29T22:38:56.701498", + "createdAt" : "2024-11-12T15:04:13.487226", + "updatedAt" : "2024-11-12T15:04:13.487226", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:56.70149", - "updatedAt" : "2024-10-29T22:38:56.701491" + "createdAt" : "2024-11-12T15:04:13.487226", + "updatedAt" : "2024-11-12T15:04:13.487226" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:56.701493", - "updatedAt" : "2024-10-29T22:38:56.701493" + "createdAt" : "2024-11-12T15:04:13.487226", + "updatedAt" : "2024-11-12T15:04:13.487226" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:56.701494", - "updatedAt" : "2024-10-29T22:38:56.701495" + "createdAt" : "2024-11-12T15:04:13.487226", + "updatedAt" : "2024-11-12T15:04:13.487226" } ] }
@@ -722,28 +722,26 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 854 +Content-Length: 899 { "totalElements" : 2, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "id" : 1, "title" : "공지 사항 1", "hitCount" : 10, "fixed" : true, - "createdAt" : "2024-10-29T22:38:56.662802", - "updatedAt" : "2024-10-29T22:38:56.662804" + "createdAt" : "2024-11-12T15:04:13.1973292", + "updatedAt" : "2024-11-12T15:04:13.1973292" }, { "id" : 2, "title" : "공지 사항 2", "hitCount" : 10, "fixed" : false, - "createdAt" : "2024-10-29T22:38:56.662818", - "updatedAt" : "2024-10-29T22:38:56.662819" + "createdAt" : "2024-11-12T15:04:13.1973292", + "updatedAt" : "2024-11-12T15:04:13.1973292" } ], "number" : 0, "sort" : { @@ -751,6 +749,8 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 2, "pageable" : { "pageNumber" : 0, @@ -994,7 +994,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 947 +Content-Length: 987 { "id" : 1, @@ -1002,29 +1002,29 @@

HTTP response

"content" : "content", "hitCount" : 10, "fixed" : true, - "createdAt" : "2024-10-29T22:38:56.694639", - "updatedAt" : "2024-10-29T22:38:56.69464", + "createdAt" : "2024-11-12T15:04:13.4262238", + "updatedAt" : "2024-11-12T15:04:13.4262238", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:56.69463", - "updatedAt" : "2024-10-29T22:38:56.694634" + "createdAt" : "2024-11-12T15:04:13.4262238", + "updatedAt" : "2024-11-12T15:04:13.4262238" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:56.694635", - "updatedAt" : "2024-10-29T22:38:56.694636" + "createdAt" : "2024-11-12T15:04:13.4262238", + "updatedAt" : "2024-11-12T15:04:13.4262238" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-10-29T22:38:56.694637", - "updatedAt" : "2024-10-29T22:38:56.694638" + "createdAt" : "2024-11-12T15:04:13.4262238", + "updatedAt" : "2024-11-12T15:04:13.4262238" } ] }
@@ -1171,7 +1171,7 @@

HTTP request

PUT /notices/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 142
+Content-Length: 147
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1238,7 +1238,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 955 +Content-Length: 989 { "id" : 1, @@ -1247,28 +1247,28 @@

HTTP response

"hitCount" : 10, "fixed" : false, "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-10-29T22:38:56.676945", + "updatedAt" : "2024-11-12T15:04:13.2794322", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-10-29T22:38:56.676908" + "updatedAt" : "2024-11-12T15:04:13.2794322" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-10-29T22:38:56.676917" + "updatedAt" : "2024-11-12T15:04:13.2794322" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-10-29T22:38:56.676919" + "updatedAt" : "2024-11-12T15:04:13.2794322" } ] }
@@ -1440,7 +1440,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/project.html b/src/main/resources/static/docs/project.html index 956f6501..2a371a37 100644 --- a/src/main/resources/static/docs/project.html +++ b/src/main/resources/static/docs/project.html @@ -471,13 +471,11 @@
HTTP response
Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1759 +Content-Length: 1828 { "totalElements" : 2, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "id" : 1, @@ -528,6 +526,8 @@
HTTP response
"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 2, "pageable" : { "pageNumber" : 0, @@ -872,7 +872,7 @@
HTTP request
POST /projects HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 535
+Content-Length: 557
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -911,7 +911,7 @@ 
HTTP response
Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1480 +Content-Length: 1534 { "id" : 1, @@ -945,24 +945,24 @@
HTTP response
"userName" : "유저 이름", "isAnonymous" : true, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.958458", - "updatedAt" : "2024-10-29T22:38:56.95846" + "createdAt" : "2024-11-12T15:04:15.753282", + "updatedAt" : "2024-11-12T15:04:15.753282" }, { "id" : 2, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.958461", - "updatedAt" : "2024-10-29T22:38:56.958462" + "createdAt" : "2024-11-12T15:04:15.753282", + "updatedAt" : "2024-11-12T15:04:15.753282" }, { "id" : 3, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.958463", - "updatedAt" : "2024-10-29T22:38:56.958463" + "createdAt" : "2024-11-12T15:04:15.753282", + "updatedAt" : "2024-11-12T15:04:15.753282" } ], "url" : "프로젝트 URL", "description" : "프로젝트 설명" @@ -1325,7 +1325,7 @@
HTTP response
Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1481 +Content-Length: 1540 { "id" : 1, @@ -1359,24 +1359,24 @@
HTTP response
"userName" : "유저 이름", "isAnonymous" : true, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.934229", - "updatedAt" : "2024-10-29T22:38:56.934231" + "createdAt" : "2024-11-12T15:04:15.2894177", + "updatedAt" : "2024-11-12T15:04:15.2894177" }, { "id" : 2, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.934235", - "updatedAt" : "2024-10-29T22:38:56.934236" + "createdAt" : "2024-11-12T15:04:15.2904206", + "updatedAt" : "2024-11-12T15:04:15.2904206" }, { "id" : 3, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.934237", - "updatedAt" : "2024-10-29T22:38:56.934237" + "createdAt" : "2024-11-12T15:04:15.2904206", + "updatedAt" : "2024-11-12T15:04:15.2904206" } ], "url" : "프로젝트 URL", "description" : "프로젝트 설명" @@ -1642,7 +1642,7 @@
HTTP request
PUT /projects/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 530
+Content-Length: 552
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1681,7 +1681,7 @@ 
HTTP response
Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1477 +Content-Length: 1536 { "id" : 1, @@ -1715,24 +1715,24 @@
HTTP response
"userName" : "유저 이름", "isAnonymous" : true, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.844657", - "updatedAt" : "2024-10-29T22:38:56.844659" + "createdAt" : "2024-11-12T15:04:14.4181762", + "updatedAt" : "2024-11-12T15:04:14.4191755" }, { "id" : 2, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.844663", - "updatedAt" : "2024-10-29T22:38:56.844663" + "createdAt" : "2024-11-12T15:04:14.4191755", + "updatedAt" : "2024-11-12T15:04:14.4191755" }, { "id" : 3, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.844665", - "updatedAt" : "2024-10-29T22:38:56.844666" + "createdAt" : "2024-11-12T15:04:14.4191755", + "updatedAt" : "2024-11-12T15:04:14.4191755" } ], "url" : "프로젝트 URL", "description" : "프로젝트 설명" @@ -2378,7 +2378,7 @@
HTTP request
POST /projects/1/comment HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: all_access_token
-Content-Length: 57
+Content-Length: 60
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -2398,7 +2398,7 @@ 
HTTP response
Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 212 +Content-Length: 222 { "id" : 1, @@ -2406,8 +2406,8 @@
HTTP response
"userName" : "유저 이름", "isAnonymous" : true, "content" : "댓글 내용", - "createdAt" : "2024-10-29T22:38:56.922837", - "updatedAt" : "2024-10-29T22:38:56.922839" + "createdAt" : "2024-11-12T15:04:15.0928796", + "updatedAt" : "2024-11-12T15:04:15.0928796" }
@@ -2620,13 +2620,11 @@
HTTP response
Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1759 +Content-Length: 1828 { "totalElements" : 2, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "id" : 1, @@ -2677,6 +2675,8 @@
HTTP response
"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 2, "pageable" : { "pageNumber" : 0, @@ -2999,7 +2999,7 @@
Response fields
diff --git a/src/main/resources/static/docs/quiz.html b/src/main/resources/static/docs/quiz.html index 8161291b..db96ba73 100644 --- a/src/main/resources/static/docs/quiz.html +++ b/src/main/resources/static/docs/quiz.html @@ -1,800 +1,804 @@ - - - - - - - -퀴즈 결과 API - - - - - -
-
-

퀴즈 결과 API

-
-
-
-

퀴즈 결과 조회 (GET /quizzes/result)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 739
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "first" : true,
-  "last" : true,
-  "size" : 10,
-  "content" : [ {
-    "userId" : 1,
-    "name" : "name",
-    "phone" : "010-1111-1111",
-    "email" : "scg@scg.skku.ac.kr",
-    "successCount" : 3
-  }, {
-    "userId" : 2,
-    "name" : "name2",
-    "phone" : "010-0000-1234",
-    "email" : "iam@2tle.io",
-    "successCount" : 1
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

-
-
-
-
-
-

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result/excel HTTP/1.1
-Content-Type: application/octet-stream;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/octet-stream;charset=UTF-8
-Content-Disposition: attachment; filename=excel.xlsx
-Content-Length: 2822
-
-PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
-�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
-�0D�~EȽ��ADҔ���A? ��6�lB�J?ߜ���0���ͯ�)�@��׍H6���V>��$;�SC
-;̢(�ra�g�l�&�e��L!y�%��49��`_���4G���F��J��Wg
�GS�b����
-~�PK�|wؑ�PK-docProps/core.xmlm��J�0E��=M�emQ�gP|ɱ-6�hǿ7�c�-�^gq���A
�;:�]��$A-��u[��n��H�גFcM�!��	�p�Ez�I�hτ�I�e^t���"�c�b��!^]��W�"y~
-�<p���]�䨔bQ�77�)T���Q�a:�����<�~��q��r��F��n���^O_H��f�!(�(`���F�����z�!M�')���bGKV����s��'��ٸ�2�a�����幂?57�PK�_*X�PK-xl/sharedStrings.xml=�A� ツ��.z0Ɣ�`������,�����q2��o�ԇ���N�E��x5�z>�W���(R�K���^4{�����ŀ�5��y�V����y�m�XV�\�.�j����
8�PKp��&x�PK-
xl/styles.xml���n� ��>bop2TQ��P)U�RWb�6*�����ӤS�Nw�s���3ߍ֐���t��(l��������ҝx�!N=@$ɀ��}��3c���ʰr`:i��2��w,�
-�d
�T��R#�voc �;c�iE��Û��E<|��4Iɣ����F#��n���B�z�F���y�j3y��yҥ�jt>���2��Lژ�!6��2F�OY��4@M�!���G��������1�t��y��p��"	n����u�����a�ΦDi�9�&#��%I��9��}���cK��T��$?������`J������7���o��f��M|PK�1X@C�PK-xl/workbook.xmlM���0��>E�wi1ƨ����z/�HmI�_j��qf��)ʧٌ��w�LC��ָ��[u��T�b�a��؊;���8�9��G�)��5�|�:�2<8MuK=b�#�	q�V�u
����K��H\)�\�&�t͌��%���?��B��T�PK	���PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
����s����;[�E8D&a��h@-
��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-�|wؑ��docProps/app.xmlPK-�_*X�qdocProps/core.xmlPK-p��&x��xl/sharedStrings.xmlPK-�1X@C�
�xl/styles.xmlPK-	���xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
-
-
-
-
-
-
-
-
-
- - + + + + + + + +퀴즈 결과 API + + + + + +
+
+

퀴즈 결과 API

+
+
+
+

퀴즈 결과 조회 (GET /quizzes/result)

+
+
+
+

HTTP request

+
+
+
GET /quizzes/result HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 778
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "userId" : 1,
+    "name" : "name",
+    "phone" : "010-1111-1111",
+    "email" : "scg@scg.skku.ac.kr",
+    "successCount" : 3
+  }, {
+    "userId" : 2,
+    "name" : "name2",
+    "phone" : "010-0000-1234",
+    "email" : "iam@2tle.io",
+    "successCount" : 1
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "first" : true,
+  "last" : true,
+  "numberOfElements" : 2,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "paged" : true,
+    "unpaged" : false
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

+
+
+
+
+
+

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

+
+
+
+

HTTP request

+
+
+
GET /quizzes/result/excel HTTP/1.1
+Content-Type: application/octet-stream;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/octet-stream;charset=UTF-8
+Content-Disposition: attachment; filename=excel.xlsx
+Content-Length: 2828
+
+PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
+�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
+�0D��ro�z�4� �'{����MHV�盓z���T��E�1e�����Ɇ�ѳ����:�No7jH!bb�Y��V��������T�)$o���0M��9ؗGb�7�pe��*~�R�>��Y�EB���nW������PK6n�!��PK-docProps/core.xmlm�]K�0��J�}���!��e (�(ޅ����h�7����.�������̀> �����bV9�۶Ə�]q�QL�j985�o�Jy�\�}pB�!���Q(_�.%/��#c�	��W�L�Z�z�-N�HR�$�$,�b�'�V�ҿ�ahE`6E�JF~����d!��_�q�q5sy#F��n���N_W���*�L�Q���s#?�������
+�|]0V0~�Aׂ������g��\Hh3q�sE�jn�PK�iX��PK-xl/sharedStrings.xml=�A
+�0�{��D�i�/��tm�&f7�����0Ì�7mꃕc&���B�y��Zx>���~72��X�I��nx�s�["�5����R7�\���u�\*����M��9��"��~PKh���y�PK-
+xl/styles.xml���n� ��J}���d���&C%W��J]�9ۨpX@"�O_0N�L:�������n4���ye���UA	`c�®���iKw���aҰ����C^�MF���Ik�!��c~p �O&�٦(��
+)/�dj<i�	CE�x�Z�*k�^�or:*i���XmQ(aY�m�P�]�B��S3O��,o�0O����%��[��Ii�;Ćf���ֱ K~��(Z�������}�91�8�/>Z'�nߟ%^jhC48��);�t�51�Jt�NȋcI"���iu��{lI���L����_�8ВfL.�����ƒ����hv���PK����E�PK-xl/workbook.xmlM���0��&�C�wi1ƨ����z/�@mI�_0��83��d��l�@�;	i"���|m\+�^\w'��v��>���=[xG���Tuh5%~D�$�V�E���P��!F;�Gn�q��[��j1=���F��U�&�3��U2]E3a�K	b���~���T�PK5%����PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
+����s����;[�E8D&a��h@-
+��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-6n�!���docProps/app.xmlPK-�iX��sdocProps/core.xmlPK-h���y��xl/sharedStrings.xmlPK-����E�
+�xl/styles.xmlPK-5%����
+xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/static/docs/talk.html b/src/main/resources/static/docs/talk.html index 402adee4..97818b2e 100644 --- a/src/main/resources/static/docs/talk.html +++ b/src/main/resources/static/docs/talk.html @@ -455,7 +455,7 @@

HTTP request

POST /talks HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 361
+Content-Length: 376
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -562,7 +562,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 464 +Content-Length: 483 { "id" : 1, @@ -580,8 +580,8 @@

HTTP response

"answer" : 0, "options" : [ "선지1", "선지2" ] } ], - "createdAt" : "2024-10-29T22:38:57.956919", - "updatedAt" : "2024-10-29T22:38:57.95692" + "createdAt" : "2024-11-12T15:04:24.845687", + "updatedAt" : "2024-11-12T15:04:24.845687" }
@@ -746,13 +746,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 999 +Content-Length: 1047 { "totalElements" : 1, "totalPages" : 1, - "first" : true, - "last" : true, "size" : 10, "content" : [ { "id" : 1, @@ -771,8 +769,8 @@

HTTP response

"answer" : 0, "options" : [ "선지1", "선지2" ] } ], - "createdAt" : "2024-10-29T22:38:57.964821", - "updatedAt" : "2024-10-29T22:38:57.964822" + "createdAt" : "2024-11-12T15:04:24.9098651", + "updatedAt" : "2024-11-12T15:04:24.9098651" } ], "number" : 0, "sort" : { @@ -780,6 +778,8 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "first" : true, + "last" : true, "numberOfElements" : 1, "pageable" : { "pageNumber" : 0, @@ -1067,7 +1067,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 485 +Content-Length: 507 { "id" : 1, @@ -1086,8 +1086,8 @@

HTTP response

"answer" : 0, "options" : [ "선지1", "선지2" ] } ], - "createdAt" : "2024-10-29T22:38:57.949768", - "updatedAt" : "2024-10-29T22:38:57.94977" + "createdAt" : "2024-11-12T15:04:24.7720184", + "updatedAt" : "2024-11-12T15:04:24.7720184" }
@@ -1205,7 +1205,7 @@

HTTP request

PUT /talks/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 461
+Content-Length: 476
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1334,7 +1334,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 565 +Content-Length: 585 { "id" : 1, @@ -1352,8 +1352,8 @@

HTTP response

"answer" : 0, "options" : [ "수정한 선지1", "수정한 선지2" ] } ], - "createdAt" : "2024-10-29T22:38:57.913428", - "updatedAt" : "2024-10-29T22:38:57.913431" + "createdAt" : "2024-11-12T15:04:24.5646962", + "updatedAt" : "2024-11-12T15:04:24.5646962" }
@@ -1550,7 +1550,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 205 +Content-Length: 215 { "quiz" : [ { @@ -1625,7 +1625,7 @@

HTTP request

POST /talks/1/quiz HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: access_token
-Content-Length: 47
+Content-Length: 52
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1702,7 +1702,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 40 +Content-Length: 43 { "success" : true, @@ -1898,7 +1898,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 41 +Content-Length: 44 { "success" : false, @@ -1949,7 +1949,7 @@

Response fields

diff --git a/src/main/resources/static/docs/user.html b/src/main/resources/static/docs/user.html index 17a0783a..90a1da9a 100644 --- a/src/main/resources/static/docs/user.html +++ b/src/main/resources/static/docs/user.html @@ -468,7 +468,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 337 +Content-Length: 331 { "id" : 1, @@ -480,8 +480,8 @@

HTTP response

"position" : null, "studentNumber" : "2000123456", "departmentName" : "학과", - "createdAt" : "2024-11-03T18:35:30.8209418", - "updatedAt" : "2024-11-03T18:35:30.8209418" + "createdAt" : "2024-11-12T15:04:18.6308", + "updatedAt" : "2024-11-12T15:04:18.6308" }
@@ -490,14 +490,16 @@

HTTP response

Response fields

---++++ - + + @@ -505,56 +507,67 @@

Response fields

+ + + + + + + + + + + @@ -629,25 +642,25 @@

Request fields

- + - + - + - + @@ -662,7 +675,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 337 +Content-Length: 335 { "id" : 1, @@ -674,8 +687,8 @@

HTTP response

"position" : null, "studentNumber" : "2000123456", "departmentName" : "학과", - "createdAt" : "2024-11-03T18:35:31.1305357", - "updatedAt" : "2024-11-03T18:35:31.1305357" + "createdAt" : "2024-11-12T15:04:18.837977", + "updatedAt" : "2024-11-12T15:04:18.837977" } @@ -684,14 +697,16 @@

HTTP response

Response fields

PathName TypeRequired Description

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

department

String

false

학과

---++++ - + + @@ -699,56 +714,67 @@

Response fields

+ + + + + + + + + + + @@ -805,18 +831,21 @@

HTTP request

Query parameters

PathName TypeRequired Description

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

--+++ + + @@ -849,14 +878,16 @@

HTTP response

Response fields

ParameterRequired Description

type

true

관심 항목의 타입 (PROJECT, TALK, JOBINTERVIEW)

---++++ - + + @@ -864,16 +895,19 @@

Response fields

+ + + @@ -912,13 +946,13 @@

HTTP response

"id" : 1, "title" : "Title 1", "projectId" : 1, - "createdDate" : "2024-11-03T18:35:30.6998206", + "createdDate" : "2024-11-12T15:04:18.5841819", "hasReply" : true }, { "id" : 2, "title" : "Title 2", "projectId" : 2, - "createdDate" : "2024-11-03T18:35:30.6998206", + "createdDate" : "2024-11-12T15:04:18.5841819", "hasReply" : false } ] @@ -928,14 +962,16 @@

HTTP response

Response fields

PathName TypeRequired Description

[].id

Number

true

ID

[].title

String

true

제목

[].youtubeId

String

true

유튜브 ID

---++++ - + + @@ -943,26 +979,31 @@

Response fields

+ + + + + @@ -1000,12 +1041,12 @@

HTTP response

[ { "id" : 1, "title" : "Title 1", - "createdDate" : "2024-11-03T18:35:30.9467834", + "createdDate" : "2024-11-12T15:04:18.7046253", "hasReply" : true }, { "id" : 2, "title" : "Title 2", - "createdDate" : "2024-11-03T18:35:30.9467834", + "createdDate" : "2024-11-12T15:04:18.7046253", "hasReply" : false } ] @@ -1015,14 +1056,16 @@

HTTP response

Response fields

PathName TypeRequired Description

[].id

Number

true

문의 ID

[].title

String

true

문의 제목

[].projectId

Number

true

프로젝트 ID

[].createdDate

String

true

문의 생성일

[].hasReply

Boolean

true

답변 여부

---++++ - + + @@ -1030,21 +1073,25 @@

Response fields

+ + + + @@ -1059,7 +1106,7 @@

Response fields

From 72abc54262c1ef361e94358cdd6cf7bbe6275e58 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Tue, 12 Nov 2024 16:41:04 +0900 Subject: [PATCH 34/37] =?UTF-8?q?feat:=20getUserFavorites=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stop/user/controller/UserController.java | 27 ++- .../scg/stop/user/service/UserService.java | 42 ++-- .../user/controller/UserControllerTest.java | 181 ++++++++++++++++-- 3 files changed, 210 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/scg/stop/user/controller/UserController.java b/src/main/java/com/scg/stop/user/controller/UserController.java index 6cda6c31..55edb67d 100644 --- a/src/main/java/com/scg/stop/user/controller/UserController.java +++ b/src/main/java/com/scg/stop/user/controller/UserController.java @@ -1,8 +1,8 @@ package com.scg.stop.user.controller; import com.scg.stop.auth.annotation.AuthUser; +import com.scg.stop.project.dto.response.ProjectResponse; import com.scg.stop.user.domain.AccessType; -import com.scg.stop.user.domain.FavoriteType; import com.scg.stop.user.domain.User; import com.scg.stop.user.dto.request.UserUpdateRequest; import com.scg.stop.user.dto.response.FavoriteResponse; @@ -10,6 +10,8 @@ import com.scg.stop.user.dto.response.UserProposalResponse; import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.service.UserService; +import com.scg.stop.video.dto.response.JobInterviewUserResponse; +import com.scg.stop.video.dto.response.TalkUserResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -57,12 +59,21 @@ public ResponseEntity> getUserProposals(@AuthUser(acc return ResponseEntity.ok(proposals); } - @GetMapping("/favorites") - public ResponseEntity> getUserFavorites( - @AuthUser(accessType = {AccessType.ALL}) User user, - @RequestParam("type") FavoriteType type - ) { - List userFavorites = userService.getUserFavorites(user, type); - return ResponseEntity.ok(userFavorites); + @GetMapping("/favorites/projects") + public ResponseEntity> getUserFavoriteProjects(@AuthUser(accessType = {AccessType.ALL}) User user) { + List userFavoriteProjects = userService.getUserFavoriteProjects(user); + return ResponseEntity.ok(userFavoriteProjects); + } + + @GetMapping("/favorites/talks") + public ResponseEntity> getUserFavoriteTalks(@AuthUser(accessType = {AccessType.ALL}) User user) { + List userFavoriteTalks = userService.getUserFavoriteTalks(user); + return ResponseEntity.ok(userFavoriteTalks); + } + + @GetMapping("/favorites/jobInterviews") + public ResponseEntity> getUserFavoriteInterviews(@AuthUser(accessType = {AccessType.ALL}) User user) { + List userFavoriteInterviews = userService.getUserFavoriteInterviews(user); + return ResponseEntity.ok(userFavoriteInterviews); } } diff --git a/src/main/java/com/scg/stop/user/service/UserService.java b/src/main/java/com/scg/stop/user/service/UserService.java index 50b7475f..eb1669f1 100644 --- a/src/main/java/com/scg/stop/user/service/UserService.java +++ b/src/main/java/com/scg/stop/user/service/UserService.java @@ -2,12 +2,15 @@ import com.scg.stop.project.domain.Inquiry; import com.scg.stop.project.domain.Project; +import com.scg.stop.project.dto.response.ProjectResponse; import com.scg.stop.project.repository.FavoriteProjectRepository; import com.scg.stop.project.repository.InquiryRepository; import com.scg.stop.domain.proposal.domain.Proposal; import com.scg.stop.domain.proposal.repository.ProposalRepository; import com.scg.stop.video.domain.JobInterview; import com.scg.stop.video.domain.Talk; +import com.scg.stop.video.dto.response.JobInterviewUserResponse; +import com.scg.stop.video.dto.response.TalkUserResponse; import com.scg.stop.video.repository.FavoriteVideoRepository; import com.scg.stop.global.exception.BadRequestException; import com.scg.stop.global.exception.ExceptionCode; @@ -133,26 +136,27 @@ public List getUserProposals(User user) { } @Transactional(readOnly = true) - public List getUserFavorites(User user, FavoriteType type) { - if (type.equals(FavoriteType.PROJECT)) { - List projects = favoriteProjectRepository.findAllByUser(user); - return projects.stream() - .map(project -> FavoriteResponse.of(project.getId(), project.getName(), project.getYoutubeId())) - .collect(Collectors.toList()); - } - else if (type.equals(FavoriteType.TALK)) { - List talks = favoriteVideoRepository.findTalksByUser(user); - return talks.stream() - .map(talk -> FavoriteResponse.of(talk.getId(), talk.getTitle(), talk.getYoutubeId())) - .collect(Collectors.toList()); - } - else { // if (type.equals(FavoriteType.JOBINTERVIEW)) { - List jobInterviews = favoriteVideoRepository.findJobInterviewsByUser(user); - return jobInterviews.stream() - .map(jobInterview -> FavoriteResponse.of(jobInterview.getId(), jobInterview.getTitle(), jobInterview.getYoutubeId())) - .collect(Collectors.toList()); - } + public List getUserFavoriteProjects(User user) { + List projects = favoriteProjectRepository.findAllByUser(user); + return projects.stream() + .map(project -> ProjectResponse.of(user, project)) + .collect(Collectors.toList()); + } + @Transactional(readOnly = true) + public List getUserFavoriteTalks(User user) { + List talks = favoriteVideoRepository.findTalksByUser(user); + return talks.stream() + .map(talk -> TalkUserResponse.from(talk, true)) + .collect(Collectors.toList()); + } + + @Transactional(readOnly = true) + public List getUserFavoriteInterviews(User user) { + List jobInterviews = favoriteVideoRepository.findJobInterviewsByUser(user); + return jobInterviews.stream() + .map(jobInterview -> JobInterviewUserResponse.from(jobInterview, true)) + .collect(Collectors.toList()); } } \ No newline at end of file diff --git a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java index 3d8a2ce9..cc8307ff 100644 --- a/src/test/java/com/scg/stop/user/controller/UserControllerTest.java +++ b/src/test/java/com/scg/stop/user/controller/UserControllerTest.java @@ -2,6 +2,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.scg.stop.configuration.AbstractControllerTest; +import com.scg.stop.project.domain.AwardStatus; +import com.scg.stop.project.domain.ProjectCategory; +import com.scg.stop.project.domain.ProjectType; +import com.scg.stop.project.dto.response.FileResponse; +import com.scg.stop.project.dto.response.ProjectResponse; import com.scg.stop.user.domain.FavoriteType; import com.scg.stop.user.domain.User; import com.scg.stop.user.domain.UserType; @@ -11,6 +16,11 @@ import com.scg.stop.user.dto.response.UserProposalResponse; import com.scg.stop.user.dto.response.UserResponse; import com.scg.stop.user.service.UserService; +import com.scg.stop.video.domain.JobInterviewCategory; +import com.scg.stop.video.domain.QuizInfo; +import com.scg.stop.video.dto.response.JobInterviewUserResponse; +import com.scg.stop.video.dto.response.QuizResponse; +import com.scg.stop.video.dto.response.TalkUserResponse; import jakarta.servlet.http.Cookie; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -287,21 +297,118 @@ void getUserProposals() throws Exception { } @Test - @DisplayName("유저의 관심 리스트를 조회할 수 있다.") - void getUserFavorites() throws Exception { + @DisplayName("유저의 관심 프로젝트를 조회할 수 있다.") + void getUserFavoriteProjects() throws Exception { // given - List responses = Arrays.asList( - FavoriteResponse.of(1L, "Project 1", "youtube 1"), - FavoriteResponse.of(2L, "Project 2", "youtube 2") + List responses = Arrays.asList( + new ProjectResponse( + 1L, + new FileResponse( + 1L, + "썸네일 uuid 1", + "썸네일 파일 이름 1", + "썸네일 mime 타입 1" + ), + "프로젝트 이름 1", + "팀 이름 1", + List.of("학생 이름 1", "학생 이름 2"), + List.of("교수 이름 1"), + ProjectType.STARTUP, + ProjectCategory.BIG_DATA_ANALYSIS, + AwardStatus.FIRST, + 2023, + 100, + false, + false, + "프로젝트 URL", + "프로젝트 설명" + ), + new ProjectResponse( + 2L, + new FileResponse( + 2L, + "썸네일 uuid 2", + "썸네일 파일 이름 2", + "썸네일 mime 타입 2" + ), + "프로젝트 이름 2", + "팀 이름 2", + List.of("학생 이름 3", "학생 이름 4"), + List.of("교수 이름 2"), + ProjectType.LAB, + ProjectCategory.AI_MACHINE_LEARNING, + AwardStatus.SECOND, + 2023, + 100, + false, + true, + "프로젝트 URL", + "프로젝트 설명" + ) + ); + when(userService.getUserFavoriteProjects(any(User.class))).thenReturn(responses); + + // when + ResultActions result = mockMvc.perform( + get("/users/favorites/projects") + .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) + .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) + ); + + // then + result.andExpect(status().isOk()) + .andDo(restDocs.document( + requestCookies( + cookieWithName("refresh-token").description("갱신 토큰") + ), + requestHeaders( + headerWithName("Authorization").description("Access Token") + ), + responseFields( + fieldWithPath("[].id").type(JsonFieldType.NUMBER).description("프로젝트 ID"), + fieldWithPath("[].thumbnailInfo").type(JsonFieldType.OBJECT).description("썸네일 정보"), + fieldWithPath("[].thumbnailInfo.id").type(JsonFieldType.NUMBER).description("썸네일 ID"), + fieldWithPath("[].thumbnailInfo.uuid").type(JsonFieldType.STRING).description("썸네일 UUID"), + fieldWithPath("[].thumbnailInfo.name").type(JsonFieldType.STRING).description("썸네일 파일 이름"), + fieldWithPath("[].thumbnailInfo.mimeType").type(JsonFieldType.STRING).description("썸네일 MIME 타입"), + fieldWithPath("[].projectName").type(JsonFieldType.STRING).description("프로젝트 이름"), + fieldWithPath("[].teamName").type(JsonFieldType.STRING).description("팀 이름"), + fieldWithPath("[].studentNames[]").type(JsonFieldType.ARRAY).description("학생 이름"), + fieldWithPath("[].professorNames[]").type(JsonFieldType.ARRAY).description("교수 이름"), + fieldWithPath("[].projectType").type(JsonFieldType.STRING).description("프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB"), + fieldWithPath("[].projectCategory").type(JsonFieldType.STRING).description("프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY"), + fieldWithPath("[].awardStatus").type(JsonFieldType.STRING).description("수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH"), + fieldWithPath("[].year").type(JsonFieldType.NUMBER).description("프로젝트 년도"), + fieldWithPath("[].likeCount").type(JsonFieldType.NUMBER).description("좋아요 수"), + fieldWithPath("[].like").type(JsonFieldType.BOOLEAN).description("좋아요 여부"), + fieldWithPath("[].bookMark").type(JsonFieldType.BOOLEAN).description("북마크 여부"), + fieldWithPath("[].url").type(JsonFieldType.STRING).description("프로젝트 URL"), + fieldWithPath("[].description").type(JsonFieldType.STRING).description("프로젝트 설명") + ) + )); + } + + @Test + @DisplayName("유저의 관심 대담영상을 조회할 수 있다.") + void getUserFavoriteTalks() throws Exception { + // given + QuizResponse quizResponse = new QuizResponse( + List.of( + new QuizInfo("질문1", 0, List.of("선지1","선지2")), + new QuizInfo("질문2", 0, List.of("선지1","선지2")) + ) + ); + List responses = Arrays.asList( + new TalkUserResponse(1L, "제목1", "유튜브 고유ID", 2024, "대담자 소속1","대담자 성명1" ,true, quizResponse,LocalDateTime.now(), LocalDateTime.now()), + new TalkUserResponse(2L, "제목2", "유튜브 고유ID", 2024, "대담자 소속2","대담자 성명2" ,true, quizResponse,LocalDateTime.now(), LocalDateTime.now()) ); - when(userService.getUserFavorites(any(User.class), any(FavoriteType.class))).thenReturn(responses); + when(userService.getUserFavoriteTalks(any(User.class))).thenReturn(responses); // when ResultActions result = mockMvc.perform( - RestDocumentationRequestBuilders.get("/users/favorites") + get("/users/favorites/talks") .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) - .param("type", "TALK") ); // then @@ -313,13 +420,61 @@ void getUserFavorites() throws Exception { requestHeaders( headerWithName("Authorization").description("Access Token") ), - queryParameters( - parameterWithName("type").description("관심 항목의 타입 (PROJECT, TALK, JOBINTERVIEW)") + responseFields( + fieldWithPath("[].id").type(JsonFieldType.NUMBER).description("대담 영상 ID"), + fieldWithPath("[].title").type(JsonFieldType.STRING).description("대담 영상 제목"), + fieldWithPath("[].youtubeId").type(JsonFieldType.STRING).description("유튜브 영상의 고유 ID"), + fieldWithPath("[].year").type(JsonFieldType.NUMBER).description("대담 영상 연도"), + fieldWithPath("[].talkerBelonging").type(JsonFieldType.STRING).description("대담자의 소속된 직장/단체"), + fieldWithPath("[].talkerName").type(JsonFieldType.STRING).description("대담자의 성명"), + fieldWithPath("[].favorite").type(JsonFieldType.BOOLEAN).description("관심한 대담영상의 여부"), + fieldWithPath("[].quiz").type(JsonFieldType.ARRAY).description("퀴즈 데이터, 없는경우 null").optional(), + fieldWithPath("[].quiz[].question").type(JsonFieldType.STRING).description("퀴즈 1개의 질문").optional(), + fieldWithPath("[].quiz[].answer").type(JsonFieldType.NUMBER).description("퀴즈 1개의 정답선지 인덱스").optional(), + fieldWithPath("[].quiz[].options").type(JsonFieldType.ARRAY).description("퀴즈 1개의 정답선지 리스트").optional(), + fieldWithPath("[].createdAt").type(JsonFieldType.STRING).description("대담 영상 생성일"), + fieldWithPath("[].updatedAt").type(JsonFieldType.STRING).description("대담 영상 수정일") + ) + )); + } + + @Test + @DisplayName("유저의 관심 잡페어 영상을 조회할 수 있다.") + void getUserFavoriteInterviews() throws Exception { + // given + List responses = Arrays.asList( + new JobInterviewUserResponse(1L,"잡페어 인터뷰의 제목1", "유튜브 고유 ID1", 2023,"대담자의 소속1", "대담자의 성명1", false, JobInterviewCategory.INTERN, LocalDateTime.now(), LocalDateTime.now()), + new JobInterviewUserResponse(2L, "잡페어 인터뷰의 제목2", "유튜브 고유 ID2", 2024,"대담자의 소속2", "대담자의 성명2", true, JobInterviewCategory.INTERN, LocalDateTime.now(), LocalDateTime.now()) + ); + when(userService.getUserFavoriteInterviews(any(User.class))).thenReturn(responses); + + // when + ResultActions result = mockMvc.perform( + get("/users/favorites/jobInterviews") + .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN) + .cookie(new Cookie("refresh-token", REFRESH_TOKEN)) + ); + + // then + result.andExpect(status().isOk()) + .andDo(restDocs.document( + requestCookies( + cookieWithName("refresh-token").description("갱신 토큰") + ), + requestHeaders( + headerWithName("Authorization").description("Access Token") ), responseFields( - fieldWithPath("[].id").description("ID"), - fieldWithPath("[].title").description("제목"), - fieldWithPath("[].youtubeId").description("유튜브 ID") + fieldWithPath("[].id").type(JsonFieldType.NUMBER).description("잡페어 인터뷰 ID"), + fieldWithPath("[].title").type(JsonFieldType.STRING).description("잡페어 인터뷰 제목"), + fieldWithPath("[].youtubeId").type(JsonFieldType.STRING).description("유튜브 영상의 고유 ID"), + fieldWithPath("[].year").type(JsonFieldType.NUMBER).description("잡페어 인터뷰 연도"), + fieldWithPath("[].talkerBelonging").type(JsonFieldType.STRING).description("잡페어 인터뷰 대담자의 소속"), + fieldWithPath("[].talkerName").type(JsonFieldType.STRING).description("잡페어 인터뷰 대담자의 성명"), + fieldWithPath("[].favorite").type(JsonFieldType.BOOLEAN).description("관심에 추가한 잡페어 인터뷰 여부"), + fieldWithPath("[].category").type(JsonFieldType.STRING).description("잡페어 인터뷰 카테고리: SENIOR, INTERN"), + fieldWithPath("[].createdAt").type(JsonFieldType.STRING).description("잡페어 인터뷰 생성일"), + fieldWithPath("[].updatedAt").type(JsonFieldType.STRING).description("잡페어 인터뷰 수정일") ) )); } From aa577fa4f21cdd0a7a0123238d4ffc3218c4485b Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Tue, 19 Nov 2024 10:32:08 +0900 Subject: [PATCH 35/37] =?UTF-8?q?fix:=20user.adoc=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/user.adoc | 14 +- src/main/resources/static/docs/user.html | 468 +++++++++++++++++++++-- 2 files changed, 452 insertions(+), 30 deletions(-) diff --git a/src/docs/asciidoc/user.adoc b/src/docs/asciidoc/user.adoc index 2c97fbb8..28302fa0 100644 --- a/src/docs/asciidoc/user.adoc +++ b/src/docs/asciidoc/user.adoc @@ -18,9 +18,19 @@ operation::user-controller-test/update-me[snippets="http-request,request-fields, operation::user-controller-test/delete-me[snippets="http-request,http-response"] ==== -=== 유저 관심 리스트 조회 (GET /users/favorites) +=== 유저 관심 프로젝트 리스트 조회 (GET /users/favorites/projects) ==== -operation::user-controller-test/get-user-favorites[snippets="http-request,query-parameters,http-response,response-fields"] +operation::user-controller-test/get-user-favorite-projects[snippets="http-request,http-response,response-fields"] +==== + +=== 유저 관심 대담영상 리스트 조회 (GET /users/favorites/talks) +==== +operation::user-controller-test/get-user-favorite-talks[snippets="http-request,http-response,response-fields"] +==== + +=== 유저 관심 잡페어인터뷰영상 리스트 조회 (GET /users/favorites/jobInterviews) +==== +operation::user-controller-test/get-user-favorite-interviews[snippets="http-request,http-response,response-fields"] ==== === 유저 문의 리스트 조회 (GET /users/inquiries) diff --git a/src/main/resources/static/docs/user.html b/src/main/resources/static/docs/user.html index 90a1da9a..9b6d9bff 100644 --- a/src/main/resources/static/docs/user.html +++ b/src/main/resources/static/docs/user.html @@ -468,7 +468,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 331 +Content-Length: 337 { "id" : 1, @@ -480,8 +480,8 @@

HTTP response

"position" : null, "studentNumber" : "2000123456", "departmentName" : "학과", - "createdAt" : "2024-11-12T15:04:18.6308", - "updatedAt" : "2024-11-12T15:04:18.6308" + "createdAt" : "2024-11-19T10:30:41.7151338", + "updatedAt" : "2024-11-19T10:30:41.7151338" } @@ -675,7 +675,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 335 +Content-Length: 337 { "id" : 1, @@ -687,8 +687,8 @@

HTTP response

"position" : null, "studentNumber" : "2000123456", "departmentName" : "학과", - "createdAt" : "2024-11-12T15:04:18.837977", - "updatedAt" : "2024-11-12T15:04:18.837977" + "createdAt" : "2024-11-19T10:30:42.0700355", + "updatedAt" : "2024-11-19T10:30:42.0700355" } @@ -813,14 +813,14 @@

HTTP response

-

유저 관심 리스트 조회 (GET /users/favorites)

+

유저 관심 프로젝트 리스트 조회 (GET /users/favorites/projects)

HTTP request

-
GET /users/favorites?type=TALK HTTP/1.1
+
GET /users/favorites/projects HTTP/1.1
 Authorization: user_access_token
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
@@ -828,29 +828,215 @@

HTTP request

-

Query parameters

+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 1246
+
+[ {
+  "id" : 1,
+  "thumbnailInfo" : {
+    "id" : 1,
+    "uuid" : "썸네일 uuid 1",
+    "name" : "썸네일 파일 이름 1",
+    "mimeType" : "썸네일 mime 타입 1"
+  },
+  "projectName" : "프로젝트 이름 1",
+  "teamName" : "팀 이름 1",
+  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+  "professorNames" : [ "교수 이름 1" ],
+  "projectType" : "STARTUP",
+  "projectCategory" : "BIG_DATA_ANALYSIS",
+  "awardStatus" : "FIRST",
+  "year" : 2023,
+  "likeCount" : 100,
+  "like" : false,
+  "bookMark" : false,
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}, {
+  "id" : 2,
+  "thumbnailInfo" : {
+    "id" : 2,
+    "uuid" : "썸네일 uuid 2",
+    "name" : "썸네일 파일 이름 2",
+    "mimeType" : "썸네일 mime 타입 2"
+  },
+  "projectName" : "프로젝트 이름 2",
+  "teamName" : "팀 이름 2",
+  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
+  "professorNames" : [ "교수 이름 2" ],
+  "projectType" : "LAB",
+  "projectCategory" : "AI_MACHINE_LEARNING",
+  "awardStatus" : "SECOND",
+  "year" : 2023,
+  "likeCount" : 100,
+  "like" : false,
+  "bookMark" : true,
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+} ]
+
+
+
+
+

Response fields

PathName TypeRequired Description

[].id

Number

true

과제 제안 ID

[].title

String

true

프로젝트명

[].createdDate

String

true

과제 제안 생성일

[].hasReply

Boolean

true

답변 여부

---++++ - + + - + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterNameType Required Description

type

[].id

Number

true

프로젝트 ID

[].thumbnailInfo

Object

true

관심 항목의 타입 (PROJECT, TALK, JOBINTERVIEW)

썸네일 정보

[].thumbnailInfo.id

Number

true

썸네일 ID

[].thumbnailInfo.uuid

String

true

썸네일 UUID

[].thumbnailInfo.name

String

true

썸네일 파일 이름

[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

[].projectName

String

true

프로젝트 이름

[].teamName

String

true

팀 이름

[].studentNames[]

Array

true

학생 이름

[].professorNames[]

Array

true

교수 이름

[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

[].year

Number

true

프로젝트 년도

[].likeCount

Number

true

좋아요 수

[].like

Boolean

true

좋아요 여부

[].bookMark

Boolean

true

북마크 여부

[].url

String

true

프로젝트 URL

[].description

String

true

프로젝트 설명

+ + + +
+

유저 관심 대담영상 리스트 조회 (GET /users/favorites/talks)

+
+
+
+

HTTP request

+
+
+
GET /users/favorites/talks HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+

HTTP response

@@ -860,16 +1046,46 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 150 +Content-Length: 1026 [ { "id" : 1, - "title" : "Project 1", - "youtubeId" : "youtube 1" + "title" : "제목1", + "youtubeId" : "유튜브 고유ID", + "year" : 2024, + "talkerBelonging" : "대담자 소속1", + "talkerName" : "대담자 성명1", + "favorite" : true, + "quiz" : [ { + "question" : "질문1", + "answer" : 0, + "options" : [ "선지1", "선지2" ] + }, { + "question" : "질문2", + "answer" : 0, + "options" : [ "선지1", "선지2" ] + } ], + "createdAt" : "2024-11-19T10:30:41.5266701", + "updatedAt" : "2024-11-19T10:30:41.5266701" }, { "id" : 2, - "title" : "Project 2", - "youtubeId" : "youtube 2" + "title" : "제목2", + "youtubeId" : "유튜브 고유ID", + "year" : 2024, + "talkerBelonging" : "대담자 소속2", + "talkerName" : "대담자 성명2", + "favorite" : true, + "quiz" : [ { + "question" : "질문1", + "answer" : 0, + "options" : [ "선지1", "선지2" ] + }, { + "question" : "질문2", + "answer" : 0, + "options" : [ "선지1", "선지2" ] + } ], + "createdAt" : "2024-11-19T10:30:41.5266701", + "updatedAt" : "2024-11-19T10:30:41.5266701" } ]
@@ -896,19 +1112,215 @@

Response fields

[].id

Number

true

-

ID

+

대담 영상 ID

[].title

String

true

-

제목

+

대담 영상 제목

[].youtubeId

String

true

-

유튜브 ID

+

유튜브 영상의 고유 ID

+ + +

[].year

+

Number

+

true

+

대담 영상 연도

+ + +

[].talkerBelonging

+

String

+

true

+

대담자의 소속된 직장/단체

+ + +

[].talkerName

+

String

+

true

+

대담자의 성명

+ + +

[].favorite

+

Boolean

+

true

+

관심한 대담영상의 여부

+ + +

[].quiz

+

Array

+

false

+

퀴즈 데이터, 없는경우 null

+ + +

[].quiz[].question

+

String

+

false

+

퀴즈 1개의 질문

+ + +

[].quiz[].answer

+

Number

+

false

+

퀴즈 1개의 정답선지 인덱스

+ + +

[].quiz[].options

+

Array

+

false

+

퀴즈 1개의 정답선지 리스트

+ + +

[].createdAt

+

String

+

true

+

대담 영상 생성일

+ + +

[].updatedAt

+

String

+

true

+

대담 영상 수정일

+ + + + + + + +
+

유저 관심 잡페어인터뷰영상 리스트 조회 (GET /users/favorites/jobInterviews)

+
+
+
+

HTTP request

+
+
+
GET /users/favorites/jobInterviews HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 713
+
+[ {
+  "id" : 1,
+  "title" : "잡페어 인터뷰의 제목1",
+  "youtubeId" : "유튜브 고유 ID1",
+  "year" : 2023,
+  "talkerBelonging" : "대담자의 소속1",
+  "talkerName" : "대담자의 성명1",
+  "favorite" : false,
+  "category" : "INTERN",
+  "createdAt" : "2024-11-19T10:30:41.425921",
+  "updatedAt" : "2024-11-19T10:30:41.426946"
+}, {
+  "id" : 2,
+  "title" : "잡페어 인터뷰의 제목2",
+  "youtubeId" : "유튜브 고유 ID2",
+  "year" : 2024,
+  "talkerBelonging" : "대담자의 소속2",
+  "talkerName" : "대담자의 성명2",
+  "favorite" : true,
+  "category" : "INTERN",
+  "createdAt" : "2024-11-19T10:30:41.426946",
+  "updatedAt" : "2024-11-19T10:30:41.426946"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

잡페어 인터뷰 ID

[].title

String

true

잡페어 인터뷰 제목

[].youtubeId

String

true

유튜브 영상의 고유 ID

[].year

Number

true

잡페어 인터뷰 연도

[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

[].createdAt

String

true

잡페어 인터뷰 생성일

[].updatedAt

String

true

잡페어 인터뷰 수정일

@@ -946,13 +1358,13 @@

HTTP response

"id" : 1, "title" : "Title 1", "projectId" : 1, - "createdDate" : "2024-11-12T15:04:18.5841819", + "createdDate" : "2024-11-19T10:30:41.6364815", "hasReply" : true }, { "id" : 2, "title" : "Title 2", "projectId" : 2, - "createdDate" : "2024-11-12T15:04:18.5841819", + "createdDate" : "2024-11-19T10:30:41.6364815", "hasReply" : false } ]
@@ -1041,12 +1453,12 @@

HTTP response

[ { "id" : 1, "title" : "Title 1", - "createdDate" : "2024-11-12T15:04:18.7046253", + "createdDate" : "2024-11-19T10:30:41.8183268", "hasReply" : true }, { "id" : 2, "title" : "Title 2", - "createdDate" : "2024-11-12T15:04:18.7046253", + "createdDate" : "2024-11-19T10:30:41.8183268", "hasReply" : false } ]
@@ -1106,7 +1518,7 @@

Response fields

From 4904f0f6a9b278677fdeba3e656f403caa28d23f Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Tue, 19 Nov 2024 15:07:24 +0900 Subject: [PATCH 36/37] =?UTF-8?q?docs:=20.html=ED=8C=8C=EC=9D=BC=EB=93=A4?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/docs/aiHub-controller-test.html | 1213 -- .../resources/static/docs/application.html | 1084 -- .../static/docs/auth-controller-test.html | 792 - .../resources/static/docs/department.html | 528 - .../resources/static/docs/eventNotice.html | 1447 -- .../resources/static/docs/eventPeriod.html | 932 - .../static/docs/file-controller-test.html | 646 - src/main/resources/static/docs/gallery.html | 1446 -- src/main/resources/static/docs/index.html | 14043 ---------------- src/main/resources/static/docs/inquiry.html | 1666 -- .../static/docs/jobInfo-controller-test.html | 851 - .../resources/static/docs/jobInterview.html | 1483 -- src/main/resources/static/docs/notice.html | 1447 -- src/main/resources/static/docs/project.html | 3006 ---- src/main/resources/static/docs/quiz.html | 804 - src/main/resources/static/docs/talk.html | 1956 --- src/main/resources/static/docs/user.html | 1525 -- 17 files changed, 34869 deletions(-) delete mode 100644 src/main/resources/static/docs/aiHub-controller-test.html delete mode 100644 src/main/resources/static/docs/application.html delete mode 100644 src/main/resources/static/docs/auth-controller-test.html delete mode 100644 src/main/resources/static/docs/department.html delete mode 100644 src/main/resources/static/docs/eventNotice.html delete mode 100644 src/main/resources/static/docs/eventPeriod.html delete mode 100644 src/main/resources/static/docs/file-controller-test.html delete mode 100644 src/main/resources/static/docs/gallery.html delete mode 100644 src/main/resources/static/docs/index.html delete mode 100644 src/main/resources/static/docs/inquiry.html delete mode 100644 src/main/resources/static/docs/jobInfo-controller-test.html delete mode 100644 src/main/resources/static/docs/jobInterview.html delete mode 100644 src/main/resources/static/docs/notice.html delete mode 100644 src/main/resources/static/docs/project.html delete mode 100644 src/main/resources/static/docs/quiz.html delete mode 100644 src/main/resources/static/docs/talk.html delete mode 100644 src/main/resources/static/docs/user.html diff --git a/src/main/resources/static/docs/aiHub-controller-test.html b/src/main/resources/static/docs/aiHub-controller-test.html deleted file mode 100644 index d7a7cb7a..00000000 --- a/src/main/resources/static/docs/aiHub-controller-test.html +++ /dev/null @@ -1,1213 +0,0 @@ - - - - - - - -AI HUB API - - - - - -
-
-

AI HUB API

-
-
-
-

AI HUB 모델 리스트 조회 (POST /aihub/models)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

AI 모델 제목

learningModels

Array

true

학습 모델

topics

Array

true

주제 분류

developmentYears

Array

true

개발 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

-
-
-

HTTP request

-
-
-
POST /aihub/models HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 206
-Host: localhost:8080
-
-{
-  "title" : "title",
-  "learningModels" : [ "학습 모델 1" ],
-  "topics" : [ "주제 1" ],
-  "developmentYears" : [ 2024 ],
-  "professor" : "담당 교수 1",
-  "participants" : [ "학생 1" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1270
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "title" : "title",
-    "learningModels" : [ "학습 모델 1" ],
-    "topics" : [ "주제 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  }, {
-    "title" : "title",
-    "learningModels" : [ "학습 모델 1" ],
-    "topics" : [ "주제 1", "주제 2" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2", "학생 3" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 모델 제목

content[].learningModels

Array

true

학습 모델

content[].topics

Array

true

주제 분류

content[].developmentYears

Array

true

개발 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

AI HUB 데이터셋 리스트 조회 (POST /aihub/datasets)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

AI 데이터셋 제목

dataTypes

Array

true

데이터 유형

topics

Array

true

주제 분류

developmentYears

Array

true

구축 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

-
-
-

HTTP request

-
-
-
POST /aihub/datasets HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 204
-Host: localhost:8080
-
-{
-  "title" : "title",
-  "dataTypes" : [ "주제 1" ],
-  "topics" : [ "데이터 유형 1" ],
-  "developmentYears" : [ 2024 ],
-  "professor" : "담당 교수 1",
-  "participants" : [ "학생 1" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1266
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "title" : "title",
-    "dataTypes" : [ "주제 1" ],
-    "topics" : [ "데이터 유형 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  }, {
-    "title" : "title",
-    "dataTypes" : [ "주제 1", "주제 2" ],
-    "topics" : [ "데이터 유형 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2", "학생 3" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 데이터셋 제목

content[].topics

Array

true

주제 분류

content[].dataTypes

Array

true

데이터 유형

content[].developmentYears

Array

true

구축 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/application.html b/src/main/resources/static/docs/application.html deleted file mode 100644 index d204309b..00000000 --- a/src/main/resources/static/docs/application.html +++ /dev/null @@ -1,1084 +0,0 @@ - - - - - - - -가입 신청 관리 API - - - - - -
-
-

가입 신청 관리 API

-
-
-
-

가입 신청 리스트 조회 (GET /applications)

-
-
-
-

HTTP request

-
-
-
GET /applications HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 1235
-
-{
-  "totalElements" : 3,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "name" : "김영한",
-    "division" : "배민",
-    "position" : null,
-    "userType" : "INACTIVE_COMPANY",
-    "createdAt" : "2024-11-12T15:04:16.8961349",
-    "updatedAt" : "2024-11-12T15:04:16.8961349"
-  }, {
-    "id" : 2,
-    "name" : "김교수",
-    "division" : "솦융대",
-    "position" : "교수",
-    "userType" : "INACTIVE_PROFESSOR",
-    "createdAt" : "2024-11-12T15:04:16.8961349",
-    "updatedAt" : "2024-11-12T15:04:16.8961349"
-  }, {
-    "id" : 3,
-    "name" : "박교수",
-    "division" : "정통대",
-    "position" : "교수",
-    "userType" : "INACTIVE_PROFESSOR",
-    "createdAt" : "2024-11-12T15:04:16.8961349",
-    "updatedAt" : "2024-11-12T15:04:16.8961349"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 3,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

가입 신청 ID

content[].name

String

true

가입 신청자 이름

content[].division

String

false

소속

content[].position

String

false

직책

content[].userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

content[].createdAt

String

true

가입 신청 정보 생성일

content[].updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

가입 신청자 상세 정보 조회 (GET /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
GET /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 284
-
-{
-  "id" : 1,
-  "name" : "김영한",
-  "phone" : "010-1111-2222",
-  "email" : "email@gmail.com",
-  "division" : "배민",
-  "position" : "CEO",
-  "userType" : "INACTIVE_COMPANY",
-  "createdAt" : "2024-11-12T15:04:17.0431853",
-  "updatedAt" : "2024-11-12T15:04:17.0431853"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

교수/기업 가입 허가 (PATCH /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
PATCH /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 275
-
-{
-  "id" : 1,
-  "name" : "김영한",
-  "phone" : "010-1111-2222",
-  "email" : "email@gmail.com",
-  "division" : "배민",
-  "position" : "CEO",
-  "userType" : "COMPANY",
-  "createdAt" : "2024-11-12T15:04:16.9965445",
-  "updatedAt" : "2024-11-12T15:04:16.9965445"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [PROFESSOR, COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

교수/기업 가입 거절 (DELETE /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
DELETE /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/auth-controller-test.html b/src/main/resources/static/docs/auth-controller-test.html deleted file mode 100644 index eb9a46e4..00000000 --- a/src/main/resources/static/docs/auth-controller-test.html +++ /dev/null @@ -1,792 +0,0 @@ - - - - - - - -인증 API - - - - - -
-
-

인증 API

-
-
-
-

카카오 소셜 로그인 (POST /auth/login/kakao/)

-
-
-
-

HTTP request

-
-
-
GET /auth/login/kakao?code=codefromkakaologin HTTP/1.1
-Host: localhost:8080
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

code

true

카카오 인가코드

-
-
-

HTTP response

-
-
-
HTTP/1.1 302 Found
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Tue, 19 Nov 2024 06:04:01 GMT; Secure; HttpOnly; SameSite=None
-Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Tue, 19 Nov 2024 06:04:01 GMT; Secure; SameSite=None
-Location: https://localhost:3000/login/kakao
-
-
-
-
-

Response fields

-
-

Snippet response-fields not found for operation::auth-controller-test/kakao-social-login

-
-
-
-
-
-
-

회원가입 (POST /auth/register)

-
-
-
-

HTTP request

-
-
-
POST /auth/register HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Content-Length: 301
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "name" : "stop-user",
-  "phoneNumber" : "010-1234-1234",
-  "userType" : "STUDENT",
-  "email" : "email@gmail.com",
-  "signUpSource" : "ad",
-  "studentInfo" : {
-    "department" : "소프트웨어학과",
-    "studentNumber" : "2021123123"
-  },
-  "division" : null,
-  "position" : null
-}
-
-
-
-
-

Request cookies

- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

Request headers

- ---- - - - - - - - - - - - - -
NameDescription

Authorization

access token

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

유저 이름

phoneNumber

String

true

전화 번호

userType

String

true

회원 유형

email

String

true

이메일

signUpSource

String

false

가입 경로

studentInfo.department

String

true

학과

studentInfo.studentNumber

String

true

학번

division

String

false

소속

position

String

false

직책

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 90
-
-{
-  "name" : "stop-user",
-  "email" : "email@email.com",
-  "phone" : "010-1234-1234"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

이름

email

String

true

이메일

phone

String

true

전화번호

-
-
-
-
-
-

Access Token 재발급 (POST /auth/reissue)

-
-
-
-

HTTP request

-
-
-
POST /auth/reissue HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 47
-
-{
-  "accessToken" : "reissued_access_token"
-}
-
-
-
-
-
-
-
-

로그아웃 (POST /auth/logout)

-
-
-
-

HTTP request

-
-
-
POST /auth/logout HTTP/1.1
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-Content-Type: application/x-www-form-urlencoded
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/department.html b/src/main/resources/static/docs/department.html deleted file mode 100644 index a97b784a..00000000 --- a/src/main/resources/static/docs/department.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - - -학과 API - - - - - -
-
-

학과 API

-
-
-
-

학과 리스트 조회 (GET /departments)

-
-
-
-

HTTP request

-
-
-
GET /departments HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 98
-
-[ {
-  "id" : 1,
-  "name" : "소프트웨어학과"
-}, {
-  "id" : 2,
-  "name" : "학과2"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

학과 ID

[].name

String

true

학과 이름

-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/eventNotice.html b/src/main/resources/static/docs/eventNotice.html deleted file mode 100644 index cafc10c3..00000000 --- a/src/main/resources/static/docs/eventNotice.html +++ /dev/null @@ -1,1447 +0,0 @@ - - - - - - - -이벤트 공지 사항 API - - - - - -
-
-

이벤트 공지 사항 API

-
-
-

이벤트 공지 사항 생성 (POST /eventNotices)

-
-
-
-

HTTP request

-
-
-
POST /eventNotices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 146
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "이벤트 공지 사항 내용",
-  "fixed" : true,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1019
-
-{
-  "id" : 1,
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "이벤트 공지 사항 내용",
-  "hitCount" : 0,
-  "fixed" : true,
-  "createdAt" : "2024-11-12T15:04:03.7121108",
-  "updatedAt" : "2024-11-12T15:04:03.7121108",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.7121108",
-    "updatedAt" : "2024-11-12T15:04:03.7121108"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.7121108",
-    "updatedAt" : "2024-11-12T15:04:03.7121108"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.7121108",
-    "updatedAt" : "2024-11-12T15:04:03.7121108"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 리스트 조회 (GET /eventNotices)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 이벤트 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP request

-
-
-
GET /eventNotices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 919
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "이벤트 공지 사항 1",
-    "hitCount" : 10,
-    "fixed" : true,
-    "createdAt" : "2024-11-12T15:04:03.7949335",
-    "updatedAt" : "2024-11-12T15:04:03.7949335"
-  }, {
-    "id" : 2,
-    "title" : "이벤트 공지 사항 2",
-    "hitCount" : 10,
-    "fixed" : false,
-    "createdAt" : "2024-11-12T15:04:03.7949335",
-    "updatedAt" : "2024-11-12T15:04:03.7949335"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

이벤트 공지 사항 ID

content[].title

String

true

이벤트 공지 사항 제목

content[].hitCount

Number

true

이벤트 공지 사항 조회수

content[].fixed

Boolean

true

이벤트 공지 사항 고정 여부

content[].createdAt

String

true

이벤트 공지 사항 생성일

content[].updatedAt

String

true

이벤트 공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

이벤트 공지 사항 조회 (GET /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

조회할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
GET /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 997
-
-{
-  "id" : 1,
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "content",
-  "hitCount" : 10,
-  "fixed" : true,
-  "createdAt" : "2024-11-12T15:04:03.5238303",
-  "updatedAt" : "2024-11-12T15:04:03.5238303",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.5238303",
-    "updatedAt" : "2024-11-12T15:04:03.5238303"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.5238303",
-    "updatedAt" : "2024-11-12T15:04:03.5238303"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.5238303",
-    "updatedAt" : "2024-11-12T15:04:03.5238303"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 수정 (PUT /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

수정할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
PUT /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 167
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 이벤트 공지 사항 제목",
-  "content" : "수정된 이벤트 공지 사항 내용",
-  "fixed" : false,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1009
-
-{
-  "id" : 1,
-  "title" : "수정된 이벤트 공지 사항 제목",
-  "content" : "수정된 이벤트 공지 사항 내용",
-  "hitCount" : 10,
-  "fixed" : false,
-  "createdAt" : "2024-01-01T12:00:00",
-  "updatedAt" : "2024-11-12T15:04:03.3264144",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:03.3264144"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:03.3264144"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:03.3264144"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 삭제 (DELETE /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

삭제할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
DELETE /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/eventPeriod.html b/src/main/resources/static/docs/eventPeriod.html deleted file mode 100644 index 677a74cf..00000000 --- a/src/main/resources/static/docs/eventPeriod.html +++ /dev/null @@ -1,932 +0,0 @@ - - - - - - - -이벤트 기간 API - - - - - -
-
-

이벤트 기간 API

-
-
-
-

이벤트 기간 생성 (POST /eventPeriods)

-
-
-
-

HTTP request

-
-
-
POST /eventPeriods HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 89
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "start" : "2024-11-12T15:04:04.8161421",
-  "end" : "2024-11-22T15:04:04.8161421"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 216
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-12T15:04:04.8161421",
-  "end" : "2024-11-22T15:04:04.8161421",
-  "createdAt" : "2024-11-12T15:04:04.8161421",
-  "updatedAt" : "2024-11-12T15:04:04.8161421"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-

올해의 이벤트 기간 조회 (GET /eventPeriod)

-
-
-
-

HTTP request

-
-
-
GET /eventPeriod HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 208
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-12T15:04:04.77104",
-  "end" : "2024-11-22T15:04:04.77104",
-  "createdAt" : "2024-11-12T15:04:04.77104",
-  "updatedAt" : "2024-11-12T15:04:04.77104"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-

전체 이벤트 기간 리스트 조회 (GET /eventPeriods)

-
-
-
-

HTTP request

-
-
-
GET /eventPeriods HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 432
-
-[ {
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-12T15:04:04.896861",
-  "end" : "2024-11-22T15:04:04.896861",
-  "createdAt" : "2024-11-12T15:04:04.896861",
-  "updatedAt" : "2024-11-12T15:04:04.896861"
-}, {
-  "id" : 2,
-  "year" : 2025,
-  "start" : "2024-11-12T15:04:04.896861",
-  "end" : "2024-11-22T15:04:04.896861",
-  "createdAt" : "2024-11-12T15:04:04.8978643",
-  "updatedAt" : "2024-11-12T15:04:04.8978643"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

이벤트 기간 ID

[].year

Number

true

이벤트 연도

[].start

String

true

이벤트 시작 일시

[].end

String

true

이벤트 종료 일시

[].createdAt

String

true

생성일

[].updatedAt

String

true

변경일

-
-
-
-
-
-

올해의 이벤트 기간 업데이트 (PUT /eventPeriod)

-
-
-
-

HTTP request

-
-
-
PUT /eventPeriod HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 87
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "start" : "2024-11-12T15:04:04.688568",
-  "end" : "2024-11-22T15:04:04.688568"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 212
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-12T15:04:04.688568",
-  "end" : "2024-11-22T15:04:04.688568",
-  "createdAt" : "2024-11-12T15:04:04.688568",
-  "updatedAt" : "2024-11-12T15:04:04.688568"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/file-controller-test.html b/src/main/resources/static/docs/file-controller-test.html deleted file mode 100644 index 66f1a5e2..00000000 --- a/src/main/resources/static/docs/file-controller-test.html +++ /dev/null @@ -1,646 +0,0 @@ - - - - - - - -파일 API - - - - - -
-
-

파일 API

-
-
-
-

다중 파일 업로드 (POST /files)

-
-
-
-

HTTP request

-
-
-
POST /files HTTP/1.1
-Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Host: localhost:8080
-
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=files; filename=첨부파일1.png
-Content-Type: image/png
-
-[BINARY DATA - PNG IMAGE CONTENT]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=files; filename=첨부파일2.pdf
-Content-Type: application/pdf
-
-[BINARY DATA - PDF CONTENT]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
-
-
-

Request parts

- ---- - - - - - - - - - - - - -
PartDescription

files

업로드할 파일 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 464
-
-[ {
-  "id" : 1,
-  "uuid" : "6759ebde-c9ff-45d7-9d74-e32a43dc3cf2",
-  "name" : "첨부파일1.png",
-  "mimeType" : "image/png",
-  "createdAt" : "2024-11-12T15:04:07.8310858",
-  "updatedAt" : "2024-11-12T15:04:07.8310858"
-}, {
-  "id" : 2,
-  "uuid" : "cebc684a-eb66-4bf5-b420-40a6303271f3",
-  "name" : "첨부파일2.pdf",
-  "mimeType" : "application/pdf",
-  "createdAt" : "2024-11-12T15:04:07.8310858",
-  "updatedAt" : "2024-11-12T15:04:07.8310858"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

파일 ID

[].uuid

String

true

파일 UUID

[].name

String

true

파일 이름

[].mimeType

String

true

파일의 MIME 타입

[].createdAt

String

true

파일 생성일

[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

파일 조회 (GET /files/{fileId})

-
-
-
-

HTTP request

-
-
-
GET /files/1 HTTP/1.1
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /files/{fileId}
ParameterDescription

fileId

파일 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: image/png;charset=UTF-8
-Content-Length: 33
-
-[BINARY DATA - PNG IMAGE CONTENT]
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/gallery.html b/src/main/resources/static/docs/gallery.html deleted file mode 100644 index 09bbdfcc..00000000 --- a/src/main/resources/static/docs/gallery.html +++ /dev/null @@ -1,1446 +0,0 @@ - - - - - - - -갤러리 API - - - - - -
-
-

갤러리 API

-
-
-
-

갤러리 게시글 생성 (POST /galleries)

-
-
-
-

HTTP request

-
-
-
POST /galleries HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 101
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 929
-
-{
-  "id" : 1,
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "hitCount" : 1,
-  "createdAt" : "2024-11-12T15:04:09.3618421",
-  "updatedAt" : "2024-11-12T15:04:09.3618421",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.3618421",
-    "updatedAt" : "2024-11-12T15:04:09.3618421"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.3618421",
-    "updatedAt" : "2024-11-12T15:04:09.3618421"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.3618421",
-    "updatedAt" : "2024-11-12T15:04:09.3618421"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

갤러리 게시글 목록 조회 (GET /galleries)

-
-
-
-

HTTP request

-
-
-
GET /galleries?year=2024&month=4 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

연도

month

false

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1289
-
-{
-  "totalElements" : 1,
-  "totalPages" : 1,
-  "size" : 1,
-  "content" : [ {
-    "id" : 1,
-    "title" : "새내기 배움터",
-    "year" : 2024,
-    "month" : 4,
-    "hitCount" : 0,
-    "createdAt" : "2024-11-12T15:04:09.1602347",
-    "updatedAt" : "2024-11-12T15:04:09.1602347",
-    "files" : [ {
-      "id" : 1,
-      "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-      "name" : "사진1.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-11-12T15:04:09.1602347",
-      "updatedAt" : "2024-11-12T15:04:09.1602347"
-    }, {
-      "id" : 2,
-      "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-      "name" : "사진2.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-11-12T15:04:09.1602347",
-      "updatedAt" : "2024-11-12T15:04:09.1602347"
-    }, {
-      "id" : 3,
-      "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-      "name" : "사진3.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-11-12T15:04:09.1602347",
-      "updatedAt" : "2024-11-12T15:04:09.1602347"
-    } ]
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 1,
-  "pageable" : "INSTANCE",
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

totalElements

Number

true

전체 데이터 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지당 데이터 수

content

Array

true

갤러리 목록

content[].id

Number

true

갤러리 ID

content[].title

String

true

갤러리 제목

content[].year

Number

true

갤러리 연도

content[].month

Number

true

갤러리 월

content[].hitCount

Number

true

갤러리 조회수

content[].createdAt

String

true

갤러리 생성일

content[].updatedAt

String

true

갤러리 수정일

content[].files

Array

true

파일 목록

content[].files[].id

Number

true

파일 ID

content[].files[].uuid

String

true

파일 UUID

content[].files[].name

String

true

파일 이름

content[].files[].mimeType

String

true

파일 MIME 타입

content[].files[].createdAt

String

true

파일 생성일

content[].files[].updatedAt

String

true

파일 수정일

number

Number

true

현재 페이지 번호

sort.empty

Boolean

true

정렬 정보

sort.sorted

Boolean

true

정렬 정보

sort.unsorted

Boolean

true

정렬 정보

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

numberOfElements

Number

true

현재 페이지의 데이터 수

empty

Boolean

true

빈 페이지 여부

-
-
-
-
-
-

갤러리 게시글 조회 (GET /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
GET /galleries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

조회할 갤러리 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 929
-
-{
-  "id" : 1,
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "hitCount" : 1,
-  "createdAt" : "2024-11-12T15:04:09.2727084",
-  "updatedAt" : "2024-11-12T15:04:09.2727084",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.2727084",
-    "updatedAt" : "2024-11-12T15:04:09.2727084"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.2727084",
-    "updatedAt" : "2024-11-12T15:04:09.2727084"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.2727084",
-    "updatedAt" : "2024-11-12T15:04:09.2727084"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

갤러리 게시글 삭제 (DELETE /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
DELETE /galleries/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

삭제할 갤러리 ID

-
-
-
-
-
-

갤러리 게시글 수정 (PUT /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
PUT /galleries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 98
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 제목",
-  "year" : 2024,
-  "month" : 5,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

수정할 갤러리 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 926
-
-{
-  "id" : 1,
-  "title" : "수정된 제목",
-  "year" : 2024,
-  "month" : 5,
-  "hitCount" : 1,
-  "createdAt" : "2024-11-12T15:04:08.9705233",
-  "updatedAt" : "2024-11-12T15:04:08.9705233",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:08.9695134",
-    "updatedAt" : "2024-11-12T15:04:08.9695134"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:08.9695134",
-    "updatedAt" : "2024-11-12T15:04:08.9695134"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:08.9695134",
-    "updatedAt" : "2024-11-12T15:04:08.9695134"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/index.html b/src/main/resources/static/docs/index.html deleted file mode 100644 index 2b34079f..00000000 --- a/src/main/resources/static/docs/index.html +++ /dev/null @@ -1,14043 +0,0 @@ - - - - - - - -S-TOP Rest Docs - - - - - - -
-
-

커스텀 예외 코드

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CodeMessage

1000

요청 형식이 올바르지 않습니다.

1001

해당 연도의 행사 기간이 이미 존재합니다.

1002

올해의 이벤트 기간이 존재하지 않습니다.

1003

이벤트 시작 일시 혹은 종료 일시가 올해를 벗어났습니다.

2001

소셜 로그인 공급자로부터 유저 정보를 받아올 수 없습니다.

2002

소셜 로그인 공급자로부터 인증 토큰을 받아올 수 없습니다.

3000

접근할 수 없는 리소스입니다.

3001

유효하지 않은 Refresh Token 입니다.

3002

토큰 검증에 실패했습니다.

3003

유효하지 않은 Access Token 입니다.

13000

Notion 데이터를 가져오는데 실패했습니다.

4000

유저 id 를 찾을 수 없습니다.

4001

회원가입이 필요합니다.

4002

유저 권한이 존재하지 않습니다.

4003

학과가 존재하지 않습니다.

4004

학과/학번 정보가 존재하지 않습니다.

4005

회원 가입 이용이 불가능한 회원 유형입니다.

4010

ID에 해당하는 인증 신청 정보가 존재하지 않습니다.

4011

이미 인증 된 회원입니다.

4100

회원 유형은 수정할 수 없습니다.

4101

소속 또는 직책의 형식이 잘못되었습니다.

77000

프로젝트를 찾을 수 없습니다.

77001

프로젝트 썸네일을 찾을 수 없습니다

77002

프로젝트 포스터를 찾을 수 없습니다

77003

멤버 정보가 올바르지 않습니다.

77004

기술 스택 정보가 올바르지 않습니다.

77005

관심 표시한 프로젝트가 이미 존재합니다

77007

관심 표시한 프로젝트를 찾을 수 없습니다.

77008

이미 좋아요 한 프로젝트입니다.

77009

좋아요 표시한 프로젝트가 존재하지 않습니다

77010

댓글을 찾을 수 없습니다

77011

유저 정보가 일치하지 않습니다

5000

파일 업로드를 실패했습니다.

5001

파일 가져오기를 실패했습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

10000

요청한 ID에 해당하는 공지사항이 존재하지 않습니다.

11000

요청한 ID에 해당하는 이벤트가 존재하지 않습니다.

8000

요청한 ID에 해당하는 문의가 존재하지 않습니다.

8001

요청한 ID에 해당하는 문의 답변이 존재하지 않습니다.

8002

이미 답변이 등록된 문의입니다.

8003

해당 문의에 대한 권한이 없습니다.

8200

해당 ID에 해당하는 잡페어 인터뷰가 없습니다.

8400

해당 ID에 해당하는 대담 영상이 없습니다.

8401

퀴즈 데이터가 존재하지 않습니다.

8402

퀴즈 제출 데이터가 존재하지 않습니다.

8601

이미 퀴즈의 정답을 모두 맞추었습니다.

8801

이미 관심 리스트에 추가되었습니다.

8802

이미 관심 리스트에 추가되어 있지 않습니다.

8804

퀴즈 이벤트 참여 기간이 아닙니다.

8805

대담 영상과 현재 이벤트 참여 연도가 일치하지 않습니다.

8901

퀴즈 최대 시도 횟수를 초과하였습니다.

71001

엑셀 파일이 주어진 클래스와 호환되지 않습니다.

9001

요청한 ID에 해당하는 갤러리가 존재하지 않습니다.

-
-
-

인증 API

-
-
-
-

카카오 소셜 로그인 (POST /auth/login/kakao/)

-
-
-
-

HTTP request

-
-
-
GET /auth/login/kakao?code=codefromkakaologin HTTP/1.1
-Host: localhost:8080
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

code

true

카카오 인가코드

-
-
-

HTTP response

-
-
-
HTTP/1.1 302 Found
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Tue, 19 Nov 2024 06:04:01 GMT; Secure; HttpOnly; SameSite=None
-Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Tue, 19 Nov 2024 06:04:01 GMT; Secure; SameSite=None
-Location: https://localhost:3000/login/kakao
-
-
-
-
-

Response fields

-
-

Snippet response-fields not found for operation::auth-controller-test/kakao-social-login

-
-
-
-
-
-
-

회원가입 (POST /auth/register)

-
-
-
-

HTTP request

-
-
-
POST /auth/register HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Content-Length: 301
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "name" : "stop-user",
-  "phoneNumber" : "010-1234-1234",
-  "userType" : "STUDENT",
-  "email" : "email@gmail.com",
-  "signUpSource" : "ad",
-  "studentInfo" : {
-    "department" : "소프트웨어학과",
-    "studentNumber" : "2021123123"
-  },
-  "division" : null,
-  "position" : null
-}
-
-
-
-
-

Request cookies

- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

Request headers

- ---- - - - - - - - - - - - - -
NameDescription

Authorization

access token

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

유저 이름

phoneNumber

String

true

전화 번호

userType

String

true

회원 유형

email

String

true

이메일

signUpSource

String

false

가입 경로

studentInfo.department

String

true

학과

studentInfo.studentNumber

String

true

학번

division

String

false

소속

position

String

false

직책

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 90
-
-{
-  "name" : "stop-user",
-  "email" : "email@email.com",
-  "phone" : "010-1234-1234"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

이름

email

String

true

이메일

phone

String

true

전화번호

-
-
-
-
-
-

Access Token 재발급 (POST /auth/reissue)

-
-
-
-

HTTP request

-
-
-
POST /auth/reissue HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 47
-
-{
-  "accessToken" : "reissued_access_token"
-}
-
-
-
-
-
-
-
-

로그아웃 (POST /auth/logout)

-
-
-
-

HTTP request

-
-
-
POST /auth/logout HTTP/1.1
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-Content-Type: application/x-www-form-urlencoded
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

파일 API

-
-
-
-

다중 파일 업로드 (POST /files)

-
-
-
-

HTTP request

-
-
-
POST /files HTTP/1.1
-Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Host: localhost:8080
-
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=files; filename=첨부파일1.png
-Content-Type: image/png
-
-[BINARY DATA - PNG IMAGE CONTENT]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=files; filename=첨부파일2.pdf
-Content-Type: application/pdf
-
-[BINARY DATA - PDF CONTENT]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
-
-
-

Request parts

- ---- - - - - - - - - - - - - -
PartDescription

files

업로드할 파일 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 464
-
-[ {
-  "id" : 1,
-  "uuid" : "6759ebde-c9ff-45d7-9d74-e32a43dc3cf2",
-  "name" : "첨부파일1.png",
-  "mimeType" : "image/png",
-  "createdAt" : "2024-11-12T15:04:07.8310858",
-  "updatedAt" : "2024-11-12T15:04:07.8310858"
-}, {
-  "id" : 2,
-  "uuid" : "cebc684a-eb66-4bf5-b420-40a6303271f3",
-  "name" : "첨부파일2.pdf",
-  "mimeType" : "application/pdf",
-  "createdAt" : "2024-11-12T15:04:07.8310858",
-  "updatedAt" : "2024-11-12T15:04:07.8310858"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

파일 ID

[].uuid

String

true

파일 UUID

[].name

String

true

파일 이름

[].mimeType

String

true

파일의 MIME 타입

[].createdAt

String

true

파일 생성일

[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

파일 조회 (GET /files/{fileId})

-
-
-
-

HTTP request

-
-
-
GET /files/1 HTTP/1.1
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /files/{fileId}
ParameterDescription

fileId

파일 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: image/png;charset=UTF-8
-Content-Length: 33
-
-[BINARY DATA - PNG IMAGE CONTENT]
-
-
-
-
-
-
-
-
-
-

잡페어 인터뷰 API

-
-
-
-

잡페어 인터뷰 생성 (POST /jobInterviews)

-
-
-
-

HTTP request

-
-
-
POST /jobInterviews HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 220
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "category" : "INTERN"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 329
-
-{
-  "id" : 1,
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "category" : "INTERN",
-  "createdAt" : "2024-11-12T15:04:20.7648021",
-  "updatedAt" : "2024-11-12T15:04:20.7648021"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 리스트 조회 (GET /jobInterviews)

-
-
-
-

HTTP request

-
-
-
GET /jobInterviews HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 잡페어 인터뷰 연도

category

false

찾고자 하는 잡페어 인터뷰 카테고리: SENIOR, INTERN

title

false

찾고자 하는 잡페어 인터뷰의 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1259
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "잡페어 인터뷰의 제목1",
-    "youtubeId" : "유튜브 고유 ID1",
-    "year" : 2023,
-    "talkerBelonging" : "대담자의 소속1",
-    "talkerName" : "대담자의 성명1",
-    "favorite" : false,
-    "category" : "INTERN",
-    "createdAt" : "2024-11-12T15:04:20.6120226",
-    "updatedAt" : "2024-11-12T15:04:20.6120226"
-  }, {
-    "id" : 2,
-    "title" : "잡페어 인터뷰의 제목2",
-    "youtubeId" : "유튜브 고유 ID2",
-    "year" : 2024,
-    "talkerBelonging" : "대담자의 소속2",
-    "talkerName" : "대담자의 성명2",
-    "favorite" : true,
-    "category" : "INTERN",
-    "createdAt" : "2024-11-12T15:04:20.6120226",
-    "updatedAt" : "2024-11-12T15:04:20.6120226"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

잡페어 인터뷰 ID

content[].title

String

true

잡페어 인터뷰 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

잡페어 인터뷰 연도

content[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

content[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

content[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

content[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

content[].createdAt

String

true

잡페어 인터뷰 생성일

content[].updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 단건 조회 (GET /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
GET /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

조회할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 352
-
-{
-  "id" : 1,
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "favorite" : false,
-  "category" : "INTERN",
-  "createdAt" : "2024-11-12T15:04:20.7001261",
-  "updatedAt" : "2024-11-12T15:04:20.7001261"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 수정 (PUT /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
PUT /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 224
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 제목",
-  "youtubeId" : "수정된 유튜브 ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정된 대담자 소속",
-  "talkerName" : "수정된 대담자 성명",
-  "category" : "INTERN"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

수정할 잡페어 인터뷰의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 325
-
-{
-  "id" : 1,
-  "title" : "수정된 제목",
-  "youtubeId" : "수정된 유튜브 ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정된 대담자 소속",
-  "talkerName" : "수정된 대담자 성명",
-  "category" : "INTERN",
-  "createdAt" : "2021-01-01T12:00:00",
-  "updatedAt" : "2024-11-12T15:04:20.4670126"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 삭제 (DELETE /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
DELETE /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

삭제할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

잡페어 인터뷰 관심 등록 (POST /jobInterviews/{jobInterviews}/favorite)

-
-
-
-

HTTP request

-
-
-
POST /jobInterviews/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에 추가할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

잡페어 인터뷰 관심 삭제 (DELETE /jobInterviews/{jobInterviews}/favorite)

-
-
-
-

HTTP request

-
-
-
DELETE /jobInterviews/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에서 삭제할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

대담 영상 API

-
-
-
-

대담 영상 생성 (POST /talks)

-
-
-
-

HTTP request

-
-
-
POST /talks HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 376
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 483
-
-{
-  "id" : 1,
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-11-12T15:04:24.845687",
-  "updatedAt" : "2024-11-12T15:04:24.845687"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 리스트 조회 (GET /talks)

-
-
-
-

HTTP request

-
-
-
GET /talks HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 대담 영상의 연도

title

false

찾고자 하는 대담 영상의 제목 일부

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1047
-
-{
-  "totalElements" : 1,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "제목",
-    "youtubeId" : "유튜브 고유ID",
-    "year" : 2024,
-    "talkerBelonging" : "대담자 소속",
-    "talkerName" : "대담자 성명",
-    "favorite" : true,
-    "quiz" : [ {
-      "question" : "질문1",
-      "answer" : 0,
-      "options" : [ "선지1", "선지2" ]
-    }, {
-      "question" : "질문2",
-      "answer" : 0,
-      "options" : [ "선지1", "선지2" ]
-    } ],
-    "createdAt" : "2024-11-12T15:04:24.9098651",
-    "updatedAt" : "2024-11-12T15:04:24.9098651"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 1,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

대담 영상 ID

content[].title

String

true

대담 영상 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

대담 영상 연도

content[].talkerBelonging

String

true

대담자의 소속된 직장/단체

content[].talkerName

String

true

대담자의 성명

content[].favorite

Boolean

true

관심한 대담영상의 여부

content[].quiz

Array

false

퀴즈 데이터, 없는경우 null

content[].quiz[].question

String

false

퀴즈 1개의 질문

content[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

content[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

content[].createdAt

String

true

대담 영상 생성일

content[].updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 단건 조회 (GET /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
GET /talks/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

조회할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 507
-
-{
-  "id" : 1,
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "favorite" : true,
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-11-12T15:04:24.7720184",
-  "updatedAt" : "2024-11-12T15:04:24.7720184"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

favorite

Boolean

true

관심한 대담영상의 여부

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 수정 (PUT /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
PUT /talks/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 476
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정한 제목",
-  "youtubeId" : "수정한 유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정한 대담자 소속",
-  "talkerName" : "수정한 대담자 성명",
-  "quiz" : [ {
-    "question" : "수정한 질문1",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  }, {
-    "question" : "수정한 질문2",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  } ]
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

수정할 대담 영상의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 585
-
-{
-  "id" : 1,
-  "title" : "수정한 제목",
-  "youtubeId" : "수정한 유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정한 대담자 소속",
-  "talkerName" : "수정한 대담자 성명",
-  "quiz" : [ {
-    "question" : "수정한 질문1",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  }, {
-    "question" : "수정한 질문2",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  } ],
-  "createdAt" : "2024-11-12T15:04:24.5646962",
-  "updatedAt" : "2024-11-12T15:04:24.5646962"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 삭제 (DELETE /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
DELETE /talks/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

삭제할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

대담 영상의 퀴즈 조회 (GET /talks/{talkId}/quiz)

-
-
-
-

HTTP request

-
-
-
GET /talks/1/quiz HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 가져올 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 215
-
-{
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-
-
-
-

대담 영상의 퀴즈 결과 제출 (POST /talks/{talkId}/quiz)

-
-
-
-

HTTP request

-
-
-
POST /talks/1/quiz HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Content-Length: 52
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "result" : {
-    "0" : 0,
-    "1" : 1
-  }
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 제출할 대담 영상의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

result

Object

true

퀴즈를 푼 결과

result.*

Number

true

퀴즈 각 문제별 정답 인덱스, key는 문제 번호

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 43
-
-{
-  "success" : true,
-  "tryCount" : 1
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

success

Boolean

true

퀴즈 성공 여부

tryCount

Number

true

퀴즈 시도 횟수

-
-
-
-
-
-

대담 영상의 관심 등록 (POST /talks/{talkId}/favorite)

-
-
-
-

HTTP request

-
-
-
POST /talks/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에 추가할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

대담 영상의 관심 삭제 (DELETE /talks/{talkId}/favorite)

-
-
-
-

HTTP request

-
-
-
DELETE /talks/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에서 삭제할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

유저의 퀴즈 제출 기록 조회 (GET /talks/{talkId/quiz/submit)

-
-
-
-

HTTP request

-
-
-
GET /talks/1/quiz/submit HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz/submit
ParameterDescription

talkId

퀴즈가 연결된 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 44
-
-{
-  "success" : false,
-  "tryCount" : 2
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

tryCount

Number

true

시도한 횟수

success

Boolean

true

퀴즈 성공 여부

-
-
-
-
-
-
-
-

퀴즈 결과 API

-
-
-
-

퀴즈 결과 조회 (GET /quizzes/result)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 778
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "userId" : 1,
-    "name" : "name",
-    "phone" : "010-1111-1111",
-    "email" : "scg@scg.skku.ac.kr",
-    "successCount" : 3
-  }, {
-    "userId" : 2,
-    "name" : "name2",
-    "phone" : "010-0000-1234",
-    "email" : "iam@2tle.io",
-    "successCount" : 1
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

-
-
-
-
-
-

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result/excel HTTP/1.1
-Content-Type: application/octet-stream;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/octet-stream;charset=UTF-8
-Content-Disposition: attachment; filename=excel.xlsx
-Content-Length: 2828
-
-PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
-�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
-�0D��ro�z�4� �'{����MHV�盓z���T��E�1e�����Ɇ�ѳ����:�No7jH!bb�Y��V��������T�)$o���0M��9ؗGb�7�pe��*~�R�>��Y�EB���nW������PK6n�!��PK-docProps/core.xmlm�]K�0��J�}���!��e (�(ޅ����h�7����.�������̀> �����bV9�۶Ə�]q�QL�j985�o�Jy�\�}pB�!���Q(_�.%/��#c�	��W�L�Z�z�-N�HR�$�$,�b�'�V�ҿ�ahE`6E�JF~����d!��_�q�q5sy#F��n���N_W���*�L�Q���s#?�������
-�|]0V0~�Aׂ������g��\Hh3q�sE�jn�PK�iX��PK-xl/sharedStrings.xml=�A
-�0�{��D�i�/��tm�&f7�����0Ì�7mꃕc&���B�y��Zx>���~72��X�I��nx�s�["�5����R7�\���u�\*����M��9��"��~PKh���y�PK-
-xl/styles.xml���n� ��J}���d���&C%W��J]�9ۨpX@"�O_0N�L:�������n4���ye���UA	`c�®���iKw���aҰ����C^�MF���Ik�!��c~p �O&�٦(��
-)/�dj<i�	CE�x�Z�*k�^�or:*i���XmQ(aY�m�P�]�B��S3O��,o�0O����%��[��Ii�;Ćf���ֱ K~��(Z�������}�91�8�/>Z'�nߟ%^jhC48��);�t�51�Jt�NȋcI"���iu��{lI���L����_�8ВfL.�����ƒ����hv���PK����E�PK-xl/workbook.xmlM���0��&�C�wi1ƨ����z/�@mI�_0��83��d��l�@�;	i"���|m\+�^\w'��v��>���=[xG���Tuh5%~D�$�V�E���P��!F;�Gn�q��[��j1=���F��U�&�3��U2]E3a�K	b���~���T�PK5%����PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
-����s����;[�E8D&a��h@-
-��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-6n�!���docProps/app.xmlPK-�iX��sdocProps/core.xmlPK-h���y��xl/sharedStrings.xmlPK-����E�
-�xl/styles.xmlPK-5%����
-xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
-
-
-
-
-
-
-
-
-
-

공지 사항 API

-
-
-

공지 사항 생성 (POST /notices)

-
-
-
-

HTTP request

-
-
-
POST /notices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 126
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "공지 사항 제목",
-  "content" : "공지 사항 내용",
-  "fixed" : true,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 991
-
-{
-  "id" : 1,
-  "title" : "공지 사항 제목",
-  "content" : "공지 사항 내용",
-  "hitCount" : 0,
-  "fixed" : true,
-  "createdAt" : "2024-11-12T15:04:13.487226",
-  "updatedAt" : "2024-11-12T15:04:13.487226",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.487226",
-    "updatedAt" : "2024-11-12T15:04:13.487226"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.487226",
-    "updatedAt" : "2024-11-12T15:04:13.487226"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.487226",
-    "updatedAt" : "2024-11-12T15:04:13.487226"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 리스트 조회 (GET /notices)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP request

-
-
-
GET /notices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 899
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "공지 사항 1",
-    "hitCount" : 10,
-    "fixed" : true,
-    "createdAt" : "2024-11-12T15:04:13.1973292",
-    "updatedAt" : "2024-11-12T15:04:13.1973292"
-  }, {
-    "id" : 2,
-    "title" : "공지 사항 2",
-    "hitCount" : 10,
-    "fixed" : false,
-    "createdAt" : "2024-11-12T15:04:13.1973292",
-    "updatedAt" : "2024-11-12T15:04:13.1973292"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

공지 사항 ID

content[].title

String

true

공지 사항 제목

content[].hitCount

Number

true

공지 사항 조회수

content[].fixed

Boolean

true

공지 사항 고정 여부

content[].createdAt

String

true

공지 사항 생성일

content[].updatedAt

String

true

공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

공지 사항 조회 (GET /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

조회할 공지 사항 ID

-
-
-

HTTP request

-
-
-
GET /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 987
-
-{
-  "id" : 1,
-  "title" : "공지 사항 제목",
-  "content" : "content",
-  "hitCount" : 10,
-  "fixed" : true,
-  "createdAt" : "2024-11-12T15:04:13.4262238",
-  "updatedAt" : "2024-11-12T15:04:13.4262238",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.4262238",
-    "updatedAt" : "2024-11-12T15:04:13.4262238"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.4262238",
-    "updatedAt" : "2024-11-12T15:04:13.4262238"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.4262238",
-    "updatedAt" : "2024-11-12T15:04:13.4262238"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 수정 (PUT /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

수정할 공지 사항 ID

-
-
-

HTTP request

-
-
-
PUT /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 147
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 공지 사항 제목",
-  "content" : "수정된 공지 사항 내용",
-  "fixed" : false,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 989
-
-{
-  "id" : 1,
-  "title" : "수정된 공지 사항 제목",
-  "content" : "수정된 공지 사항 내용",
-  "hitCount" : 10,
-  "fixed" : false,
-  "createdAt" : "2024-01-01T12:00:00",
-  "updatedAt" : "2024-11-12T15:04:13.2794322",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:13.2794322"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:13.2794322"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:13.2794322"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 삭제 (DELETE /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

삭제할 공지 사항 ID

-
-
-

HTTP request

-
-
-
DELETE /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

이벤트 공지 사항 API

-
-
-

이벤트 공지 사항 생성 (POST /eventNotices)

-
-
-
-

HTTP request

-
-
-
POST /eventNotices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 146
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "이벤트 공지 사항 내용",
-  "fixed" : true,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1019
-
-{
-  "id" : 1,
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "이벤트 공지 사항 내용",
-  "hitCount" : 0,
-  "fixed" : true,
-  "createdAt" : "2024-11-12T15:04:03.7121108",
-  "updatedAt" : "2024-11-12T15:04:03.7121108",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.7121108",
-    "updatedAt" : "2024-11-12T15:04:03.7121108"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.7121108",
-    "updatedAt" : "2024-11-12T15:04:03.7121108"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.7121108",
-    "updatedAt" : "2024-11-12T15:04:03.7121108"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 리스트 조회 (GET /eventNotices)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 이벤트 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP request

-
-
-
GET /eventNotices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 919
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "이벤트 공지 사항 1",
-    "hitCount" : 10,
-    "fixed" : true,
-    "createdAt" : "2024-11-12T15:04:03.7949335",
-    "updatedAt" : "2024-11-12T15:04:03.7949335"
-  }, {
-    "id" : 2,
-    "title" : "이벤트 공지 사항 2",
-    "hitCount" : 10,
-    "fixed" : false,
-    "createdAt" : "2024-11-12T15:04:03.7949335",
-    "updatedAt" : "2024-11-12T15:04:03.7949335"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

이벤트 공지 사항 ID

content[].title

String

true

이벤트 공지 사항 제목

content[].hitCount

Number

true

이벤트 공지 사항 조회수

content[].fixed

Boolean

true

이벤트 공지 사항 고정 여부

content[].createdAt

String

true

이벤트 공지 사항 생성일

content[].updatedAt

String

true

이벤트 공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

이벤트 공지 사항 조회 (GET /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

조회할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
GET /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 997
-
-{
-  "id" : 1,
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "content",
-  "hitCount" : 10,
-  "fixed" : true,
-  "createdAt" : "2024-11-12T15:04:03.5238303",
-  "updatedAt" : "2024-11-12T15:04:03.5238303",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.5238303",
-    "updatedAt" : "2024-11-12T15:04:03.5238303"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.5238303",
-    "updatedAt" : "2024-11-12T15:04:03.5238303"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:03.5238303",
-    "updatedAt" : "2024-11-12T15:04:03.5238303"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 수정 (PUT /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

수정할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
PUT /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 167
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 이벤트 공지 사항 제목",
-  "content" : "수정된 이벤트 공지 사항 내용",
-  "fixed" : false,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1009
-
-{
-  "id" : 1,
-  "title" : "수정된 이벤트 공지 사항 제목",
-  "content" : "수정된 이벤트 공지 사항 내용",
-  "hitCount" : 10,
-  "fixed" : false,
-  "createdAt" : "2024-01-01T12:00:00",
-  "updatedAt" : "2024-11-12T15:04:03.3264144",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:03.3264144"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:03.3264144"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:03.3264144"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 삭제 (DELETE /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

삭제할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
DELETE /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

이벤트 기간 API

-
-
-
-

이벤트 기간 생성 (POST /eventPeriods)

-
-
-
-

HTTP request

-
-
-
POST /eventPeriods HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 89
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "start" : "2024-11-12T15:04:04.8161421",
-  "end" : "2024-11-22T15:04:04.8161421"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 216
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-12T15:04:04.8161421",
-  "end" : "2024-11-22T15:04:04.8161421",
-  "createdAt" : "2024-11-12T15:04:04.8161421",
-  "updatedAt" : "2024-11-12T15:04:04.8161421"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-

올해의 이벤트 기간 조회 (GET /eventPeriod)

-
-
-
-

HTTP request

-
-
-
GET /eventPeriod HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 208
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-12T15:04:04.77104",
-  "end" : "2024-11-22T15:04:04.77104",
-  "createdAt" : "2024-11-12T15:04:04.77104",
-  "updatedAt" : "2024-11-12T15:04:04.77104"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-

전체 이벤트 기간 리스트 조회 (GET /eventPeriods)

-
-
-
-

HTTP request

-
-
-
GET /eventPeriods HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 432
-
-[ {
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-12T15:04:04.896861",
-  "end" : "2024-11-22T15:04:04.896861",
-  "createdAt" : "2024-11-12T15:04:04.896861",
-  "updatedAt" : "2024-11-12T15:04:04.896861"
-}, {
-  "id" : 2,
-  "year" : 2025,
-  "start" : "2024-11-12T15:04:04.896861",
-  "end" : "2024-11-22T15:04:04.896861",
-  "createdAt" : "2024-11-12T15:04:04.8978643",
-  "updatedAt" : "2024-11-12T15:04:04.8978643"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

이벤트 기간 ID

[].year

Number

true

이벤트 연도

[].start

String

true

이벤트 시작 일시

[].end

String

true

이벤트 종료 일시

[].createdAt

String

true

생성일

[].updatedAt

String

true

변경일

-
-
-
-
-
-

올해의 이벤트 기간 업데이트 (PUT /eventPeriod)

-
-
-
-

HTTP request

-
-
-
PUT /eventPeriod HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 87
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "start" : "2024-11-12T15:04:04.688568",
-  "end" : "2024-11-22T15:04:04.688568"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 212
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-12T15:04:04.688568",
-  "end" : "2024-11-22T15:04:04.688568",
-  "createdAt" : "2024-11-12T15:04:04.688568",
-  "updatedAt" : "2024-11-12T15:04:04.688568"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-
-
-

갤러리 API

-
-
-
-

갤러리 게시글 생성 (POST /galleries)

-
-
-
-

HTTP request

-
-
-
POST /galleries HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 101
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 929
-
-{
-  "id" : 1,
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "hitCount" : 1,
-  "createdAt" : "2024-11-12T15:04:09.3618421",
-  "updatedAt" : "2024-11-12T15:04:09.3618421",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.3618421",
-    "updatedAt" : "2024-11-12T15:04:09.3618421"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.3618421",
-    "updatedAt" : "2024-11-12T15:04:09.3618421"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.3618421",
-    "updatedAt" : "2024-11-12T15:04:09.3618421"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

갤러리 게시글 목록 조회 (GET /galleries)

-
-
-
-

HTTP request

-
-
-
GET /galleries?year=2024&month=4 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

연도

month

false

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1289
-
-{
-  "totalElements" : 1,
-  "totalPages" : 1,
-  "size" : 1,
-  "content" : [ {
-    "id" : 1,
-    "title" : "새내기 배움터",
-    "year" : 2024,
-    "month" : 4,
-    "hitCount" : 0,
-    "createdAt" : "2024-11-12T15:04:09.1602347",
-    "updatedAt" : "2024-11-12T15:04:09.1602347",
-    "files" : [ {
-      "id" : 1,
-      "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-      "name" : "사진1.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-11-12T15:04:09.1602347",
-      "updatedAt" : "2024-11-12T15:04:09.1602347"
-    }, {
-      "id" : 2,
-      "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-      "name" : "사진2.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-11-12T15:04:09.1602347",
-      "updatedAt" : "2024-11-12T15:04:09.1602347"
-    }, {
-      "id" : 3,
-      "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-      "name" : "사진3.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-11-12T15:04:09.1602347",
-      "updatedAt" : "2024-11-12T15:04:09.1602347"
-    } ]
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 1,
-  "pageable" : "INSTANCE",
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

totalElements

Number

true

전체 데이터 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지당 데이터 수

content

Array

true

갤러리 목록

content[].id

Number

true

갤러리 ID

content[].title

String

true

갤러리 제목

content[].year

Number

true

갤러리 연도

content[].month

Number

true

갤러리 월

content[].hitCount

Number

true

갤러리 조회수

content[].createdAt

String

true

갤러리 생성일

content[].updatedAt

String

true

갤러리 수정일

content[].files

Array

true

파일 목록

content[].files[].id

Number

true

파일 ID

content[].files[].uuid

String

true

파일 UUID

content[].files[].name

String

true

파일 이름

content[].files[].mimeType

String

true

파일 MIME 타입

content[].files[].createdAt

String

true

파일 생성일

content[].files[].updatedAt

String

true

파일 수정일

number

Number

true

현재 페이지 번호

sort.empty

Boolean

true

정렬 정보

sort.sorted

Boolean

true

정렬 정보

sort.unsorted

Boolean

true

정렬 정보

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

numberOfElements

Number

true

현재 페이지의 데이터 수

empty

Boolean

true

빈 페이지 여부

-
-
-
-
-
-

갤러리 게시글 조회 (GET /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
GET /galleries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

조회할 갤러리 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 929
-
-{
-  "id" : 1,
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "hitCount" : 1,
-  "createdAt" : "2024-11-12T15:04:09.2727084",
-  "updatedAt" : "2024-11-12T15:04:09.2727084",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.2727084",
-    "updatedAt" : "2024-11-12T15:04:09.2727084"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.2727084",
-    "updatedAt" : "2024-11-12T15:04:09.2727084"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:09.2727084",
-    "updatedAt" : "2024-11-12T15:04:09.2727084"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

갤러리 게시글 삭제 (DELETE /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
DELETE /galleries/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

삭제할 갤러리 ID

-
-
-
-
-
-

갤러리 게시글 수정 (PUT /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
PUT /galleries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 98
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 제목",
-  "year" : 2024,
-  "month" : 5,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

수정할 갤러리 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 926
-
-{
-  "id" : 1,
-  "title" : "수정된 제목",
-  "year" : 2024,
-  "month" : 5,
-  "hitCount" : 1,
-  "createdAt" : "2024-11-12T15:04:08.9705233",
-  "updatedAt" : "2024-11-12T15:04:08.9705233",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:08.9695134",
-    "updatedAt" : "2024-11-12T15:04:08.9695134"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:08.9695134",
-    "updatedAt" : "2024-11-12T15:04:08.9695134"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:08.9695134",
-    "updatedAt" : "2024-11-12T15:04:08.9695134"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-
-
-

가입 신청 관리 API

-
-
-
-

가입 신청 리스트 조회 (GET /applications)

-
-
-
-

HTTP request

-
-
-
GET /applications HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 1235
-
-{
-  "totalElements" : 3,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "name" : "김영한",
-    "division" : "배민",
-    "position" : null,
-    "userType" : "INACTIVE_COMPANY",
-    "createdAt" : "2024-11-12T15:04:16.8961349",
-    "updatedAt" : "2024-11-12T15:04:16.8961349"
-  }, {
-    "id" : 2,
-    "name" : "김교수",
-    "division" : "솦융대",
-    "position" : "교수",
-    "userType" : "INACTIVE_PROFESSOR",
-    "createdAt" : "2024-11-12T15:04:16.8961349",
-    "updatedAt" : "2024-11-12T15:04:16.8961349"
-  }, {
-    "id" : 3,
-    "name" : "박교수",
-    "division" : "정통대",
-    "position" : "교수",
-    "userType" : "INACTIVE_PROFESSOR",
-    "createdAt" : "2024-11-12T15:04:16.8961349",
-    "updatedAt" : "2024-11-12T15:04:16.8961349"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 3,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

가입 신청 ID

content[].name

String

true

가입 신청자 이름

content[].division

String

false

소속

content[].position

String

false

직책

content[].userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

content[].createdAt

String

true

가입 신청 정보 생성일

content[].updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

가입 신청자 상세 정보 조회 (GET /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
GET /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 284
-
-{
-  "id" : 1,
-  "name" : "김영한",
-  "phone" : "010-1111-2222",
-  "email" : "email@gmail.com",
-  "division" : "배민",
-  "position" : "CEO",
-  "userType" : "INACTIVE_COMPANY",
-  "createdAt" : "2024-11-12T15:04:17.0431853",
-  "updatedAt" : "2024-11-12T15:04:17.0431853"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

교수/기업 가입 허가 (PATCH /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
PATCH /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 275
-
-{
-  "id" : 1,
-  "name" : "김영한",
-  "phone" : "010-1111-2222",
-  "email" : "email@gmail.com",
-  "division" : "배민",
-  "position" : "CEO",
-  "userType" : "COMPANY",
-  "createdAt" : "2024-11-12T15:04:16.9965445",
-  "updatedAt" : "2024-11-12T15:04:16.9965445"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [PROFESSOR, COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

교수/기업 가입 거절 (DELETE /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
DELETE /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

프로젝트 문의 사항 API

-
-
-
-

프로젝트 문의 사항 생성 (POST /projects/{projectId}/inquiry)

-
-
-
-

HTTP request

-
-
-
POST /projects/1/inquiry HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Content-Length: 105
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "프로젝트 문의 사항 제목",
-  "content" : "프로젝트 문의 사항 내용"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 295
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "문의 사항 제목",
-  "content" : "문의 사항 내용",
-  "createdAt" : "2024-11-12T15:04:10.7105352",
-  "updatedAt" : "2024-11-12T15:04:10.7105352"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 리스트 조회 (GET /inquiries)

-
-
-
-

HTTP request

-
-
-
GET /inquiries HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 862
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "authorName" : "프로젝트 문의 사항 제목",
-    "title" : "프로젝트 문의 사항 내용",
-    "createdAt" : "2024-11-12T15:04:10.5253675"
-  }, {
-    "id" : 2,
-    "authorName" : "프로젝트 문의 사항 제목",
-    "title" : "프로젝트 문의 사항 내용",
-    "createdAt" : "2024-11-12T15:04:10.5253675"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

문의 사항 ID

content[].authorName

String

true

문의 작성자 이름

content[].title

String

true

문의 사항 제목

content[].createdAt

String

true

문의 사항 생성 시간

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-

프로젝트 문의 사항 단건 조회 (GET /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
GET /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

조회할 문의 사항 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 295
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "문의 사항 제목",
-  "content" : "문의 사항 내용",
-  "createdAt" : "2024-11-12T15:04:10.6368772",
-  "updatedAt" : "2024-11-12T15:04:10.6368772"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 수정 (PUT /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
PUT /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Content-Length: 125
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 프로젝트 문의 사항 제목",
-  "content" : "수정된 프로젝트 문의 사항 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

수정할 문의 사항 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 315
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "수정된 문의 사항 제목",
-  "content" : "수정된 문의 사항 내용",
-  "createdAt" : "2024-11-12T15:04:10.8368332",
-  "updatedAt" : "2024-11-12T15:04:10.8368332"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

수정된 문의 사항 제목

content

String

true

수정된 문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 삭제 (DELETE /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
DELETE /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

삭제할 문의 사항 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-

프로젝트 문의 사항 답변 (POST /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
POST /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 79
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

답변할 문의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 92
-
-{
-  "id" : 1,
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 조회 (GET /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
GET /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

조회할 문의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 92
-
-{
-  "id" : 1,
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 수정 (PUT /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
PUT /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 99
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 문의 답변 제목",
-  "content" : "수정된 문의 답변 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

수정할 답변 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 112
-
-{
-  "id" : 1,
-  "title" : "수정된 문의 답변 제목",
-  "content" : "수정된 문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

수정된 답변 제목

content

String

true

수정된 답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 삭제 (DELETE /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
DELETE /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

삭제할 답변 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

프로젝트 API

-
-
-
-

프로젝트 조회 (GET /projects)

-
-

200 OK

-
-
-
-
HTTP request
-
-
-
GET /projects HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1828
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "thumbnailInfo" : {
-      "id" : 1,
-      "uuid" : "썸네일 uuid 1",
-      "name" : "썸네일 파일 이름 1",
-      "mimeType" : "썸네일 mime 타입 1"
-    },
-    "projectName" : "프로젝트 이름 1",
-    "teamName" : "팀 이름 1",
-    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-    "professorNames" : [ "교수 이름 1" ],
-    "projectType" : "STARTUP",
-    "projectCategory" : "BIG_DATA_ANALYSIS",
-    "awardStatus" : "FIRST",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : false,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  }, {
-    "id" : 2,
-    "thumbnailInfo" : {
-      "id" : 2,
-      "uuid" : "썸네일 uuid 2",
-      "name" : "썸네일 파일 이름 2",
-      "mimeType" : "썸네일 mime 타입 2"
-    },
-    "projectName" : "프로젝트 이름 2",
-    "teamName" : "팀 이름 2",
-    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-    "professorNames" : [ "교수 이름 2" ],
-    "projectType" : "LAB",
-    "projectCategory" : "AI_MACHINE_LEARNING",
-    "awardStatus" : "SECOND",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : true,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-
Query parameters
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

프로젝트 이름

year

false

프로젝트 년도

category

false

프로젝트 카테고리

type

false

프로젝트 타입

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-

프로젝트 생성 (POST /projects)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 557
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "thumbnailId" : 1,
-  "posterId" : 2,
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2021,
-  "awardStatus" : "NONE",
-  "members" : [ {
-    "name" : "학생 이름 1",
-    "role" : "STUDENT"
-  }, {
-    "name" : "학생 이름 2",
-    "role" : "STUDENT"
-  }, {
-    "name" : "교수 이름 1",
-    "role" : "PROFESSOR"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1534
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 2,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 2,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-  "professorNames" : [ "교수 이름 1" ],
-  "likeCount" : 0,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.753282",
-    "updatedAt" : "2024-11-12T15:04:15.753282"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.753282",
-    "updatedAt" : "2024-11-12T15:04:15.753282"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.753282",
-    "updatedAt" : "2024-11-12T15:04:15.753282"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
Request fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 조회 (GET /projects/{projectId})

-
-

200 OK

-
-
-
-
HTTP request
-
-
-
GET /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1540
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 2,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 2,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-  "professorNames" : [ "교수 이름 1" ],
-  "likeCount" : 0,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.2894177",
-    "updatedAt" : "2024-11-12T15:04:15.2894177"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.2904206",
-    "updatedAt" : "2024-11-12T15:04:15.2904206"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.2904206",
-    "updatedAt" : "2024-11-12T15:04:15.2904206"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 수정 (PUT /projects/{projectId})

-
-

200 OK

-
-
-
-
HTTP request
-
-
-
PUT /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 552
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "thumbnailId" : 3,
-  "posterId" : 4,
-  "projectName" : "프로젝트 이름",
-  "projectType" : "LAB",
-  "projectCategory" : "COMPUTER_VISION",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "members" : [ {
-    "name" : "학생 이름 3",
-    "role" : "STUDENT"
-  }, {
-    "name" : "학생 이름 4",
-    "role" : "STUDENT"
-  }, {
-    "name" : "교수 이름 2",
-    "role" : "PROFESSOR"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1536
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 3,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 4,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "LAB",
-  "projectCategory" : "COMPUTER_VISION",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-  "professorNames" : [ "교수 이름 2" ],
-  "likeCount" : 100,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:14.4181762",
-    "updatedAt" : "2024-11-12T15:04:14.4191755"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:14.4191755",
-    "updatedAt" : "2024-11-12T15:04:14.4191755"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:14.4191755",
-    "updatedAt" : "2024-11-12T15:04:14.4191755"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
Request fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 삭제 (DELETE /projects/{projectId})

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

관심 프로젝트 등록 (POST /projects/{projectId}/favorite)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

관심 프로젝트 삭제 (DELETE /projects/{projectId}/favorite)

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

프로젝트 좋아요 등록 (POST /projects/{projectId}/like)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects/1/like HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

프로젝트 좋아요 삭제 (DELETE /projects/{projectId}/like)

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1/like HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

프로젝트 댓글 등록 (POST /projects/{projectId}/comment)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects/1/comment HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Content-Length: 60
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "content" : "댓글 내용",
-  "isAnonymous" : true
-}
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 222
-
-{
-  "id" : 1,
-  "projectId" : 1,
-  "userName" : "유저 이름",
-  "isAnonymous" : true,
-  "content" : "댓글 내용",
-  "createdAt" : "2024-11-12T15:04:15.0928796",
-  "updatedAt" : "2024-11-12T15:04:15.0928796"
-}
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/comment
ParameterDescription

projectId

프로젝트 ID

-
-
-
Request fields
- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content

String

true

댓글 내용

isAnonymous

Boolean

true

익명 여부

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

댓글 ID

projectId

Number

true

프로젝트 ID

userName

String

true

유저 이름

isAnonymous

Boolean

true

익명 여부

content

String

true

댓글 내용

createdAt

String

true

생성 시간

updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 댓글 삭제 (DELETE /projects/{projectId}/comment)

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1/comment/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - - - - - -
Table 1. /projects/{projectId}/comment/{commentId}
ParameterDescription

projectId

프로젝트 ID

commentId

댓글 ID

-
-
-
-
-
-
-

수상 프로젝트 조회 (GET /projects/award?year={year})

-
-

200 No Content

-
-
-
-
HTTP request
-
-
-
GET /projects/award?year=2024 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1828
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "thumbnailInfo" : {
-      "id" : 1,
-      "uuid" : "썸네일 uuid 1",
-      "name" : "썸네일 파일 이름 1",
-      "mimeType" : "썸네일 mime 타입 1"
-    },
-    "projectName" : "프로젝트 이름 1",
-    "teamName" : "팀 이름 1",
-    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-    "professorNames" : [ "교수 이름 1" ],
-    "projectType" : "STARTUP",
-    "projectCategory" : "BIG_DATA_ANALYSIS",
-    "awardStatus" : "FIRST",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : false,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  }, {
-    "id" : 2,
-    "thumbnailInfo" : {
-      "id" : 2,
-      "uuid" : "썸네일 uuid 2",
-      "name" : "썸네일 파일 이름 2",
-      "mimeType" : "썸네일 mime 타입 2"
-    },
-    "projectName" : "프로젝트 이름 2",
-    "teamName" : "팀 이름 2",
-    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-    "professorNames" : [ "교수 이름 2" ],
-    "projectType" : "LAB",
-    "projectCategory" : "AI_MACHINE_LEARNING",
-    "awardStatus" : "SECOND",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : true,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-
Query parameters
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

true

프로젝트 년도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
-
-

AI HUB API

-
-
-
-

AI HUB 모델 리스트 조회 (POST /aihub/models)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

AI 모델 제목

learningModels

Array

true

학습 모델

topics

Array

true

주제 분류

developmentYears

Array

true

개발 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

-
-
-

HTTP request

-
-
-
POST /aihub/models HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 206
-Host: localhost:8080
-
-{
-  "title" : "title",
-  "learningModels" : [ "학습 모델 1" ],
-  "topics" : [ "주제 1" ],
-  "developmentYears" : [ 2024 ],
-  "professor" : "담당 교수 1",
-  "participants" : [ "학생 1" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1270
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "title" : "title",
-    "learningModels" : [ "학습 모델 1" ],
-    "topics" : [ "주제 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  }, {
-    "title" : "title",
-    "learningModels" : [ "학습 모델 1" ],
-    "topics" : [ "주제 1", "주제 2" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2", "학생 3" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 모델 제목

content[].learningModels

Array

true

학습 모델

content[].topics

Array

true

주제 분류

content[].developmentYears

Array

true

개발 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

AI HUB 데이터셋 리스트 조회 (POST /aihub/datasets)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

AI 데이터셋 제목

dataTypes

Array

true

데이터 유형

topics

Array

true

주제 분류

developmentYears

Array

true

구축 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

-
-
-

HTTP request

-
-
-
POST /aihub/datasets HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 204
-Host: localhost:8080
-
-{
-  "title" : "title",
-  "dataTypes" : [ "주제 1" ],
-  "topics" : [ "데이터 유형 1" ],
-  "developmentYears" : [ 2024 ],
-  "professor" : "담당 교수 1",
-  "participants" : [ "학생 1" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1266
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "title" : "title",
-    "dataTypes" : [ "주제 1" ],
-    "topics" : [ "데이터 유형 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  }, {
-    "title" : "title",
-    "dataTypes" : [ "주제 1", "주제 2" ],
-    "topics" : [ "데이터 유형 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2", "학생 3" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 데이터셋 제목

content[].topics

Array

true

주제 분류

content[].dataTypes

Array

true

데이터 유형

content[].developmentYears

Array

true

구축 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
-

JOB INFO API

-
-
-
-

JOB INFO 리스트 조회 (POST /jobInfos)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

company

String

true

기업명

jobTypes

Array

true

고용 형태

region

String

true

근무 지역

position

String

true

채용 포지션

hiringTime

String

true

채용 시점

state

Array

true

채용 상태

-
-
-

HTTP request

-
-
-
POST /jobInfos HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 205
-Host: localhost:8080
-
-{
-  "company" : "기업명 1",
-  "jobTypes" : [ "고용 형태 1" ],
-  "region" : "근무 지역 1",
-  "position" : "채용 포지션 1",
-  "hiringTime" : "채용 시점 1",
-  "state" : [ "open" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1348
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "company" : "기업명 1",
-    "jobTypes" : [ "고용 형태 1" ],
-    "region" : "근무 지역 1",
-    "position" : "채용 포지션 1",
-    "logo" : "로고 url",
-    "salary" : "연봉",
-    "website" : "웹사이트 url",
-    "state" : [ "open" ],
-    "hiringTime" : "채용 시점 1",
-    "object" : "page",
-    "id" : "노션 object 아이디 1",
-    "url" : "redirect url"
-  }, {
-    "company" : "기업명 1",
-    "jobTypes" : [ "고용 형태 1", "고용 형태 2" ],
-    "region" : "근무 지역 2",
-    "position" : "채용 포지션 1, 채용 시점 2",
-    "logo" : "로고 url",
-    "salary" : "연봉",
-    "website" : "웹사이트 url",
-    "state" : [ "open" ],
-    "hiringTime" : "채용 시점 1",
-    "object" : "page",
-    "id" : "노션 object 아이디 2",
-    "url" : "redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].company

String

true

기업명

content[].jobTypes

Array

true

고용 형태

content[].region

String

true

근무 지역

content[].position

String

true

채용 포지션

content[].logo

String

true

로고 url

content[].salary

String

true

연봉

content[].website

String

true

웹사이트 url

content[].state

Array

true

채용 상태

content[].hiringTime

String

true

채용 시점

content[].url

String

true

redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
-

유저 API

-
-
-
-

로그인 유저 기본 정보 조회 (GET /users/me)

-
-
-
-

HTTP request

-
-
-
GET /users/me HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 331
-
-{
-  "id" : 1,
-  "name" : "이름",
-  "phone" : "010-1234-5678",
-  "email" : "student@g.skku.edu",
-  "userType" : "STUDENT",
-  "division" : null,
-  "position" : null,
-  "studentNumber" : "2000123456",
-  "departmentName" : "학과",
-  "createdAt" : "2024-11-12T15:04:18.6308",
-  "updatedAt" : "2024-11-12T15:04:18.6308"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

-
-
-
-
-
-

로그인 유저 기본 정보 수정 (PUT /users/me)

-
-
-
-

HTTP request

-
-
-
PUT /users/me HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: user_access_token
-Content-Length: 203
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "name" : "이름",
-  "phoneNumber" : "010-1234-5678",
-  "email" : "student@g.skku.edu",
-  "division" : null,
-  "position" : null,
-  "studentNumber" : "2000123456",
-  "department" : "학과"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

이름

phoneNumber

String

true

전화번호

email

String

true

이메일

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

department

String

false

학과

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 335
-
-{
-  "id" : 1,
-  "name" : "이름",
-  "phone" : "010-1234-5678",
-  "email" : "student@g.skku.edu",
-  "userType" : "STUDENT",
-  "division" : null,
-  "position" : null,
-  "studentNumber" : "2000123456",
-  "departmentName" : "학과",
-  "createdAt" : "2024-11-12T15:04:18.837977",
-  "updatedAt" : "2024-11-12T15:04:18.837977"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

-
-
-
-
-
-

유저 탈퇴 (DELETE /users/me)

-
-
-
-

HTTP request

-
-
-
DELETE /users/me HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

유저 관심 리스트 조회 (GET /users/favorites)

-
-
-
-

HTTP request

-
-
-
GET /users/favorites?type=TALK HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

type

true

관심 항목의 타입 (PROJECT, TALK, JOBINTERVIEW)

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 150
-
-[ {
-  "id" : 1,
-  "title" : "Project 1",
-  "youtubeId" : "youtube 1"
-}, {
-  "id" : 2,
-  "title" : "Project 2",
-  "youtubeId" : "youtube 2"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

ID

[].title

String

true

제목

[].youtubeId

String

true

유튜브 ID

-
-
-
-
-
-

유저 문의 리스트 조회 (GET /users/inquiries)

-
-
-
-

HTTP request

-
-
-
GET /users/inquiries HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 271
-
-[ {
-  "id" : 1,
-  "title" : "Title 1",
-  "projectId" : 1,
-  "createdDate" : "2024-11-12T15:04:18.5841819",
-  "hasReply" : true
-}, {
-  "id" : 2,
-  "title" : "Title 2",
-  "projectId" : 2,
-  "createdDate" : "2024-11-12T15:04:18.5841819",
-  "hasReply" : false
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

문의 ID

[].title

String

true

문의 제목

[].projectId

Number

true

프로젝트 ID

[].createdDate

String

true

문의 생성일

[].hasReply

Boolean

true

답변 여부

-
-
-
-
-
-

유저 과제 제안 리스트 조회 (GET /users/proposals)

-
-
-
-

HTTP request

-
-
-
GET /users/proposals HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 231
-
-[ {
-  "id" : 1,
-  "title" : "Title 1",
-  "createdDate" : "2024-11-12T15:04:18.7046253",
-  "hasReply" : true
-}, {
-  "id" : 2,
-  "title" : "Title 2",
-  "createdDate" : "2024-11-12T15:04:18.7046253",
-  "hasReply" : false
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

과제 제안 ID

[].title

String

true

프로젝트명

[].createdDate

String

true

과제 제안 생성일

[].hasReply

Boolean

true

답변 여부

-
-
-
-
-
-
-
-

학과 API

-
-
-
-

학과 리스트 조회 (GET /departments)

-
-
-
-

HTTP request

-
-
-
GET /departments HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 98
-
-[ {
-  "id" : 1,
-  "name" : "소프트웨어학과"
-}, {
-  "id" : 2,
-  "name" : "학과2"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

학과 ID

[].name

String

true

학과 이름

-
-
-
-
-
-
-
- - - - - \ No newline at end of file diff --git a/src/main/resources/static/docs/inquiry.html b/src/main/resources/static/docs/inquiry.html deleted file mode 100644 index 2915c043..00000000 --- a/src/main/resources/static/docs/inquiry.html +++ /dev/null @@ -1,1666 +0,0 @@ - - - - - - - -프로젝트 문의 사항 API - - - - - -
-
-

프로젝트 문의 사항 API

-
-
-
-

프로젝트 문의 사항 생성 (POST /projects/{projectId}/inquiry)

-
-
-
-

HTTP request

-
-
-
POST /projects/1/inquiry HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Content-Length: 105
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "프로젝트 문의 사항 제목",
-  "content" : "프로젝트 문의 사항 내용"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 295
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "문의 사항 제목",
-  "content" : "문의 사항 내용",
-  "createdAt" : "2024-11-12T15:04:10.7105352",
-  "updatedAt" : "2024-11-12T15:04:10.7105352"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 리스트 조회 (GET /inquiries)

-
-
-
-

HTTP request

-
-
-
GET /inquiries HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 862
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "authorName" : "프로젝트 문의 사항 제목",
-    "title" : "프로젝트 문의 사항 내용",
-    "createdAt" : "2024-11-12T15:04:10.5253675"
-  }, {
-    "id" : 2,
-    "authorName" : "프로젝트 문의 사항 제목",
-    "title" : "프로젝트 문의 사항 내용",
-    "createdAt" : "2024-11-12T15:04:10.5253675"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

문의 사항 ID

content[].authorName

String

true

문의 작성자 이름

content[].title

String

true

문의 사항 제목

content[].createdAt

String

true

문의 사항 생성 시간

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-

프로젝트 문의 사항 단건 조회 (GET /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
GET /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

조회할 문의 사항 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 295
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "문의 사항 제목",
-  "content" : "문의 사항 내용",
-  "createdAt" : "2024-11-12T15:04:10.6368772",
-  "updatedAt" : "2024-11-12T15:04:10.6368772"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 수정 (PUT /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
PUT /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Content-Length: 125
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 프로젝트 문의 사항 제목",
-  "content" : "수정된 프로젝트 문의 사항 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

수정할 문의 사항 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 315
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "수정된 문의 사항 제목",
-  "content" : "수정된 문의 사항 내용",
-  "createdAt" : "2024-11-12T15:04:10.8368332",
-  "updatedAt" : "2024-11-12T15:04:10.8368332"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

수정된 문의 사항 제목

content

String

true

수정된 문의 사항 내용

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 삭제 (DELETE /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
DELETE /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

삭제할 문의 사항 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-

프로젝트 문의 사항 답변 (POST /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
POST /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 79
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

답변할 문의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 92
-
-{
-  "id" : 1,
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 조회 (GET /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
GET /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

조회할 문의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 92
-
-{
-  "id" : 1,
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 수정 (PUT /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
PUT /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 99
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 문의 답변 제목",
-  "content" : "수정된 문의 답변 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

수정할 답변 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 112
-
-{
-  "id" : 1,
-  "title" : "수정된 문의 답변 제목",
-  "content" : "수정된 문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

수정된 답변 제목

content

String

true

수정된 답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 삭제 (DELETE /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
DELETE /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

삭제할 답변 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/jobInfo-controller-test.html b/src/main/resources/static/docs/jobInfo-controller-test.html deleted file mode 100644 index 4352564f..00000000 --- a/src/main/resources/static/docs/jobInfo-controller-test.html +++ /dev/null @@ -1,851 +0,0 @@ - - - - - - - -JOB INFO API - - - - - -
-
-

JOB INFO API

-
-
-
-

JOB INFO 리스트 조회 (POST /jobInfos)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

company

String

true

기업명

jobTypes

Array

true

고용 형태

region

String

true

근무 지역

position

String

true

채용 포지션

hiringTime

String

true

채용 시점

state

Array

true

채용 상태

-
-
-

HTTP request

-
-
-
POST /jobInfos HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 205
-Host: localhost:8080
-
-{
-  "company" : "기업명 1",
-  "jobTypes" : [ "고용 형태 1" ],
-  "region" : "근무 지역 1",
-  "position" : "채용 포지션 1",
-  "hiringTime" : "채용 시점 1",
-  "state" : [ "open" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1348
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "company" : "기업명 1",
-    "jobTypes" : [ "고용 형태 1" ],
-    "region" : "근무 지역 1",
-    "position" : "채용 포지션 1",
-    "logo" : "로고 url",
-    "salary" : "연봉",
-    "website" : "웹사이트 url",
-    "state" : [ "open" ],
-    "hiringTime" : "채용 시점 1",
-    "object" : "page",
-    "id" : "노션 object 아이디 1",
-    "url" : "redirect url"
-  }, {
-    "company" : "기업명 1",
-    "jobTypes" : [ "고용 형태 1", "고용 형태 2" ],
-    "region" : "근무 지역 2",
-    "position" : "채용 포지션 1, 채용 시점 2",
-    "logo" : "로고 url",
-    "salary" : "연봉",
-    "website" : "웹사이트 url",
-    "state" : [ "open" ],
-    "hiringTime" : "채용 시점 1",
-    "object" : "page",
-    "id" : "노션 object 아이디 2",
-    "url" : "redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].company

String

true

기업명

content[].jobTypes

Array

true

고용 형태

content[].region

String

true

근무 지역

content[].position

String

true

채용 포지션

content[].logo

String

true

로고 url

content[].salary

String

true

연봉

content[].website

String

true

웹사이트 url

content[].state

Array

true

채용 상태

content[].hiringTime

String

true

채용 시점

content[].url

String

true

redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/jobInterview.html b/src/main/resources/static/docs/jobInterview.html deleted file mode 100644 index cb84cdab..00000000 --- a/src/main/resources/static/docs/jobInterview.html +++ /dev/null @@ -1,1483 +0,0 @@ - - - - - - - -잡페어 인터뷰 API - - - - - -
-
-

잡페어 인터뷰 API

-
-
-
-

잡페어 인터뷰 생성 (POST /jobInterviews)

-
-
-
-

HTTP request

-
-
-
POST /jobInterviews HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 220
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "category" : "INTERN"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 329
-
-{
-  "id" : 1,
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "category" : "INTERN",
-  "createdAt" : "2024-11-12T15:04:20.7648021",
-  "updatedAt" : "2024-11-12T15:04:20.7648021"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 리스트 조회 (GET /jobInterviews)

-
-
-
-

HTTP request

-
-
-
GET /jobInterviews HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 잡페어 인터뷰 연도

category

false

찾고자 하는 잡페어 인터뷰 카테고리: SENIOR, INTERN

title

false

찾고자 하는 잡페어 인터뷰의 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1259
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "잡페어 인터뷰의 제목1",
-    "youtubeId" : "유튜브 고유 ID1",
-    "year" : 2023,
-    "talkerBelonging" : "대담자의 소속1",
-    "talkerName" : "대담자의 성명1",
-    "favorite" : false,
-    "category" : "INTERN",
-    "createdAt" : "2024-11-12T15:04:20.6120226",
-    "updatedAt" : "2024-11-12T15:04:20.6120226"
-  }, {
-    "id" : 2,
-    "title" : "잡페어 인터뷰의 제목2",
-    "youtubeId" : "유튜브 고유 ID2",
-    "year" : 2024,
-    "talkerBelonging" : "대담자의 소속2",
-    "talkerName" : "대담자의 성명2",
-    "favorite" : true,
-    "category" : "INTERN",
-    "createdAt" : "2024-11-12T15:04:20.6120226",
-    "updatedAt" : "2024-11-12T15:04:20.6120226"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

잡페어 인터뷰 ID

content[].title

String

true

잡페어 인터뷰 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

잡페어 인터뷰 연도

content[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

content[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

content[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

content[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

content[].createdAt

String

true

잡페어 인터뷰 생성일

content[].updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 단건 조회 (GET /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
GET /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

조회할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 352
-
-{
-  "id" : 1,
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "favorite" : false,
-  "category" : "INTERN",
-  "createdAt" : "2024-11-12T15:04:20.7001261",
-  "updatedAt" : "2024-11-12T15:04:20.7001261"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 수정 (PUT /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
PUT /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 224
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 제목",
-  "youtubeId" : "수정된 유튜브 ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정된 대담자 소속",
-  "talkerName" : "수정된 대담자 성명",
-  "category" : "INTERN"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

수정할 잡페어 인터뷰의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 325
-
-{
-  "id" : 1,
-  "title" : "수정된 제목",
-  "youtubeId" : "수정된 유튜브 ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정된 대담자 소속",
-  "talkerName" : "수정된 대담자 성명",
-  "category" : "INTERN",
-  "createdAt" : "2021-01-01T12:00:00",
-  "updatedAt" : "2024-11-12T15:04:20.4670126"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 삭제 (DELETE /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
DELETE /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

삭제할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

잡페어 인터뷰 관심 등록 (POST /jobInterviews/{jobInterviews}/favorite)

-
-
-
-

HTTP request

-
-
-
POST /jobInterviews/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에 추가할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

잡페어 인터뷰 관심 삭제 (DELETE /jobInterviews/{jobInterviews}/favorite)

-
-
-
-

HTTP request

-
-
-
DELETE /jobInterviews/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에서 삭제할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/notice.html b/src/main/resources/static/docs/notice.html deleted file mode 100644 index 321d0ae6..00000000 --- a/src/main/resources/static/docs/notice.html +++ /dev/null @@ -1,1447 +0,0 @@ - - - - - - - -공지 사항 API - - - - - -
-
-

공지 사항 API

-
-
-

공지 사항 생성 (POST /notices)

-
-
-
-

HTTP request

-
-
-
POST /notices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 126
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "공지 사항 제목",
-  "content" : "공지 사항 내용",
-  "fixed" : true,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 991
-
-{
-  "id" : 1,
-  "title" : "공지 사항 제목",
-  "content" : "공지 사항 내용",
-  "hitCount" : 0,
-  "fixed" : true,
-  "createdAt" : "2024-11-12T15:04:13.487226",
-  "updatedAt" : "2024-11-12T15:04:13.487226",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.487226",
-    "updatedAt" : "2024-11-12T15:04:13.487226"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.487226",
-    "updatedAt" : "2024-11-12T15:04:13.487226"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.487226",
-    "updatedAt" : "2024-11-12T15:04:13.487226"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 리스트 조회 (GET /notices)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP request

-
-
-
GET /notices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 899
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "공지 사항 1",
-    "hitCount" : 10,
-    "fixed" : true,
-    "createdAt" : "2024-11-12T15:04:13.1973292",
-    "updatedAt" : "2024-11-12T15:04:13.1973292"
-  }, {
-    "id" : 2,
-    "title" : "공지 사항 2",
-    "hitCount" : 10,
-    "fixed" : false,
-    "createdAt" : "2024-11-12T15:04:13.1973292",
-    "updatedAt" : "2024-11-12T15:04:13.1973292"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

공지 사항 ID

content[].title

String

true

공지 사항 제목

content[].hitCount

Number

true

공지 사항 조회수

content[].fixed

Boolean

true

공지 사항 고정 여부

content[].createdAt

String

true

공지 사항 생성일

content[].updatedAt

String

true

공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

공지 사항 조회 (GET /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

조회할 공지 사항 ID

-
-
-

HTTP request

-
-
-
GET /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 987
-
-{
-  "id" : 1,
-  "title" : "공지 사항 제목",
-  "content" : "content",
-  "hitCount" : 10,
-  "fixed" : true,
-  "createdAt" : "2024-11-12T15:04:13.4262238",
-  "updatedAt" : "2024-11-12T15:04:13.4262238",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.4262238",
-    "updatedAt" : "2024-11-12T15:04:13.4262238"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.4262238",
-    "updatedAt" : "2024-11-12T15:04:13.4262238"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-12T15:04:13.4262238",
-    "updatedAt" : "2024-11-12T15:04:13.4262238"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 수정 (PUT /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

수정할 공지 사항 ID

-
-
-

HTTP request

-
-
-
PUT /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 147
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 공지 사항 제목",
-  "content" : "수정된 공지 사항 내용",
-  "fixed" : false,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 989
-
-{
-  "id" : 1,
-  "title" : "수정된 공지 사항 제목",
-  "content" : "수정된 공지 사항 내용",
-  "hitCount" : 10,
-  "fixed" : false,
-  "createdAt" : "2024-01-01T12:00:00",
-  "updatedAt" : "2024-11-12T15:04:13.2794322",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:13.2794322"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:13.2794322"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-12T15:04:13.2794322"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 삭제 (DELETE /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

삭제할 공지 사항 ID

-
-
-

HTTP request

-
-
-
DELETE /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/project.html b/src/main/resources/static/docs/project.html deleted file mode 100644 index 2a371a37..00000000 --- a/src/main/resources/static/docs/project.html +++ /dev/null @@ -1,3006 +0,0 @@ - - - - - - - -프로젝트 API - - - - - -
-
-

프로젝트 API

-
-
-
-

프로젝트 조회 (GET /projects)

-
-

200 OK

-
-
-
-
HTTP request
-
-
-
GET /projects HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1828
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "thumbnailInfo" : {
-      "id" : 1,
-      "uuid" : "썸네일 uuid 1",
-      "name" : "썸네일 파일 이름 1",
-      "mimeType" : "썸네일 mime 타입 1"
-    },
-    "projectName" : "프로젝트 이름 1",
-    "teamName" : "팀 이름 1",
-    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-    "professorNames" : [ "교수 이름 1" ],
-    "projectType" : "STARTUP",
-    "projectCategory" : "BIG_DATA_ANALYSIS",
-    "awardStatus" : "FIRST",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : false,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  }, {
-    "id" : 2,
-    "thumbnailInfo" : {
-      "id" : 2,
-      "uuid" : "썸네일 uuid 2",
-      "name" : "썸네일 파일 이름 2",
-      "mimeType" : "썸네일 mime 타입 2"
-    },
-    "projectName" : "프로젝트 이름 2",
-    "teamName" : "팀 이름 2",
-    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-    "professorNames" : [ "교수 이름 2" ],
-    "projectType" : "LAB",
-    "projectCategory" : "AI_MACHINE_LEARNING",
-    "awardStatus" : "SECOND",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : true,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-
Query parameters
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

프로젝트 이름

year

false

프로젝트 년도

category

false

프로젝트 카테고리

type

false

프로젝트 타입

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-

프로젝트 생성 (POST /projects)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 557
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "thumbnailId" : 1,
-  "posterId" : 2,
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2021,
-  "awardStatus" : "NONE",
-  "members" : [ {
-    "name" : "학생 이름 1",
-    "role" : "STUDENT"
-  }, {
-    "name" : "학생 이름 2",
-    "role" : "STUDENT"
-  }, {
-    "name" : "교수 이름 1",
-    "role" : "PROFESSOR"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1534
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 2,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 2,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-  "professorNames" : [ "교수 이름 1" ],
-  "likeCount" : 0,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.753282",
-    "updatedAt" : "2024-11-12T15:04:15.753282"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.753282",
-    "updatedAt" : "2024-11-12T15:04:15.753282"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.753282",
-    "updatedAt" : "2024-11-12T15:04:15.753282"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
Request fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 조회 (GET /projects/{projectId})

-
-

200 OK

-
-
-
-
HTTP request
-
-
-
GET /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1540
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 2,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 2,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-  "professorNames" : [ "교수 이름 1" ],
-  "likeCount" : 0,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.2894177",
-    "updatedAt" : "2024-11-12T15:04:15.2894177"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.2904206",
-    "updatedAt" : "2024-11-12T15:04:15.2904206"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:15.2904206",
-    "updatedAt" : "2024-11-12T15:04:15.2904206"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 수정 (PUT /projects/{projectId})

-
-

200 OK

-
-
-
-
HTTP request
-
-
-
PUT /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 552
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "thumbnailId" : 3,
-  "posterId" : 4,
-  "projectName" : "프로젝트 이름",
-  "projectType" : "LAB",
-  "projectCategory" : "COMPUTER_VISION",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "members" : [ {
-    "name" : "학생 이름 3",
-    "role" : "STUDENT"
-  }, {
-    "name" : "학생 이름 4",
-    "role" : "STUDENT"
-  }, {
-    "name" : "교수 이름 2",
-    "role" : "PROFESSOR"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1536
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 3,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 4,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "LAB",
-  "projectCategory" : "COMPUTER_VISION",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-  "professorNames" : [ "교수 이름 2" ],
-  "likeCount" : 100,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:14.4181762",
-    "updatedAt" : "2024-11-12T15:04:14.4191755"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:14.4191755",
-    "updatedAt" : "2024-11-12T15:04:14.4191755"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-12T15:04:14.4191755",
-    "updatedAt" : "2024-11-12T15:04:14.4191755"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
Request fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 삭제 (DELETE /projects/{projectId})

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

관심 프로젝트 등록 (POST /projects/{projectId}/favorite)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

관심 프로젝트 삭제 (DELETE /projects/{projectId}/favorite)

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

프로젝트 좋아요 등록 (POST /projects/{projectId}/like)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects/1/like HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

프로젝트 좋아요 삭제 (DELETE /projects/{projectId}/like)

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1/like HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-
-

프로젝트 댓글 등록 (POST /projects/{projectId}/comment)

-
-

201 Created

-
-
-
-
HTTP request
-
-
-
POST /projects/1/comment HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Content-Length: 60
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "content" : "댓글 내용",
-  "isAnonymous" : true
-}
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 222
-
-{
-  "id" : 1,
-  "projectId" : 1,
-  "userName" : "유저 이름",
-  "isAnonymous" : true,
-  "content" : "댓글 내용",
-  "createdAt" : "2024-11-12T15:04:15.0928796",
-  "updatedAt" : "2024-11-12T15:04:15.0928796"
-}
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/comment
ParameterDescription

projectId

프로젝트 ID

-
-
-
Request fields
- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content

String

true

댓글 내용

isAnonymous

Boolean

true

익명 여부

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

댓글 ID

projectId

Number

true

프로젝트 ID

userName

String

true

유저 이름

isAnonymous

Boolean

true

익명 여부

content

String

true

댓글 내용

createdAt

String

true

생성 시간

updatedAt

String

true

수정 시간

-
-
-
-
-
-
-

프로젝트 댓글 삭제 (DELETE /projects/{projectId}/comment)

-
-

204 No Content

-
-
-
-
HTTP request
-
-
-
DELETE /projects/1/comment/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - - - - - -
Table 1. /projects/{projectId}/comment/{commentId}
ParameterDescription

projectId

프로젝트 ID

commentId

댓글 ID

-
-
-
-
-
-
-

수상 프로젝트 조회 (GET /projects/award?year={year})

-
-

200 No Content

-
-
-
-
HTTP request
-
-
-
GET /projects/award?year=2024 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1828
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "thumbnailInfo" : {
-      "id" : 1,
-      "uuid" : "썸네일 uuid 1",
-      "name" : "썸네일 파일 이름 1",
-      "mimeType" : "썸네일 mime 타입 1"
-    },
-    "projectName" : "프로젝트 이름 1",
-    "teamName" : "팀 이름 1",
-    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-    "professorNames" : [ "교수 이름 1" ],
-    "projectType" : "STARTUP",
-    "projectCategory" : "BIG_DATA_ANALYSIS",
-    "awardStatus" : "FIRST",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : false,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  }, {
-    "id" : 2,
-    "thumbnailInfo" : {
-      "id" : 2,
-      "uuid" : "썸네일 uuid 2",
-      "name" : "썸네일 파일 이름 2",
-      "mimeType" : "썸네일 mime 타입 2"
-    },
-    "projectName" : "프로젝트 이름 2",
-    "teamName" : "팀 이름 2",
-    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-    "professorNames" : [ "교수 이름 2" ],
-    "projectType" : "LAB",
-    "projectCategory" : "AI_MACHINE_LEARNING",
-    "awardStatus" : "SECOND",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : true,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-
Query parameters
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

true

프로젝트 년도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

-
-
-
Response fields
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/quiz.html b/src/main/resources/static/docs/quiz.html deleted file mode 100644 index db96ba73..00000000 --- a/src/main/resources/static/docs/quiz.html +++ /dev/null @@ -1,804 +0,0 @@ - - - - - - - -퀴즈 결과 API - - - - - -
-
-

퀴즈 결과 API

-
-
-
-

퀴즈 결과 조회 (GET /quizzes/result)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 778
-
-{
-  "totalElements" : 2,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "userId" : 1,
-    "name" : "name",
-    "phone" : "010-1111-1111",
-    "email" : "scg@scg.skku.ac.kr",
-    "successCount" : 3
-  }, {
-    "userId" : 2,
-    "name" : "name2",
-    "phone" : "010-0000-1234",
-    "email" : "iam@2tle.io",
-    "successCount" : 1
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

-
-
-
-
-
-

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result/excel HTTP/1.1
-Content-Type: application/octet-stream;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/octet-stream;charset=UTF-8
-Content-Disposition: attachment; filename=excel.xlsx
-Content-Length: 2828
-
-PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
-�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
-�0D��ro�z�4� �'{����MHV�盓z���T��E�1e�����Ɇ�ѳ����:�No7jH!bb�Y��V��������T�)$o���0M��9ؗGb�7�pe��*~�R�>��Y�EB���nW������PK6n�!��PK-docProps/core.xmlm�]K�0��J�}���!��e (�(ޅ����h�7����.�������̀> �����bV9�۶Ə�]q�QL�j985�o�Jy�\�}pB�!���Q(_�.%/��#c�	��W�L�Z�z�-N�HR�$�$,�b�'�V�ҿ�ahE`6E�JF~����d!��_�q�q5sy#F��n���N_W���*�L�Q���s#?�������
-�|]0V0~�Aׂ������g��\Hh3q�sE�jn�PK�iX��PK-xl/sharedStrings.xml=�A
-�0�{��D�i�/��tm�&f7�����0Ì�7mꃕc&���B�y��Zx>���~72��X�I��nx�s�["�5����R7�\���u�\*����M��9��"��~PKh���y�PK-
-xl/styles.xml���n� ��J}���d���&C%W��J]�9ۨpX@"�O_0N�L:�������n4���ye���UA	`c�®���iKw���aҰ����C^�MF���Ik�!��c~p �O&�٦(��
-)/�dj<i�	CE�x�Z�*k�^�or:*i���XmQ(aY�m�P�]�B��S3O��,o�0O����%��[��Ii�;Ćf���ֱ K~��(Z�������}�91�8�/>Z'�nߟ%^jhC48��);�t�51�Jt�NȋcI"���iu��{lI���L����_�8ВfL.�����ƒ����hv���PK����E�PK-xl/workbook.xmlM���0��&�C�wi1ƨ����z/�@mI�_0��83��d��l�@�;	i"���|m\+�^\w'��v��>���=[xG���Tuh5%~D�$�V�E���P��!F;�Gn�q��[��j1=���F��U�&�3��U2]E3a�K	b���~���T�PK5%����PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
-����s����;[�E8D&a��h@-
-��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-6n�!���docProps/app.xmlPK-�iX��sdocProps/core.xmlPK-h���y��xl/sharedStrings.xmlPK-����E�
-�xl/styles.xmlPK-5%����
-xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/talk.html b/src/main/resources/static/docs/talk.html deleted file mode 100644 index 97818b2e..00000000 --- a/src/main/resources/static/docs/talk.html +++ /dev/null @@ -1,1956 +0,0 @@ - - - - - - - -대담 영상 API - - - - - -
-
-

대담 영상 API

-
-
-
-

대담 영상 생성 (POST /talks)

-
-
-
-

HTTP request

-
-
-
POST /talks HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 376
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 483
-
-{
-  "id" : 1,
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-11-12T15:04:24.845687",
-  "updatedAt" : "2024-11-12T15:04:24.845687"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 리스트 조회 (GET /talks)

-
-
-
-

HTTP request

-
-
-
GET /talks HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 대담 영상의 연도

title

false

찾고자 하는 대담 영상의 제목 일부

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1047
-
-{
-  "totalElements" : 1,
-  "totalPages" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "제목",
-    "youtubeId" : "유튜브 고유ID",
-    "year" : 2024,
-    "talkerBelonging" : "대담자 소속",
-    "talkerName" : "대담자 성명",
-    "favorite" : true,
-    "quiz" : [ {
-      "question" : "질문1",
-      "answer" : 0,
-      "options" : [ "선지1", "선지2" ]
-    }, {
-      "question" : "질문2",
-      "answer" : 0,
-      "options" : [ "선지1", "선지2" ]
-    } ],
-    "createdAt" : "2024-11-12T15:04:24.9098651",
-    "updatedAt" : "2024-11-12T15:04:24.9098651"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "first" : true,
-  "last" : true,
-  "numberOfElements" : 1,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

대담 영상 ID

content[].title

String

true

대담 영상 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

대담 영상 연도

content[].talkerBelonging

String

true

대담자의 소속된 직장/단체

content[].talkerName

String

true

대담자의 성명

content[].favorite

Boolean

true

관심한 대담영상의 여부

content[].quiz

Array

false

퀴즈 데이터, 없는경우 null

content[].quiz[].question

String

false

퀴즈 1개의 질문

content[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

content[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

content[].createdAt

String

true

대담 영상 생성일

content[].updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 단건 조회 (GET /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
GET /talks/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

조회할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 507
-
-{
-  "id" : 1,
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "favorite" : true,
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-11-12T15:04:24.7720184",
-  "updatedAt" : "2024-11-12T15:04:24.7720184"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

favorite

Boolean

true

관심한 대담영상의 여부

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 수정 (PUT /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
PUT /talks/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 476
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정한 제목",
-  "youtubeId" : "수정한 유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정한 대담자 소속",
-  "talkerName" : "수정한 대담자 성명",
-  "quiz" : [ {
-    "question" : "수정한 질문1",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  }, {
-    "question" : "수정한 질문2",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  } ]
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

수정할 대담 영상의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 585
-
-{
-  "id" : 1,
-  "title" : "수정한 제목",
-  "youtubeId" : "수정한 유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정한 대담자 소속",
-  "talkerName" : "수정한 대담자 성명",
-  "quiz" : [ {
-    "question" : "수정한 질문1",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  }, {
-    "question" : "수정한 질문2",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  } ],
-  "createdAt" : "2024-11-12T15:04:24.5646962",
-  "updatedAt" : "2024-11-12T15:04:24.5646962"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 삭제 (DELETE /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
DELETE /talks/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

삭제할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

대담 영상의 퀴즈 조회 (GET /talks/{talkId}/quiz)

-
-
-
-

HTTP request

-
-
-
GET /talks/1/quiz HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 가져올 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 215
-
-{
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-
-
-
-

대담 영상의 퀴즈 결과 제출 (POST /talks/{talkId}/quiz)

-
-
-
-

HTTP request

-
-
-
POST /talks/1/quiz HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Content-Length: 52
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "result" : {
-    "0" : 0,
-    "1" : 1
-  }
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 제출할 대담 영상의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

result

Object

true

퀴즈를 푼 결과

result.*

Number

true

퀴즈 각 문제별 정답 인덱스, key는 문제 번호

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 43
-
-{
-  "success" : true,
-  "tryCount" : 1
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

success

Boolean

true

퀴즈 성공 여부

tryCount

Number

true

퀴즈 시도 횟수

-
-
-
-
-
-

대담 영상의 관심 등록 (POST /talks/{talkId}/favorite)

-
-
-
-

HTTP request

-
-
-
POST /talks/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에 추가할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

대담 영상의 관심 삭제 (DELETE /talks/{talkId}/favorite)

-
-
-
-

HTTP request

-
-
-
DELETE /talks/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에서 삭제할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

유저의 퀴즈 제출 기록 조회 (GET /talks/{talkId/quiz/submit)

-
-
-
-

HTTP request

-
-
-
GET /talks/1/quiz/submit HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz/submit
ParameterDescription

talkId

퀴즈가 연결된 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 44
-
-{
-  "success" : false,
-  "tryCount" : 2
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

tryCount

Number

true

시도한 횟수

success

Boolean

true

퀴즈 성공 여부

-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/user.html b/src/main/resources/static/docs/user.html deleted file mode 100644 index 9b6d9bff..00000000 --- a/src/main/resources/static/docs/user.html +++ /dev/null @@ -1,1525 +0,0 @@ - - - - - - - -유저 API - - - - - -
-
-

유저 API

-
-
-
-

로그인 유저 기본 정보 조회 (GET /users/me)

-
-
-
-

HTTP request

-
-
-
GET /users/me HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 337
-
-{
-  "id" : 1,
-  "name" : "이름",
-  "phone" : "010-1234-5678",
-  "email" : "student@g.skku.edu",
-  "userType" : "STUDENT",
-  "division" : null,
-  "position" : null,
-  "studentNumber" : "2000123456",
-  "departmentName" : "학과",
-  "createdAt" : "2024-11-19T10:30:41.7151338",
-  "updatedAt" : "2024-11-19T10:30:41.7151338"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

-
-
-
-
-
-

로그인 유저 기본 정보 수정 (PUT /users/me)

-
-
-
-

HTTP request

-
-
-
PUT /users/me HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: user_access_token
-Content-Length: 203
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "name" : "이름",
-  "phoneNumber" : "010-1234-5678",
-  "email" : "student@g.skku.edu",
-  "division" : null,
-  "position" : null,
-  "studentNumber" : "2000123456",
-  "department" : "학과"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

이름

phoneNumber

String

true

전화번호

email

String

true

이메일

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

department

String

false

학과

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 337
-
-{
-  "id" : 1,
-  "name" : "이름",
-  "phone" : "010-1234-5678",
-  "email" : "student@g.skku.edu",
-  "userType" : "STUDENT",
-  "division" : null,
-  "position" : null,
-  "studentNumber" : "2000123456",
-  "departmentName" : "학과",
-  "createdAt" : "2024-11-19T10:30:42.0700355",
-  "updatedAt" : "2024-11-19T10:30:42.0700355"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

-
-
-
-
-
-

유저 탈퇴 (DELETE /users/me)

-
-
-
-

HTTP request

-
-
-
DELETE /users/me HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

유저 관심 프로젝트 리스트 조회 (GET /users/favorites/projects)

-
-
-
-

HTTP request

-
-
-
GET /users/favorites/projects HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 1246
-
-[ {
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 1,
-    "uuid" : "썸네일 uuid 1",
-    "name" : "썸네일 파일 이름 1",
-    "mimeType" : "썸네일 mime 타입 1"
-  },
-  "projectName" : "프로젝트 이름 1",
-  "teamName" : "팀 이름 1",
-  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-  "professorNames" : [ "교수 이름 1" ],
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "awardStatus" : "FIRST",
-  "year" : 2023,
-  "likeCount" : 100,
-  "like" : false,
-  "bookMark" : false,
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}, {
-  "id" : 2,
-  "thumbnailInfo" : {
-    "id" : 2,
-    "uuid" : "썸네일 uuid 2",
-    "name" : "썸네일 파일 이름 2",
-    "mimeType" : "썸네일 mime 타입 2"
-  },
-  "projectName" : "프로젝트 이름 2",
-  "teamName" : "팀 이름 2",
-  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-  "professorNames" : [ "교수 이름 2" ],
-  "projectType" : "LAB",
-  "projectCategory" : "AI_MACHINE_LEARNING",
-  "awardStatus" : "SECOND",
-  "year" : 2023,
-  "likeCount" : 100,
-  "like" : false,
-  "bookMark" : true,
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

프로젝트 ID

[].thumbnailInfo

Object

true

썸네일 정보

[].thumbnailInfo.id

Number

true

썸네일 ID

[].thumbnailInfo.uuid

String

true

썸네일 UUID

[].thumbnailInfo.name

String

true

썸네일 파일 이름

[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

[].projectName

String

true

프로젝트 이름

[].teamName

String

true

팀 이름

[].studentNames[]

Array

true

학생 이름

[].professorNames[]

Array

true

교수 이름

[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

[].year

Number

true

프로젝트 년도

[].likeCount

Number

true

좋아요 수

[].like

Boolean

true

좋아요 여부

[].bookMark

Boolean

true

북마크 여부

[].url

String

true

프로젝트 URL

[].description

String

true

프로젝트 설명

-
-
-
-
-
-

유저 관심 대담영상 리스트 조회 (GET /users/favorites/talks)

-
-
-
-

HTTP request

-
-
-
GET /users/favorites/talks HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 1026
-
-[ {
-  "id" : 1,
-  "title" : "제목1",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속1",
-  "talkerName" : "대담자 성명1",
-  "favorite" : true,
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-11-19T10:30:41.5266701",
-  "updatedAt" : "2024-11-19T10:30:41.5266701"
-}, {
-  "id" : 2,
-  "title" : "제목2",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속2",
-  "talkerName" : "대담자 성명2",
-  "favorite" : true,
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-11-19T10:30:41.5266701",
-  "updatedAt" : "2024-11-19T10:30:41.5266701"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

대담 영상 ID

[].title

String

true

대담 영상 제목

[].youtubeId

String

true

유튜브 영상의 고유 ID

[].year

Number

true

대담 영상 연도

[].talkerBelonging

String

true

대담자의 소속된 직장/단체

[].talkerName

String

true

대담자의 성명

[].favorite

Boolean

true

관심한 대담영상의 여부

[].quiz

Array

false

퀴즈 데이터, 없는경우 null

[].quiz[].question

String

false

퀴즈 1개의 질문

[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

[].createdAt

String

true

대담 영상 생성일

[].updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

유저 관심 잡페어인터뷰영상 리스트 조회 (GET /users/favorites/jobInterviews)

-
-
-
-

HTTP request

-
-
-
GET /users/favorites/jobInterviews HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 713
-
-[ {
-  "id" : 1,
-  "title" : "잡페어 인터뷰의 제목1",
-  "youtubeId" : "유튜브 고유 ID1",
-  "year" : 2023,
-  "talkerBelonging" : "대담자의 소속1",
-  "talkerName" : "대담자의 성명1",
-  "favorite" : false,
-  "category" : "INTERN",
-  "createdAt" : "2024-11-19T10:30:41.425921",
-  "updatedAt" : "2024-11-19T10:30:41.426946"
-}, {
-  "id" : 2,
-  "title" : "잡페어 인터뷰의 제목2",
-  "youtubeId" : "유튜브 고유 ID2",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속2",
-  "talkerName" : "대담자의 성명2",
-  "favorite" : true,
-  "category" : "INTERN",
-  "createdAt" : "2024-11-19T10:30:41.426946",
-  "updatedAt" : "2024-11-19T10:30:41.426946"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

잡페어 인터뷰 ID

[].title

String

true

잡페어 인터뷰 제목

[].youtubeId

String

true

유튜브 영상의 고유 ID

[].year

Number

true

잡페어 인터뷰 연도

[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

[].createdAt

String

true

잡페어 인터뷰 생성일

[].updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

유저 문의 리스트 조회 (GET /users/inquiries)

-
-
-
-

HTTP request

-
-
-
GET /users/inquiries HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 271
-
-[ {
-  "id" : 1,
-  "title" : "Title 1",
-  "projectId" : 1,
-  "createdDate" : "2024-11-19T10:30:41.6364815",
-  "hasReply" : true
-}, {
-  "id" : 2,
-  "title" : "Title 2",
-  "projectId" : 2,
-  "createdDate" : "2024-11-19T10:30:41.6364815",
-  "hasReply" : false
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

문의 ID

[].title

String

true

문의 제목

[].projectId

Number

true

프로젝트 ID

[].createdDate

String

true

문의 생성일

[].hasReply

Boolean

true

답변 여부

-
-
-
-
-
-

유저 과제 제안 리스트 조회 (GET /users/proposals)

-
-
-
-

HTTP request

-
-
-
GET /users/proposals HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 231
-
-[ {
-  "id" : 1,
-  "title" : "Title 1",
-  "createdDate" : "2024-11-19T10:30:41.8183268",
-  "hasReply" : true
-}, {
-  "id" : 2,
-  "title" : "Title 2",
-  "createdDate" : "2024-11-19T10:30:41.8183268",
-  "hasReply" : false
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

과제 제안 ID

[].title

String

true

프로젝트명

[].createdDate

String

true

과제 제안 생성일

[].hasReply

Boolean

true

답변 여부

-
-
-
-
-
-
-
- - - \ No newline at end of file From 14b813cb9fdf155802f2dddfc63363a18b7acdb9 Mon Sep 17 00:00:00 2001 From: simta1 <133639447+simta1@users.noreply.github.com> Date: Tue, 19 Nov 2024 15:23:48 +0900 Subject: [PATCH 37/37] =?UTF-8?q?docs:=20static/docs=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/docs/aihub-controller-test.html | 34 +- .../resources/static/docs/application.html | 40 +- .../static/docs/auth-controller-test.html | 36 +- .../resources/static/docs/department.html | 16 +- .../resources/static/docs/eventNotice.html | 74 +- .../resources/static/docs/eventPeriod.html | 62 +- .../resources/static/docs/exceptionCode.html | 480 - .../static/docs/file-controller-test.html | 16 +- src/main/resources/static/docs/gallery.html | 82 +- src/main/resources/static/docs/index.html | 28113 ++++++++-------- src/main/resources/static/docs/inquiry.html | 52 +- .../static/docs/jobInfo-controller-test.html | 18 +- .../resources/static/docs/jobInterview.html | 44 +- src/main/resources/static/docs/notice.html | 74 +- src/main/resources/static/docs/project.html | 90 +- src/main/resources/static/docs/proposal.html | 1646 - src/main/resources/static/docs/quiz.html | 1601 +- src/main/resources/static/docs/talk.html | 50 +- .../static/docs/user-controller-test.html | 937 - src/main/resources/static/docs/user.html | 581 +- 20 files changed, 16303 insertions(+), 17743 deletions(-) delete mode 100644 src/main/resources/static/docs/exceptionCode.html delete mode 100644 src/main/resources/static/docs/proposal.html delete mode 100644 src/main/resources/static/docs/user-controller-test.html diff --git a/src/main/resources/static/docs/aihub-controller-test.html b/src/main/resources/static/docs/aihub-controller-test.html index 2e5d3de5..4041b12a 100644 --- a/src/main/resources/static/docs/aihub-controller-test.html +++ b/src/main/resources/static/docs/aihub-controller-test.html @@ -540,7 +540,7 @@

HTTP request

POST /aihub/models HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Content-Length: 199
+Content-Length: 206
 Host: localhost:8080
 
 {
@@ -563,11 +563,11 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1221 +Content-Length: 1270 { - "totalPages" : 1, "totalElements" : 2, + "totalPages" : 1, "size" : 10, "content" : [ { "title" : "title", @@ -598,6 +598,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 2, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -607,12 +610,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 2, - "first" : true, - "last" : true, "empty" : false }
@@ -918,7 +918,7 @@

HTTP request

POST /aihub/datasets HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Content-Length: 197
+Content-Length: 204
 Host: localhost:8080
 
 {
@@ -941,11 +941,11 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1217 +Content-Length: 1266 { - "totalPages" : 1, "totalElements" : 2, + "totalPages" : 1, "size" : 10, "content" : [ { "title" : "title", @@ -976,6 +976,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 2, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -985,12 +988,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 2, - "first" : true, - "last" : true, "empty" : false }
@@ -1206,7 +1206,7 @@

Response fields

diff --git a/src/main/resources/static/docs/application.html b/src/main/resources/static/docs/application.html index 6fa4003b..c5d9528a 100644 --- a/src/main/resources/static/docs/application.html +++ b/src/main/resources/static/docs/application.html @@ -497,11 +497,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 1178 +Content-Length: 1235 { - "totalPages" : 1, "totalElements" : 3, + "totalPages" : 1, "size" : 10, "content" : [ { "id" : 1, @@ -509,24 +509,24 @@

HTTP response

"division" : "배민", "position" : null, "userType" : "INACTIVE_COMPANY", - "createdAt" : "2024-11-18T19:55:54.259219", - "updatedAt" : "2024-11-18T19:55:54.259222" + "createdAt" : "2024-11-19T15:22:39.2981008", + "updatedAt" : "2024-11-19T15:22:39.2981008" }, { "id" : 2, "name" : "김교수", "division" : "솦융대", "position" : "교수", "userType" : "INACTIVE_PROFESSOR", - "createdAt" : "2024-11-18T19:55:54.259235", - "updatedAt" : "2024-11-18T19:55:54.259235" + "createdAt" : "2024-11-19T15:22:39.2981008", + "updatedAt" : "2024-11-19T15:22:39.2981008" }, { "id" : 3, "name" : "박교수", "division" : "정통대", "position" : "교수", "userType" : "INACTIVE_PROFESSOR", - "createdAt" : "2024-11-18T19:55:54.259245", - "updatedAt" : "2024-11-18T19:55:54.259246" + "createdAt" : "2024-11-19T15:22:39.2981008", + "updatedAt" : "2024-11-19T15:22:39.2981008" } ], "number" : 0, "sort" : { @@ -534,6 +534,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 3, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -543,12 +546,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 3, - "first" : true, - "last" : true, "empty" : false }
@@ -786,7 +786,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 272 +Content-Length: 282 { "id" : 1, @@ -796,8 +796,8 @@

HTTP response

"division" : "배민", "position" : "CEO", "userType" : "INACTIVE_COMPANY", - "createdAt" : "2024-11-18T19:55:54.344894", - "updatedAt" : "2024-11-18T19:55:54.344897" + "createdAt" : "2024-11-19T15:22:39.580926", + "updatedAt" : "2024-11-19T15:22:39.580926" }
@@ -926,7 +926,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 263 +Content-Length: 275 { "id" : 1, @@ -936,8 +936,8 @@

HTTP response

"division" : "배민", "position" : "CEO", "userType" : "COMPANY", - "createdAt" : "2024-11-18T19:55:54.328644", - "updatedAt" : "2024-11-18T19:55:54.328648" + "createdAt" : "2024-11-19T15:22:39.5095509", + "updatedAt" : "2024-11-19T15:22:39.5095509" } @@ -1077,7 +1077,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/auth-controller-test.html b/src/main/resources/static/docs/auth-controller-test.html index 355afd9e..dbbb6746 100644 --- a/src/main/resources/static/docs/auth-controller-test.html +++ b/src/main/resources/static/docs/auth-controller-test.html @@ -489,35 +489,17 @@

HTTP response

Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers -Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Mon, 25 Nov 2024 10:55:46 GMT; Secure; HttpOnly; SameSite=None -Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Mon, 25 Nov 2024 10:55:46 GMT; Secure; SameSite=None +Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Tue, 26 Nov 2024 06:22:25 GMT; Secure; HttpOnly; SameSite=None +Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Tue, 26 Nov 2024 06:22:25 GMT; Secure; SameSite=None Location: https://localhost:3000/login/kakao

Response fields

- ----- - - - - - - - - - - - - - - -
PathTypeDescription

accessToken

String

access token

+
+

Snippet response-fields not found for operation::auth-controller-test/kakao-social-login

+
@@ -533,7 +515,7 @@

HTTP request

POST /auth/register HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: access_token
-Content-Length: 289
+Content-Length: 301
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -679,7 +661,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 86 +Content-Length: 90 { "name" : "stop-user", @@ -756,7 +738,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 45 +Content-Length: 47 { "accessToken" : "reissued_access_token" @@ -803,7 +785,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/department.html b/src/main/resources/static/docs/department.html index 2679ba6e..bbb6b7ac 100644 --- a/src/main/resources/static/docs/department.html +++ b/src/main/resources/static/docs/department.html @@ -467,7 +467,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 92 +Content-Length: 98 [ { "id" : 1, @@ -483,14 +483,16 @@

HTTP response

Response fields

---++++ - + + @@ -498,11 +500,13 @@

Response fields

+ + @@ -517,7 +521,7 @@

Response fields

diff --git a/src/main/resources/static/docs/eventNotice.html b/src/main/resources/static/docs/eventNotice.html index 6f5385f6..de3d004a 100644 --- a/src/main/resources/static/docs/eventNotice.html +++ b/src/main/resources/static/docs/eventNotice.html @@ -454,7 +454,7 @@

HTTP request

POST /eventNotices HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 141
+Content-Length: 146
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -521,7 +521,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 980 +Content-Length: 1019 { "id" : 1, @@ -529,29 +529,29 @@

HTTP response

"content" : "이벤트 공지 사항 내용", "hitCount" : 0, "fixed" : true, - "createdAt" : "2024-11-18T19:55:47.17606", - "updatedAt" : "2024-11-18T19:55:47.176061", + "createdAt" : "2024-11-19T15:22:26.3472166", + "updatedAt" : "2024-11-19T15:22:26.3472166", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:47.176039", - "updatedAt" : "2024-11-18T19:55:47.176047" + "createdAt" : "2024-11-19T15:22:26.3472166", + "updatedAt" : "2024-11-19T15:22:26.3472166" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:47.176051", - "updatedAt" : "2024-11-18T19:55:47.176053" + "createdAt" : "2024-11-19T15:22:26.3472166", + "updatedAt" : "2024-11-19T15:22:26.3472166" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:47.176055", - "updatedAt" : "2024-11-18T19:55:47.176057" + "createdAt" : "2024-11-19T15:22:26.3472166", + "updatedAt" : "2024-11-19T15:22:26.3472166" } ] }
@@ -722,26 +722,26 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 873 +Content-Length: 919 { - "totalPages" : 1, "totalElements" : 2, + "totalPages" : 1, "size" : 10, "content" : [ { "id" : 1, "title" : "이벤트 공지 사항 1", "hitCount" : 10, "fixed" : true, - "createdAt" : "2024-11-18T19:55:47.21455", - "updatedAt" : "2024-11-18T19:55:47.214557" + "createdAt" : "2024-11-19T15:22:26.4193293", + "updatedAt" : "2024-11-19T15:22:26.4193293" }, { "id" : 2, "title" : "이벤트 공지 사항 2", "hitCount" : 10, "fixed" : false, - "createdAt" : "2024-11-18T19:55:47.214576", - "updatedAt" : "2024-11-18T19:55:47.214578" + "createdAt" : "2024-11-19T15:22:26.4193293", + "updatedAt" : "2024-11-19T15:22:26.4193293" } ], "number" : 0, "sort" : { @@ -749,6 +749,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 2, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -758,12 +761,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 2, - "first" : true, - "last" : true, "empty" : false } @@ -994,7 +994,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 959 +Content-Length: 989 { "id" : 1, @@ -1002,29 +1002,29 @@

HTTP response

"content" : "content", "hitCount" : 10, "fixed" : true, - "createdAt" : "2024-11-18T19:55:47.117036", - "updatedAt" : "2024-11-18T19:55:47.117038", + "createdAt" : "2024-11-19T15:22:26.227972", + "updatedAt" : "2024-11-19T15:22:26.227972", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:47.117012", - "updatedAt" : "2024-11-18T19:55:47.117022" + "createdAt" : "2024-11-19T15:22:26.227972", + "updatedAt" : "2024-11-19T15:22:26.227972" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:47.117026", - "updatedAt" : "2024-11-18T19:55:47.117029" + "createdAt" : "2024-11-19T15:22:26.227972", + "updatedAt" : "2024-11-19T15:22:26.227972" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:47.117032", - "updatedAt" : "2024-11-18T19:55:47.117034" + "createdAt" : "2024-11-19T15:22:26.227972", + "updatedAt" : "2024-11-19T15:22:26.227972" } ] } @@ -1171,7 +1171,7 @@

HTTP request

PUT /eventNotices/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 162
+Content-Length: 167
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1238,7 +1238,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 975 +Content-Length: 1009 { "id" : 1, @@ -1247,28 +1247,28 @@

HTTP response

"hitCount" : 10, "fixed" : false, "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-11-18T19:55:47.026018", + "updatedAt" : "2024-11-19T15:22:26.1261877", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-11-18T19:55:47.025945" + "updatedAt" : "2024-11-19T15:22:26.1251854" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-11-18T19:55:47.025971" + "updatedAt" : "2024-11-19T15:22:26.1261877" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-11-18T19:55:47.025978" + "updatedAt" : "2024-11-19T15:22:26.1261877" } ] }
@@ -1440,7 +1440,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/eventPeriod.html b/src/main/resources/static/docs/eventPeriod.html index 5eab31e0..f6e56e28 100644 --- a/src/main/resources/static/docs/eventPeriod.html +++ b/src/main/resources/static/docs/eventPeriod.html @@ -455,13 +455,13 @@

HTTP request

POST /eventPeriods HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 84
+Content-Length: 89
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
 {
-  "start" : "2024-11-18T19:55:47.738113",
-  "end" : "2024-11-28T19:55:47.738129"
+  "start" : "2024-11-19T15:22:27.3296176",
+  "end" : "2024-11-29T15:22:27.3296176"
 }
@@ -508,15 +508,15 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 205 +Content-Length: 216 { "id" : 1, "year" : 2024, - "start" : "2024-11-18T19:55:47.738137", - "end" : "2024-11-28T19:55:47.738139", - "createdAt" : "2024-11-18T19:55:47.738142", - "updatedAt" : "2024-11-18T19:55:47.738144" + "start" : "2024-11-19T15:22:27.3296176", + "end" : "2024-11-29T15:22:27.3296176", + "createdAt" : "2024-11-19T15:22:27.3296176", + "updatedAt" : "2024-11-19T15:22:27.3296176" } @@ -605,15 +605,15 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 204 +Content-Length: 216 { "id" : 1, "year" : 2024, - "start" : "2024-11-18T19:55:47.71465", - "end" : "2024-11-28T19:55:47.714653", - "createdAt" : "2024-11-18T19:55:47.714657", - "updatedAt" : "2024-11-18T19:55:47.714659" + "start" : "2024-11-19T15:22:27.2850492", + "end" : "2024-11-29T15:22:27.2850492", + "createdAt" : "2024-11-19T15:22:27.2850492", + "updatedAt" : "2024-11-19T15:22:27.2850492" } @@ -702,22 +702,22 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 414 +Content-Length: 438 [ { "id" : 1, "year" : 2024, - "start" : "2024-11-18T19:55:47.776458", - "end" : "2024-11-28T19:55:47.77647", - "createdAt" : "2024-11-18T19:55:47.776475", - "updatedAt" : "2024-11-18T19:55:47.776477" + "start" : "2024-11-19T15:22:27.3867137", + "end" : "2024-11-29T15:22:27.3867137", + "createdAt" : "2024-11-19T15:22:27.3867137", + "updatedAt" : "2024-11-19T15:22:27.3867137" }, { "id" : 2, "year" : 2025, - "start" : "2024-11-18T19:55:47.77648", - "end" : "2024-11-28T19:55:47.776481", - "createdAt" : "2024-11-18T19:55:47.776483", - "updatedAt" : "2024-11-18T19:55:47.776485" + "start" : "2024-11-19T15:22:27.3867137", + "end" : "2024-11-29T15:22:27.3867137", + "createdAt" : "2024-11-19T15:22:27.3867137", + "updatedAt" : "2024-11-19T15:22:27.3867137" } ] @@ -793,13 +793,13 @@

HTTP request

PUT /eventPeriod HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 84
+Content-Length: 89
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
 {
-  "start" : "2024-11-18T19:55:47.657836",
-  "end" : "2024-11-28T19:55:47.657846"
+  "start" : "2024-11-19T15:22:27.2169363",
+  "end" : "2024-11-29T15:22:27.2169363"
 }
@@ -846,15 +846,15 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 205 +Content-Length: 216 { "id" : 1, "year" : 2024, - "start" : "2024-11-18T19:55:47.657891", - "end" : "2024-11-28T19:55:47.657893", - "createdAt" : "2024-11-18T19:55:47.657895", - "updatedAt" : "2024-11-18T19:55:47.657897" + "start" : "2024-11-19T15:22:27.2169363", + "end" : "2024-11-29T15:22:27.2169363", + "createdAt" : "2024-11-19T15:22:27.2169363", + "updatedAt" : "2024-11-19T15:22:27.2169363" } @@ -925,7 +925,7 @@

Response fields

diff --git a/src/main/resources/static/docs/exceptionCode.html b/src/main/resources/static/docs/exceptionCode.html deleted file mode 100644 index cf8220c6..00000000 --- a/src/main/resources/static/docs/exceptionCode.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - - - - -커스텀 예외 코드 - - - - - -
-
-

커스텀 예외 코드

-
-
-
PathName TypeRequired Description

[].id

Number

true

학과 ID

[].name

String

true

학과 이름

---- - - - - - - - - - - - - - - - - -
CodeMessage

1000

요청 형식이 올바르지 않습니다.

1001

해당 연도의 행사 기간이 이미 존재합니다.

- - - - - - - \ No newline at end of file diff --git a/src/main/resources/static/docs/file-controller-test.html b/src/main/resources/static/docs/file-controller-test.html index 335837fc..e7e34bb9 100644 --- a/src/main/resources/static/docs/file-controller-test.html +++ b/src/main/resources/static/docs/file-controller-test.html @@ -500,22 +500,22 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 445 +Content-Length: 464 [ { "id" : 1, - "uuid" : "29efd2b4-7c45-46ce-aa54-d68239b3f35c", + "uuid" : "93c1cbe0-8c44-4432-9ac2-906feb256ba9", "name" : "첨부파일1.png", "mimeType" : "image/png", - "createdAt" : "2024-11-18T19:55:49.208335", - "updatedAt" : "2024-11-18T19:55:49.208345" + "createdAt" : "2024-11-19T15:22:29.6605669", + "updatedAt" : "2024-11-19T15:22:29.6605669" }, { "id" : 2, - "uuid" : "71d5b9f6-2c69-4db1-8055-b6cfd5ef5003", + "uuid" : "99547005-27d9-4c62-b6a2-134f9a8d669e", "name" : "첨부파일2.pdf", "mimeType" : "application/pdf", - "createdAt" : "2024-11-18T19:55:49.20852", - "updatedAt" : "2024-11-18T19:55:49.208524" + "createdAt" : "2024-11-19T15:22:29.6605669", + "updatedAt" : "2024-11-19T15:22:29.6605669" } ]
@@ -673,7 +673,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/gallery.html b/src/main/resources/static/docs/gallery.html index 33c1ce63..641eebfb 100644 --- a/src/main/resources/static/docs/gallery.html +++ b/src/main/resources/static/docs/gallery.html @@ -455,7 +455,7 @@

HTTP request

POST /galleries HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 96
+Content-Length: 101
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -522,7 +522,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 891 +Content-Length: 929 { "id" : 1, @@ -530,29 +530,29 @@

HTTP response

"year" : 2024, "month" : 4, "hitCount" : 1, - "createdAt" : "2024-11-18T19:55:49.947753", - "updatedAt" : "2024-11-18T19:55:49.947755", + "createdAt" : "2024-11-19T15:22:31.1031748", + "updatedAt" : "2024-11-19T15:22:31.1031748", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "사진1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.947735", - "updatedAt" : "2024-11-18T19:55:49.947743" + "createdAt" : "2024-11-19T15:22:31.1031748", + "updatedAt" : "2024-11-19T15:22:31.1031748" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "사진2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.947746", - "updatedAt" : "2024-11-18T19:55:49.947747" + "createdAt" : "2024-11-19T15:22:31.1031748", + "updatedAt" : "2024-11-19T15:22:31.1031748" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "사진3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.947749", - "updatedAt" : "2024-11-18T19:55:49.947751" + "createdAt" : "2024-11-19T15:22:31.1031748", + "updatedAt" : "2024-11-19T15:22:31.1031748" } ] }
@@ -728,11 +728,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1234 +Content-Length: 1289 { - "totalPages" : 1, "totalElements" : 1, + "totalPages" : 1, "size" : 1, "content" : [ { "id" : 1, @@ -740,29 +740,29 @@

HTTP response

"year" : 2024, "month" : 4, "hitCount" : 0, - "createdAt" : "2024-11-18T19:55:49.866951", - "updatedAt" : "2024-11-18T19:55:49.866952", + "createdAt" : "2024-11-19T15:22:30.9431053", + "updatedAt" : "2024-11-19T15:22:30.9431053", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "사진1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.866926", - "updatedAt" : "2024-11-18T19:55:49.866935" + "createdAt" : "2024-11-19T15:22:30.9431053", + "updatedAt" : "2024-11-19T15:22:30.9431053" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "사진2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.866938", - "updatedAt" : "2024-11-18T19:55:49.86694" + "createdAt" : "2024-11-19T15:22:30.9431053", + "updatedAt" : "2024-11-19T15:22:30.9431053" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "사진3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.866942", - "updatedAt" : "2024-11-18T19:55:49.866944" + "createdAt" : "2024-11-19T15:22:30.9431053", + "updatedAt" : "2024-11-19T15:22:30.9431053" } ] } ], "number" : 0, @@ -771,10 +771,10 @@

HTTP response

"sorted" : false, "unsorted" : true }, - "pageable" : "INSTANCE", "numberOfElements" : 1, "first" : true, "last" : true, + "pageable" : "INSTANCE", "empty" : false } @@ -1005,7 +1005,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 890 +Content-Length: 929 { "id" : 1, @@ -1013,29 +1013,29 @@

HTTP response

"year" : 2024, "month" : 4, "hitCount" : 1, - "createdAt" : "2024-11-18T19:55:49.918362", - "updatedAt" : "2024-11-18T19:55:49.918364", + "createdAt" : "2024-11-19T15:22:31.0302695", + "updatedAt" : "2024-11-19T15:22:31.0302695", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "사진1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.918345", - "updatedAt" : "2024-11-18T19:55:49.918351" + "createdAt" : "2024-11-19T15:22:31.0292633", + "updatedAt" : "2024-11-19T15:22:31.0292633" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "사진2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.918355", - "updatedAt" : "2024-11-18T19:55:49.918356" + "createdAt" : "2024-11-19T15:22:31.0302695", + "updatedAt" : "2024-11-19T15:22:31.0302695" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "사진3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.918358", - "updatedAt" : "2024-11-18T19:55:49.91836" + "createdAt" : "2024-11-19T15:22:31.0302695", + "updatedAt" : "2024-11-19T15:22:31.0302695" } ] } @@ -1200,7 +1200,7 @@

HTTP request

PUT /galleries/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 93
+Content-Length: 98
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1289,7 +1289,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 887 +Content-Length: 926 { "id" : 1, @@ -1297,29 +1297,29 @@

HTTP response

"year" : 2024, "month" : 5, "hitCount" : 1, - "createdAt" : "2024-11-18T19:55:49.714135", - "updatedAt" : "2024-11-18T19:55:49.714137", + "createdAt" : "2024-11-19T15:22:30.7510164", + "updatedAt" : "2024-11-19T15:22:30.7510164", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "사진1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.714027", - "updatedAt" : "2024-11-18T19:55:49.714047" + "createdAt" : "2024-11-19T15:22:30.7510164", + "updatedAt" : "2024-11-19T15:22:30.7510164" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "사진2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.714057", - "updatedAt" : "2024-11-18T19:55:49.71406" + "createdAt" : "2024-11-19T15:22:30.7510164", + "updatedAt" : "2024-11-19T15:22:30.7510164" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "사진3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:49.714063", - "updatedAt" : "2024-11-18T19:55:49.714065" + "createdAt" : "2024-11-19T15:22:30.7510164", + "updatedAt" : "2024-11-19T15:22:30.7510164" } ] }
@@ -1439,7 +1439,7 @@

Response fields

diff --git a/src/main/resources/static/docs/index.html b/src/main/resources/static/docs/index.html index 46143e8c..8d4859c4 100644 --- a/src/main/resources/static/docs/index.html +++ b/src/main/resources/static/docs/index.html @@ -1,13477 +1,14638 @@ - - - - - - - -S-TOP Rest Docs - - - - - - -
-
-

커스텀 예외 코드

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CodeMessage

1000

요청 형식이 올바르지 않습니다.

1001

해당 연도의 행사 기간이 이미 존재합니다.

1002

올해의 이벤트 기간이 존재하지 않습니다.

1003

이벤트 시작 일시 혹은 종료 일시가 올해를 벗어났습니다.

2001

소셜 로그인 공급자로부터 유저 정보를 받아올 수 없습니다.

2002

소셜 로그인 공급자로부터 인증 토큰을 받아올 수 없습니다.

3000

접근할 수 없는 리소스입니다.

3001

유효하지 않은 Refresh Token 입니다.

3002

토큰 검증에 실패했습니다.

3003

유효하지 않은 Access Token 입니다.

13000

Notion 데이터를 가져오는데 실패했습니다.

4000

유저 id 를 찾을 수 없습니다.

4001

회원가입이 필요합니다.

4002

유저 권한이 존재하지 않습니다.

4003

학과가 존재하지 않습니다.

4004

학과/학번 정보가 존재하지 않습니다.

4005

회원 가입 이용이 불가능한 회원 유형입니다.

4010

ID에 해당하는 인증 신청 정보가 존재하지 않습니다.

4011

이미 인증 된 회원입니다.

77000

프로젝트를 찾을 수 없습니다.

77001

프로젝트 썸네일을 찾을 수 없습니다

77002

프로젝트 포스터를 찾을 수 없습니다

77003

멤버 정보가 올바르지 않습니다.

77004

기술 스택 정보가 올바르지 않습니다.

77005

관심 표시한 프로젝트가 이미 존재합니다

77007

관심 표시한 프로젝트를 찾을 수 없습니다.

77008

이미 좋아요 한 프로젝트입니다.

77009

좋아요 표시한 프로젝트가 존재하지 않습니다

77010

댓글을 찾을 수 없습니다

77011

유저 정보가 일치하지 않습니다

78000

엑셀 행의 개수와 업로드한 이미지의 개수가 일치해야합니다.

78001

썸네일 이미지 이름을 찾을 수 없습니다.

78002

포스터 이미지 이름을 찾을 수 없습니다.

78003

수상 내역의 한글 이름이 올바르지 않습니다.

78004

프로젝트 종류의 한글 이름이 올바르지 않습니다.

78005

프로젝트 분야의 한글 이름이 올바르지 않습니다.

78006

모든 셀은 값이 있어야 합니다.

78007

엑셀 형식이 올바르지 않습니다.

78008

중복된 썸네일 이미지 이름이 존재합니다.

78009

중복된 포스터 이미지 이름이 존재합니다.

780010

프로젝트 년도는 숫자만 입력해야 합니다.

780011

엑셀 파일을 열 수 없습니다.

5000

파일 업로드를 실패했습니다.

5001

파일 가져오기를 실패했습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

5004

파일을 찾을 수 없습니다.

10000

요청한 ID에 해당하는 공지사항이 존재하지 않습니다.

11000

요청한 ID에 해당하는 이벤트가 존재하지 않습니다.

8000

요청한 ID에 해당하는 문의가 존재하지 않습니다.

8001

요청한 ID에 해당하는 문의 답변이 존재하지 않습니다.

8002

이미 답변이 등록된 문의입니다.

8003

해당 문의에 대한 권한이 없습니다.

8200

해당 ID에 해당하는 잡페어 인터뷰가 없습니다.

8400

해당 ID에 해당하는 대담 영상이 없습니다.

8401

퀴즈 데이터가 존재하지 않습니다.

8402

퀴즈 제출 데이터가 존재하지 않습니다.

8601

이미 퀴즈의 정답을 모두 맞추었습니다.

8801

이미 관심 리스트에 추가되었습니다.

8802

이미 관심 리스트에 추가되어 있지 않습니다.

8804

퀴즈 이벤트 참여 기간이 아닙니다.

8805

대담 영상과 현재 이벤트 참여 연도가 일치하지 않습니다.

8901

퀴즈 최대 시도 횟수를 초과하였습니다.

71001

엑셀 파일이 주어진 클래스와 호환되지 않습니다.

9001

요청한 ID에 해당하는 갤러리가 존재하지 않습니다.

-
-
-

인증 API

-
-
-
-

카카오 소셜 로그인 (POST /auth/login/kakao/)

-
-
-
-

HTTP request

-
-
-
GET /auth/login/kakao?code=codefromkakaologin HTTP/1.1
-Host: localhost:8080
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

code

true

카카오 인가코드

-
-
-

HTTP response

-
-
-
HTTP/1.1 302 Found
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Mon, 25 Nov 2024 10:55:46 GMT; Secure; HttpOnly; SameSite=None
-Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Mon, 25 Nov 2024 10:55:46 GMT; Secure; SameSite=None
-Location: https://localhost:3000/login/kakao
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - -
PathTypeDescription

accessToken

String

access token

-
-
-
-
-
-

회원가입 (POST /auth/register)

-
-
-
-

HTTP request

-
-
-
POST /auth/register HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Content-Length: 289
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "name" : "stop-user",
-  "phoneNumber" : "010-1234-1234",
-  "userType" : "STUDENT",
-  "email" : "email@gmail.com",
-  "signUpSource" : "ad",
-  "studentInfo" : {
-    "department" : "소프트웨어학과",
-    "studentNumber" : "2021123123"
-  },
-  "division" : null,
-  "position" : null
-}
-
-
-
-
-

Request cookies

- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

Request headers

- ---- - - - - - - - - - - - - -
NameDescription

Authorization

access token

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

유저 이름

phoneNumber

String

true

전화 번호

userType

String

true

회원 유형

email

String

true

이메일

signUpSource

String

false

가입 경로

studentInfo.department

String

true

학과

studentInfo.studentNumber

String

true

학번

division

String

false

소속

position

String

false

직책

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 86
-
-{
-  "name" : "stop-user",
-  "email" : "email@email.com",
-  "phone" : "010-1234-1234"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

이름

email

String

true

이메일

phone

String

true

전화번호

-
-
-
-
-
-

Access Token 재발급 (POST /auth/reissue)

-
-
-
-

HTTP request

-
-
-
POST /auth/reissue HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 45
-
-{
-  "accessToken" : "reissued_access_token"
-}
-
-
-
-
-
-
-
-

로그아웃 (POST /auth/logout)

-
-
-
-

HTTP request

-
-
-
POST /auth/logout HTTP/1.1
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-Content-Type: application/x-www-form-urlencoded
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

파일 API

-
-
-
-

다중 파일 업로드 (POST /files)

-
-
-
-

HTTP request

-
-
-
POST /files HTTP/1.1
-Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Host: localhost:8080
-
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=files; filename=첨부파일1.png
-Content-Type: image/png
-
-[BINARY DATA - PNG IMAGE CONTENT]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=files; filename=첨부파일2.pdf
-Content-Type: application/pdf
-
-[BINARY DATA - PDF CONTENT]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
-
-
-

Request parts

- ---- - - - - - - - - - - - - -
PartDescription

files

업로드할 파일 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 445
-
-[ {
-  "id" : 1,
-  "uuid" : "29efd2b4-7c45-46ce-aa54-d68239b3f35c",
-  "name" : "첨부파일1.png",
-  "mimeType" : "image/png",
-  "createdAt" : "2024-11-18T19:55:49.208335",
-  "updatedAt" : "2024-11-18T19:55:49.208345"
-}, {
-  "id" : 2,
-  "uuid" : "71d5b9f6-2c69-4db1-8055-b6cfd5ef5003",
-  "name" : "첨부파일2.pdf",
-  "mimeType" : "application/pdf",
-  "createdAt" : "2024-11-18T19:55:49.20852",
-  "updatedAt" : "2024-11-18T19:55:49.208524"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

파일 ID

[].uuid

String

true

파일 UUID

[].name

String

true

파일 이름

[].mimeType

String

true

파일의 MIME 타입

[].createdAt

String

true

파일 생성일

[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

파일 조회 (GET /files/{fileId})

-
-
-
-

HTTP request

-
-
-
GET /files/1 HTTP/1.1
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /files/{fileId}
ParameterDescription

fileId

파일 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: image/png;charset=UTF-8
-Content-Length: 33
-
-[BINARY DATA - PNG IMAGE CONTENT]
-
-
-
-
-
-
-
-

프로젝트 일괄 등록 양식 다운로드 (GET /files/form/projects)

-
-
-
-

HTTP request

-
-
-
GET /files/form/projects HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Disposition: form-data; name="attachment"; filename="project_upload_form.xlsx"
-Content-Type: application/octet-stream;charset=UTF-8
-Content-Length: 19
-
-project_upload_form
-
-
-
-
-
-
-
-
-
-

잡페어 인터뷰 API

-
-
-
-

잡페어 인터뷰 생성 (POST /jobInterviews)

-
-
-
-

HTTP request

-
-
-
POST /jobInterviews HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 213
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "category" : "INTERN"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 317
-
-{
-  "id" : 1,
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "category" : "INTERN",
-  "createdAt" : "2024-11-18T19:55:54.938534",
-  "updatedAt" : "2024-11-18T19:55:54.938537"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 리스트 조회 (GET /jobInterviews)

-
-
-
-

HTTP request

-
-
-
GET /jobInterviews HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 잡페어 인터뷰 연도

category

false

찾고자 하는 잡페어 인터뷰 카테고리: SENIOR, INTERN

title

false

찾고자 하는 잡페어 인터뷰의 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1205
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "잡페어 인터뷰의 제목1",
-    "youtubeId" : "유튜브 고유 ID1",
-    "year" : 2023,
-    "talkerBelonging" : "대담자의 소속1",
-    "talkerName" : "대담자의 성명1",
-    "favorite" : false,
-    "category" : "INTERN",
-    "createdAt" : "2024-11-18T19:55:54.88224",
-    "updatedAt" : "2024-11-18T19:55:54.882242"
-  }, {
-    "id" : 2,
-    "title" : "잡페어 인터뷰의 제목2",
-    "youtubeId" : "유튜브 고유 ID2",
-    "year" : 2024,
-    "talkerBelonging" : "대담자의 소속2",
-    "talkerName" : "대담자의 성명2",
-    "favorite" : true,
-    "category" : "INTERN",
-    "createdAt" : "2024-11-18T19:55:54.882264",
-    "updatedAt" : "2024-11-18T19:55:54.882265"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

잡페어 인터뷰 ID

content[].title

String

true

잡페어 인터뷰 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

잡페어 인터뷰 연도

content[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

content[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

content[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

content[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

content[].createdAt

String

true

잡페어 인터뷰 생성일

content[].updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 단건 조회 (GET /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
GET /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

조회할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 339
-
-{
-  "id" : 1,
-  "title" : "잡페어 인터뷰의 제목",
-  "youtubeId" : "유튜브 고유 ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자의 소속",
-  "talkerName" : "대담자의 성명",
-  "favorite" : false,
-  "category" : "INTERN",
-  "createdAt" : "2024-11-18T19:55:54.921774",
-  "updatedAt" : "2024-11-18T19:55:54.921776"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 수정 (PUT /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
PUT /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 217
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 제목",
-  "youtubeId" : "수정된 유튜브 ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정된 대담자 소속",
-  "talkerName" : "수정된 대담자 성명",
-  "category" : "INTERN"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

수정할 잡페어 인터뷰의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 314
-
-{
-  "id" : 1,
-  "title" : "수정된 제목",
-  "youtubeId" : "수정된 유튜브 ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정된 대담자 소속",
-  "talkerName" : "수정된 대담자 성명",
-  "category" : "INTERN",
-  "createdAt" : "2021-01-01T12:00:00",
-  "updatedAt" : "2024-11-18T19:55:54.788456"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

-
-
-
-
-
-

잡페어 인터뷰 삭제 (DELETE /jobInterviews/{jobInterviewId})

-
-
-
-

HTTP request

-
-
-
DELETE /jobInterviews/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

삭제할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

잡페어 인터뷰 관심 등록 (POST /jobInterviews/{jobInterviews}/favorite)

-
-
-
-

HTTP request

-
-
-
POST /jobInterviews/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에 추가할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

잡페어 인터뷰 관심 삭제 (DELETE /jobInterviews/{jobInterviews}/favorite)

-
-
-
-

HTTP request

-
-
-
DELETE /jobInterviews/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에서 삭제할 잡페어 인터뷰의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

대담 영상 API

-
-
-
-

대담 영상 생성 (POST /talks)

-
-
-
-

HTTP request

-
-
-
POST /talks HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 361
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 465
-
-{
-  "id" : 1,
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-11-18T19:55:56.391775",
-  "updatedAt" : "2024-11-18T19:55:56.391777"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 리스트 조회 (GET /talks)

-
-
-
-

HTTP request

-
-
-
GET /talks HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 대담 영상의 연도

title

false

찾고자 하는 대담 영상의 제목 일부

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 999
-
-{
-  "totalPages" : 1,
-  "totalElements" : 1,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "제목",
-    "youtubeId" : "유튜브 고유ID",
-    "year" : 2024,
-    "talkerBelonging" : "대담자 소속",
-    "talkerName" : "대담자 성명",
-    "favorite" : true,
-    "quiz" : [ {
-      "question" : "질문1",
-      "answer" : 0,
-      "options" : [ "선지1", "선지2" ]
-    }, {
-      "question" : "질문2",
-      "answer" : 0,
-      "options" : [ "선지1", "선지2" ]
-    } ],
-    "createdAt" : "2024-11-18T19:55:56.416019",
-    "updatedAt" : "2024-11-18T19:55:56.416023"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 1,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

대담 영상 ID

content[].title

String

true

대담 영상 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

대담 영상 연도

content[].talkerBelonging

String

true

대담자의 소속된 직장/단체

content[].talkerName

String

true

대담자의 성명

content[].favorite

Boolean

true

관심한 대담영상의 여부

content[].quiz

Array

false

퀴즈 데이터, 없는경우 null

content[].quiz[].question

String

false

퀴즈 1개의 질문

content[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

content[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

content[].createdAt

String

true

대담 영상 생성일

content[].updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 단건 조회 (GET /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
GET /talks/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

조회할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 486
-
-{
-  "id" : 1,
-  "title" : "제목",
-  "youtubeId" : "유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "대담자 소속",
-  "talkerName" : "대담자 성명",
-  "favorite" : true,
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ],
-  "createdAt" : "2024-11-18T19:55:56.373952",
-  "updatedAt" : "2024-11-18T19:55:56.373955"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

favorite

Boolean

true

관심한 대담영상의 여부

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 수정 (PUT /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
PUT /talks/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 461
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정한 제목",
-  "youtubeId" : "수정한 유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정한 대담자 소속",
-  "talkerName" : "수정한 대담자 성명",
-  "quiz" : [ {
-    "question" : "수정한 질문1",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  }, {
-    "question" : "수정한 질문2",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  } ]
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

수정할 대담 영상의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 565
-
-{
-  "id" : 1,
-  "title" : "수정한 제목",
-  "youtubeId" : "수정한 유튜브 고유ID",
-  "year" : 2024,
-  "talkerBelonging" : "수정한 대담자 소속",
-  "talkerName" : "수정한 대담자 성명",
-  "quiz" : [ {
-    "question" : "수정한 질문1",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  }, {
-    "question" : "수정한 질문2",
-    "answer" : 0,
-    "options" : [ "수정한 선지1", "수정한 선지2" ]
-  } ],
-  "createdAt" : "2024-11-18T19:55:56.226099",
-  "updatedAt" : "2024-11-18T19:55:56.226104"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

-
-
-
-
-
-

대담 영상 삭제 (DELETE /talks/{talkId})

-
-
-
-

HTTP request

-
-
-
DELETE /talks/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}
ParameterDescription

talkId

삭제할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

대담 영상의 퀴즈 조회 (GET /talks/{talkId}/quiz)

-
-
-
-

HTTP request

-
-
-
GET /talks/1/quiz HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 가져올 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 205
-
-{
-  "quiz" : [ {
-    "question" : "질문1",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  }, {
-    "question" : "질문2",
-    "answer" : 0,
-    "options" : [ "선지1", "선지2" ]
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

-
-
-
-
-
-

대담 영상의 퀴즈 결과 제출 (POST /talks/{talkId}/quiz)

-
-
-
-

HTTP request

-
-
-
POST /talks/1/quiz HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Content-Length: 47
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "result" : {
-    "0" : 0,
-    "1" : 1
-  }
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 제출할 대담 영상의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

result

Object

true

퀴즈를 푼 결과

result.*

Number

true

퀴즈 각 문제별 정답 인덱스, key는 문제 번호

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 40
-
-{
-  "success" : true,
-  "tryCount" : 1
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

success

Boolean

true

퀴즈 성공 여부

tryCount

Number

true

퀴즈 시도 횟수

-
-
-
-
-
-

대담 영상의 관심 등록 (POST /talks/{talkId}/favorite)

-
-
-
-

HTTP request

-
-
-
POST /talks/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에 추가할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

대담 영상의 관심 삭제 (DELETE /talks/{talkId}/favorite)

-
-
-
-

HTTP request

-
-
-
DELETE /talks/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에서 삭제할 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

유저의 퀴즈 제출 기록 조회 (GET /talks/{talkId/quiz/submit)

-
-
-
-

HTTP request

-
-
-
GET /talks/1/quiz/submit HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /talks/{talkId}/quiz/submit
ParameterDescription

talkId

퀴즈가 연결된 대담 영상의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 41
-
-{
-  "success" : false,
-  "tryCount" : 2
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

tryCount

Number

true

시도한 횟수

success

Boolean

true

퀴즈 성공 여부

-
-
-
-
-
-
-
-

퀴즈 결과 API

-
-
-
-

퀴즈 결과 조회 (GET /quizzes/result)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 739
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "userId" : 1,
-    "name" : "name",
-    "phone" : "010-1111-1111",
-    "email" : "scg@scg.skku.ac.kr",
-    "successCount" : 3
-  }, {
-    "userId" : 2,
-    "name" : "name2",
-    "phone" : "010-0000-1234",
-    "email" : "iam@2tle.io",
-    "successCount" : 1
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

-
-
-
-
-
-

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result/excel HTTP/1.1
-Content-Type: application/octet-stream;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/octet-stream;charset=UTF-8
-Content-Disposition: attachment; filename=excel.xlsx
-Content-Length: 2821
-
-PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
-�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
-�0D�~EȽ��ADҔ���A? ��6�lB�J?ߜ���0���ͯ�)�@��׍H6���V>��$;�SC
-;̢(�ra�g�l�&�e��L!y�%��49��`_���4G���F��J��Wg
�GS�b����
-~�PK�|wؑ�PK-docProps/core.xmlm��J�0F_%依����.�,��(ޅdl��I��ֵۛ�
-�H�;s�L�=ꁼ��55eyA	iUoښ>vن��Qb�kj,�6�t\Z�{o��c Ic���]��١!O�I��Z���-8!_E�P�9h�B�(`fn1ғR�E���0�P��X�����u��aN����1W3�&b�t{s?��f��D�T'5�EDE����6�<�.�;ڔEy�1��́|�N繂_����n}s��!��]O�R��Ϛ�OPK���x�PK-xl/sharedStrings.xml=�A� ツ��.z0Ɣ�`������,�����q2��o�ԇ���N�E��x5�z>�W���(R�K���^4{�����ŀ�5��y�V����y�m�XV�\�.�j����
8�PKp��&x�PK-
xl/styles.xml���n� ��>bop2TQ��P)U�RWb�6*�����ӤS�Nw�s���3ߍ֐���t��(l��������ҝx�!N=@$ɀ��}��3c���ʰr`:i��2��w,�
-�d
�T��R#�voc �;c�iE��Û��E<|��4Iɣ����F#��n���B�z�F���y�j3y��yҥ�jt>���2��Lژ�!6��2F�OY��4@M�!���G��������1�t��y��p��"	n����u�����a�ΦDi�9�&#��%I��9��}���cK��T��$?������`J������7���o��f��M|PK�1X@C�PK-xl/workbook.xmlM���0��>E�wi1ƨ����z/�HmI�_j��qf��)ʧٌ��w�LC��ָ��[u��T�b�a��؊;���8�9��G�)��5�|�:�2<8MuK=b�#�	q�V�u
����K��H\)�\�&�t͌��%���?��B��T�PK	���PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
����s����;[�E8D&a��h@-
��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-�|wؑ��docProps/app.xmlPK-���x�qdocProps/core.xmlPK-p��&x��xl/sharedStrings.xmlPK-�1X@C�
xl/styles.xmlPK-	���xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
-
-
-
-
-
-
-
-
-
-

공지 사항 API

-
-
-

공지 사항 생성 (POST /notices)

-
-
-
-

HTTP request

-
-
-
POST /notices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 121
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "공지 사항 제목",
-  "content" : "공지 사항 내용",
-  "fixed" : true,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 960
-
-{
-  "id" : 1,
-  "title" : "공지 사항 제목",
-  "content" : "공지 사항 내용",
-  "hitCount" : 0,
-  "fixed" : true,
-  "createdAt" : "2024-11-18T19:55:52.009219",
-  "updatedAt" : "2024-11-18T19:55:52.009221",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:52.00921",
-    "updatedAt" : "2024-11-18T19:55:52.009213"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:52.009214",
-    "updatedAt" : "2024-11-18T19:55:52.009215"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:52.009218",
-    "updatedAt" : "2024-11-18T19:55:52.009218"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 리스트 조회 (GET /notices)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP request

-
-
-
GET /notices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 854
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "공지 사항 1",
-    "hitCount" : 10,
-    "fixed" : true,
-    "createdAt" : "2024-11-18T19:55:51.877105",
-    "updatedAt" : "2024-11-18T19:55:51.877107"
-  }, {
-    "id" : 2,
-    "title" : "공지 사항 2",
-    "hitCount" : 10,
-    "fixed" : false,
-    "createdAt" : "2024-11-18T19:55:51.877121",
-    "updatedAt" : "2024-11-18T19:55:51.877121"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

공지 사항 ID

content[].title

String

true

공지 사항 제목

content[].hitCount

Number

true

공지 사항 조회수

content[].fixed

Boolean

true

공지 사항 고정 여부

content[].createdAt

String

true

공지 사항 생성일

content[].updatedAt

String

true

공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

공지 사항 조회 (GET /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

조회할 공지 사항 ID

-
-
-

HTTP request

-
-
-
GET /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 947
-
-{
-  "id" : 1,
-  "title" : "공지 사항 제목",
-  "content" : "content",
-  "hitCount" : 10,
-  "fixed" : true,
-  "createdAt" : "2024-11-18T19:55:51.982112",
-  "updatedAt" : "2024-11-18T19:55:51.982112",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:51.982104",
-    "updatedAt" : "2024-11-18T19:55:51.982107"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:51.982108",
-    "updatedAt" : "2024-11-18T19:55:51.982109"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:51.98211",
-    "updatedAt" : "2024-11-18T19:55:51.98211"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 수정 (PUT /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

수정할 공지 사항 ID

-
-
-

HTTP request

-
-
-
PUT /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 142
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 공지 사항 제목",
-  "content" : "수정된 공지 사항 내용",
-  "fixed" : false,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 955
-
-{
-  "id" : 1,
-  "title" : "수정된 공지 사항 제목",
-  "content" : "수정된 공지 사항 내용",
-  "hitCount" : 10,
-  "fixed" : false,
-  "createdAt" : "2024-01-01T12:00:00",
-  "updatedAt" : "2024-11-18T19:55:51.921969",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-18T19:55:51.921919"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-18T19:55:51.921926"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-18T19:55:51.921929"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

공지 사항 삭제 (DELETE /notices/{noticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

삭제할 공지 사항 ID

-
-
-

HTTP request

-
-
-
DELETE /notices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

이벤트 공지 사항 API

-
-
-

이벤트 공지 사항 생성 (POST /eventNotices)

-
-
-
-

HTTP request

-
-
-
POST /eventNotices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 141
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "이벤트 공지 사항 내용",
-  "fixed" : true,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 980
-
-{
-  "id" : 1,
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "이벤트 공지 사항 내용",
-  "hitCount" : 0,
-  "fixed" : true,
-  "createdAt" : "2024-11-18T19:55:47.17606",
-  "updatedAt" : "2024-11-18T19:55:47.176061",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:47.176039",
-    "updatedAt" : "2024-11-18T19:55:47.176047"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:47.176051",
-    "updatedAt" : "2024-11-18T19:55:47.176053"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:47.176055",
-    "updatedAt" : "2024-11-18T19:55:47.176057"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 리스트 조회 (GET /eventNotices)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 이벤트 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP request

-
-
-
GET /eventNotices HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 873
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "이벤트 공지 사항 1",
-    "hitCount" : 10,
-    "fixed" : true,
-    "createdAt" : "2024-11-18T19:55:47.21455",
-    "updatedAt" : "2024-11-18T19:55:47.214557"
-  }, {
-    "id" : 2,
-    "title" : "이벤트 공지 사항 2",
-    "hitCount" : 10,
-    "fixed" : false,
-    "createdAt" : "2024-11-18T19:55:47.214576",
-    "updatedAt" : "2024-11-18T19:55:47.214578"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

이벤트 공지 사항 ID

content[].title

String

true

이벤트 공지 사항 제목

content[].hitCount

Number

true

이벤트 공지 사항 조회수

content[].fixed

Boolean

true

이벤트 공지 사항 고정 여부

content[].createdAt

String

true

이벤트 공지 사항 생성일

content[].updatedAt

String

true

이벤트 공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

이벤트 공지 사항 조회 (GET /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

조회할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
GET /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 959
-
-{
-  "id" : 1,
-  "title" : "이벤트 공지 사항 제목",
-  "content" : "content",
-  "hitCount" : 10,
-  "fixed" : true,
-  "createdAt" : "2024-11-18T19:55:47.117036",
-  "updatedAt" : "2024-11-18T19:55:47.117038",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:47.117012",
-    "updatedAt" : "2024-11-18T19:55:47.117022"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:47.117026",
-    "updatedAt" : "2024-11-18T19:55:47.117029"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:47.117032",
-    "updatedAt" : "2024-11-18T19:55:47.117034"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 수정 (PUT /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

수정할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
PUT /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 162
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 이벤트 공지 사항 제목",
-  "content" : "수정된 이벤트 공지 사항 내용",
-  "fixed" : false,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 975
-
-{
-  "id" : 1,
-  "title" : "수정된 이벤트 공지 사항 제목",
-  "content" : "수정된 이벤트 공지 사항 내용",
-  "hitCount" : 10,
-  "fixed" : false,
-  "createdAt" : "2024-01-01T12:00:00",
-  "updatedAt" : "2024-11-18T19:55:47.026018",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "예시 첨부 파일 1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-18T19:55:47.025945"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "예시 첨부 파일 2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-18T19:55:47.025971"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "예시 첨부 파일 3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-01-01T12:00:00",
-    "updatedAt" : "2024-11-18T19:55:47.025978"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

-
-
-
-
-
-

이벤트 공지 사항 삭제 (DELETE /eventNotices/{eventNoticeId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

삭제할 이벤트 공지 사항 ID

-
-
-

HTTP request

-
-
-
DELETE /eventNotices/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

이벤트 기간 API

-
-
-
-

이벤트 기간 생성 (POST /eventPeriods)

-
-
-
-

HTTP request

-
-
-
POST /eventPeriods HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 84
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "start" : "2024-11-18T19:55:47.738113",
-  "end" : "2024-11-28T19:55:47.738129"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 205
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-18T19:55:47.738137",
-  "end" : "2024-11-28T19:55:47.738139",
-  "createdAt" : "2024-11-18T19:55:47.738142",
-  "updatedAt" : "2024-11-18T19:55:47.738144"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-

올해의 이벤트 기간 조회 (GET /eventPeriod)

-
-
-
-

HTTP request

-
-
-
GET /eventPeriod HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 204
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-18T19:55:47.71465",
-  "end" : "2024-11-28T19:55:47.714653",
-  "createdAt" : "2024-11-18T19:55:47.714657",
-  "updatedAt" : "2024-11-18T19:55:47.714659"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-

전체 이벤트 기간 리스트 조회 (GET /eventPeriods)

-
-
-
-

HTTP request

-
-
-
GET /eventPeriods HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 414
-
-[ {
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-18T19:55:47.776458",
-  "end" : "2024-11-28T19:55:47.77647",
-  "createdAt" : "2024-11-18T19:55:47.776475",
-  "updatedAt" : "2024-11-18T19:55:47.776477"
-}, {
-  "id" : 2,
-  "year" : 2025,
-  "start" : "2024-11-18T19:55:47.77648",
-  "end" : "2024-11-28T19:55:47.776481",
-  "createdAt" : "2024-11-18T19:55:47.776483",
-  "updatedAt" : "2024-11-18T19:55:47.776485"
-} ]
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

[].id

Number

true

이벤트 기간 ID

[].year

Number

true

이벤트 연도

[].start

String

true

이벤트 시작 일시

[].end

String

true

이벤트 종료 일시

[].createdAt

String

true

생성일

[].updatedAt

String

true

변경일

-
-
-
-
-
-

올해의 이벤트 기간 업데이트 (PUT /eventPeriod)

-
-
-
-

HTTP request

-
-
-
PUT /eventPeriod HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 84
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "start" : "2024-11-18T19:55:47.657836",
-  "end" : "2024-11-28T19:55:47.657846"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 205
-
-{
-  "id" : 1,
-  "year" : 2024,
-  "start" : "2024-11-18T19:55:47.657891",
-  "end" : "2024-11-28T19:55:47.657893",
-  "createdAt" : "2024-11-18T19:55:47.657895",
-  "updatedAt" : "2024-11-18T19:55:47.657897"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

-
-
-
-
-
-
-
-

갤러리 API

-
-
-
-

갤러리 게시글 생성 (POST /galleries)

-
-
-
-

HTTP request

-
-
-
POST /galleries HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 96
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 891
-
-{
-  "id" : 1,
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "hitCount" : 1,
-  "createdAt" : "2024-11-18T19:55:49.947753",
-  "updatedAt" : "2024-11-18T19:55:49.947755",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:49.947735",
-    "updatedAt" : "2024-11-18T19:55:49.947743"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:49.947746",
-    "updatedAt" : "2024-11-18T19:55:49.947747"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:49.947749",
-    "updatedAt" : "2024-11-18T19:55:49.947751"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

갤러리 게시글 목록 조회 (GET /galleries)

-
-
-
-

HTTP request

-
-
-
GET /galleries?year=2024&month=4 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

연도

month

false

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1234
-
-{
-  "totalPages" : 1,
-  "totalElements" : 1,
-  "size" : 1,
-  "content" : [ {
-    "id" : 1,
-    "title" : "새내기 배움터",
-    "year" : 2024,
-    "month" : 4,
-    "hitCount" : 0,
-    "createdAt" : "2024-11-18T19:55:49.866951",
-    "updatedAt" : "2024-11-18T19:55:49.866952",
-    "files" : [ {
-      "id" : 1,
-      "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-      "name" : "사진1.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-11-18T19:55:49.866926",
-      "updatedAt" : "2024-11-18T19:55:49.866935"
-    }, {
-      "id" : 2,
-      "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-      "name" : "사진2.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-11-18T19:55:49.866938",
-      "updatedAt" : "2024-11-18T19:55:49.86694"
-    }, {
-      "id" : 3,
-      "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-      "name" : "사진3.jpg",
-      "mimeType" : "image/jpeg",
-      "createdAt" : "2024-11-18T19:55:49.866942",
-      "updatedAt" : "2024-11-18T19:55:49.866944"
-    } ]
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : "INSTANCE",
-  "numberOfElements" : 1,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

totalElements

Number

true

전체 데이터 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지당 데이터 수

content

Array

true

갤러리 목록

content[].id

Number

true

갤러리 ID

content[].title

String

true

갤러리 제목

content[].year

Number

true

갤러리 연도

content[].month

Number

true

갤러리 월

content[].hitCount

Number

true

갤러리 조회수

content[].createdAt

String

true

갤러리 생성일

content[].updatedAt

String

true

갤러리 수정일

content[].files

Array

true

파일 목록

content[].files[].id

Number

true

파일 ID

content[].files[].uuid

String

true

파일 UUID

content[].files[].name

String

true

파일 이름

content[].files[].mimeType

String

true

파일 MIME 타입

content[].files[].createdAt

String

true

파일 생성일

content[].files[].updatedAt

String

true

파일 수정일

number

Number

true

현재 페이지 번호

sort.empty

Boolean

true

정렬 정보

sort.sorted

Boolean

true

정렬 정보

sort.unsorted

Boolean

true

정렬 정보

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

numberOfElements

Number

true

현재 페이지의 데이터 수

empty

Boolean

true

빈 페이지 여부

-
-
-
-
-
-

갤러리 게시글 조회 (GET /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
GET /galleries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

조회할 갤러리 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 890
-
-{
-  "id" : 1,
-  "title" : "새내기 배움터",
-  "year" : 2024,
-  "month" : 4,
-  "hitCount" : 1,
-  "createdAt" : "2024-11-18T19:55:49.918362",
-  "updatedAt" : "2024-11-18T19:55:49.918364",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:49.918345",
-    "updatedAt" : "2024-11-18T19:55:49.918351"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:49.918355",
-    "updatedAt" : "2024-11-18T19:55:49.918356"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:49.918358",
-    "updatedAt" : "2024-11-18T19:55:49.91836"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-

갤러리 게시글 삭제 (DELETE /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
DELETE /galleries/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

삭제할 갤러리 ID

-
-
-
-
-
-

갤러리 게시글 수정 (PUT /galleries/{galleryId})

-
-
-
-

HTTP request

-
-
-
PUT /galleries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 93
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 제목",
-  "year" : 2024,
-  "month" : 5,
-  "fileIds" : [ 1, 2, 3 ]
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

수정할 갤러리 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 887
-
-{
-  "id" : 1,
-  "title" : "수정된 제목",
-  "year" : 2024,
-  "month" : 5,
-  "hitCount" : 1,
-  "createdAt" : "2024-11-18T19:55:49.714135",
-  "updatedAt" : "2024-11-18T19:55:49.714137",
-  "files" : [ {
-    "id" : 1,
-    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
-    "name" : "사진1.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:49.714027",
-    "updatedAt" : "2024-11-18T19:55:49.714047"
-  }, {
-    "id" : 2,
-    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
-    "name" : "사진2.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:49.714057",
-    "updatedAt" : "2024-11-18T19:55:49.71406"
-  }, {
-    "id" : 3,
-    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
-    "name" : "사진3.jpg",
-    "mimeType" : "image/jpeg",
-    "createdAt" : "2024-11-18T19:55:49.714063",
-    "updatedAt" : "2024-11-18T19:55:49.714065"
-  } ]
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

-
-
-
-
-
-
-
-

가입 신청 관리 API

-
-
-
-

가입 신청 리스트 조회 (GET /applications)

-
-
-
-

HTTP request

-
-
-
GET /applications HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 1178
-
-{
-  "totalPages" : 1,
-  "totalElements" : 3,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "name" : "김영한",
-    "division" : "배민",
-    "position" : null,
-    "userType" : "INACTIVE_COMPANY",
-    "createdAt" : "2024-11-18T19:55:54.259219",
-    "updatedAt" : "2024-11-18T19:55:54.259222"
-  }, {
-    "id" : 2,
-    "name" : "김교수",
-    "division" : "솦융대",
-    "position" : "교수",
-    "userType" : "INACTIVE_PROFESSOR",
-    "createdAt" : "2024-11-18T19:55:54.259235",
-    "updatedAt" : "2024-11-18T19:55:54.259235"
-  }, {
-    "id" : 3,
-    "name" : "박교수",
-    "division" : "정통대",
-    "position" : "교수",
-    "userType" : "INACTIVE_PROFESSOR",
-    "createdAt" : "2024-11-18T19:55:54.259245",
-    "updatedAt" : "2024-11-18T19:55:54.259246"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 3,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

가입 신청 ID

content[].name

String

true

가입 신청자 이름

content[].division

String

false

소속

content[].position

String

false

직책

content[].userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

content[].createdAt

String

true

가입 신청 정보 생성일

content[].updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

가입 신청자 상세 정보 조회 (GET /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
GET /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 272
-
-{
-  "id" : 1,
-  "name" : "김영한",
-  "phone" : "010-1111-2222",
-  "email" : "email@gmail.com",
-  "division" : "배민",
-  "position" : "CEO",
-  "userType" : "INACTIVE_COMPANY",
-  "createdAt" : "2024-11-18T19:55:54.344894",
-  "updatedAt" : "2024-11-18T19:55:54.344897"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

교수/기업 가입 허가 (PATCH /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
PATCH /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 263
-
-{
-  "id" : 1,
-  "name" : "김영한",
-  "phone" : "010-1111-2222",
-  "email" : "email@gmail.com",
-  "division" : "배민",
-  "position" : "CEO",
-  "userType" : "COMPANY",
-  "createdAt" : "2024-11-18T19:55:54.328644",
-  "updatedAt" : "2024-11-18T19:55:54.328648"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [PROFESSOR, COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

-
-
-
-
-
-

교수/기업 가입 거절 (DELETE /applications/{applicationId})

-
-
-
-

HTTP request

-
-
-
DELETE /applications/1 HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

프로젝트 문의 사항 API

-
-
-
-

프로젝트 문의 사항 생성 (POST /projects/{projectId}/inquiry)

-
-
-
-

HTTP request

-
-
-
POST /projects/1/inquiry HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Content-Length: 102
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "프로젝트 문의 사항 제목",
-  "content" : "프로젝트 문의 사항 내용"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 305
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "문의 사항 제목",
-  "content" : "문의 사항 내용",
-  "replied" : false,
-  "createdAt" : "2024-11-18T19:55:50.786517",
-  "updatedAt" : "2024-11-18T19:55:50.786521"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

replied

Boolean

true

답변 등록 여부

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 리스트 조회 (GET /inquiries)

-
-
-
-

HTTP request

-
-
-
GET /inquiries HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 822
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "authorName" : "프로젝트 문의 사항 제목",
-    "title" : "프로젝트 문의 사항 내용",
-    "createdAt" : "2024-11-18T19:55:50.66564"
-  }, {
-    "id" : 2,
-    "authorName" : "프로젝트 문의 사항 제목",
-    "title" : "프로젝트 문의 사항 내용",
-    "createdAt" : "2024-11-18T19:55:50.665696"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

문의 사항 ID

content[].authorName

String

true

문의 작성자 이름

content[].title

String

true

문의 사항 제목

content[].createdAt

String

true

문의 사항 생성 시간

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-

프로젝트 문의 사항 단건 조회 (GET /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
GET /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

조회할 문의 사항 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 305
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "문의 사항 제목",
-  "content" : "문의 사항 내용",
-  "replied" : false,
-  "createdAt" : "2024-11-18T19:55:50.749487",
-  "updatedAt" : "2024-11-18T19:55:50.749493"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

replied

Boolean

true

답변 등록 여부

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 수정 (PUT /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
PUT /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Content-Length: 122
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 프로젝트 문의 사항 제목",
-  "content" : "수정된 프로젝트 문의 사항 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

수정할 문의 사항 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 325
-
-{
-  "id" : 1,
-  "authorName" : "문의 작성자 이름",
-  "projectId" : 1,
-  "projectName" : "프로젝트 이름",
-  "title" : "수정된 문의 사항 제목",
-  "content" : "수정된 문의 사항 내용",
-  "replied" : false,
-  "createdAt" : "2024-11-18T19:55:50.848221",
-  "updatedAt" : "2024-11-18T19:55:50.848224"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

수정된 문의 사항 제목

content

String

true

수정된 문의 사항 내용

replied

Boolean

true

답변 등록 여부

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

-
-
-
-
-
-
-

프로젝트 문의 사항 삭제 (DELETE /inquiries/{inquiryId})

-
-
-
-

HTTP request

-
-
-
DELETE /inquiries/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

삭제할 문의 사항 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-

프로젝트 문의 사항 답변 (POST /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
POST /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 76
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

답변할 문의 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 88
-
-{
-  "id" : 1,
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 조회 (GET /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
GET /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: company_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

조회할 문의 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 88
-
-{
-  "id" : 1,
-  "title" : "문의 답변 제목",
-  "content" : "문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 수정 (PUT /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
PUT /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 96
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "수정된 문의 답변 제목",
-  "content" : "수정된 문의 답변 내용"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

수정할 답변 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 108
-
-{
-  "id" : 1,
-  "title" : "수정된 문의 답변 제목",
-  "content" : "수정된 문의 답변 내용"
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

수정된 답변 제목

content

String

true

수정된 답변 내용

-
-
-
-
-
-
-

프로젝트 문의 사항 답변 삭제 (DELETE /inquiries/{inquiryId}/reply)

-
-
-
-

HTTP request

-
-
-
DELETE /inquiries/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

삭제할 답변 ID

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
-

프로젝트 API

-
-
-
-

프로젝트 조회 (GET /projects)

-
-
-
-

HTTP request

-
-
-
GET /projects HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1759
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "thumbnailInfo" : {
-      "id" : 1,
-      "uuid" : "썸네일 uuid 1",
-      "name" : "썸네일 파일 이름 1",
-      "mimeType" : "썸네일 mime 타입 1"
-    },
-    "projectName" : "프로젝트 이름 1",
-    "teamName" : "팀 이름 1",
-    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-    "professorNames" : [ "교수 이름 1" ],
-    "projectType" : "STARTUP",
-    "projectCategory" : "BIG_DATA_ANALYSIS",
-    "awardStatus" : "FIRST",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : false,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  }, {
-    "id" : 2,
-    "thumbnailInfo" : {
-      "id" : 2,
-      "uuid" : "썸네일 uuid 2",
-      "name" : "썸네일 파일 이름 2",
-      "mimeType" : "썸네일 mime 타입 2"
-    },
-    "projectName" : "프로젝트 이름 2",
-    "teamName" : "팀 이름 2",
-    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-    "professorNames" : [ "교수 이름 2" ],
-    "projectType" : "LAB",
-    "projectCategory" : "AI_MACHINE_LEARNING",
-    "awardStatus" : "SECOND",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : true,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

title

false

프로젝트 이름

year

false

프로젝트 년도

category

false

프로젝트 카테고리

type

false

프로젝트 타입

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

프로젝트 생성 (POST /projects)

-
-
-
-

HTTP request

-
-
-
POST /projects HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 535
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "thumbnailId" : 1,
-  "posterId" : 2,
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2021,
-  "awardStatus" : "NONE",
-  "members" : [ {
-    "name" : "학생 이름 1",
-    "role" : "STUDENT"
-  }, {
-    "name" : "학생 이름 2",
-    "role" : "STUDENT"
-  }, {
-    "name" : "교수 이름 1",
-    "role" : "PROFESSOR"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1481
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 2,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 2,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-  "professorNames" : [ "교수 이름 1" ],
-  "likeCount" : 0,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-18T19:55:52.832829",
-    "updatedAt" : "2024-11-18T19:55:52.832841"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-18T19:55:52.832843",
-    "updatedAt" : "2024-11-18T19:55:52.832844"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-18T19:55:52.832844",
-    "updatedAt" : "2024-11-18T19:55:52.832845"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-

프로젝트 엑셀 일괄등록 (POST /projects/excel)

-
-
-
-

HTTP request

-
-
-
POST /projects/excel HTTP/1.1
-Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=excel; filename=project_upload_form.xlsx
-Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
-
-[BINARY DATA]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=thumbnails; filename=thumbnails.json
-Content-Type: application/json
-
-[{"id":1,"uuid":"c7fabd9b-eea0-48c9-b94d-8fab318b2c88","name":"썸네일1.png","mimeType":"image/png","createdAt":"2024-11-18T19:55:53.698466","updatedAt":"2024-11-18T19:55:53.698477"},{"id":1,"uuid":"989ca4f3-9b7b-4784-b842-64b2314903ca","name":"썸네일2.png","mimeType":"image/png","createdAt":"2024-11-18T19:55:53.698519","updatedAt":"2024-11-18T19:55:53.69852"}]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
-Content-Disposition: form-data; name=posters; filename=thumbnails.json
-Content-Type: application/json
-
-[{"id":1,"uuid":"cdf4712a-9d35-4c99-9ad3-e97036c7028c","name":"포스터1.png","mimeType":"image/png","createdAt":"2024-11-18T19:55:53.698555","updatedAt":"2024-11-18T19:55:53.698556"},{"id":1,"uuid":"eb4efbf9-9539-466b-a349-b56970cfad1b","name":"포스터2.png","mimeType":"image/png","createdAt":"2024-11-18T19:55:53.698561","updatedAt":"2024-11-18T19:55:53.698562"}]
---6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
-
-
-
-
-

Request parts

- ---- - - - - - - - - - - - - - - - - - - - - -
PartDescription

excel

업로드할 Excel 파일

thumbnails

썸네일 등록 응답 JSON 파일

posters

포스터 등록 응답 JSON 파일

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 24
-
-{
-  "successCount" : 2
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

successCount

Number

true

생성에 성공한 프로젝트 개수

-
-
-
-
-
-

프로젝트 조회 (GET /projects/{projectId})

-
-
-
-

HTTP request

-
-
-
GET /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1481
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 2,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 2,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "STARTUP",
-  "projectCategory" : "BIG_DATA_ANALYSIS",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-  "professorNames" : [ "교수 이름 1" ],
-  "likeCount" : 0,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-18T19:55:52.750773",
-    "updatedAt" : "2024-11-18T19:55:52.750777"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-18T19:55:52.750782",
-    "updatedAt" : "2024-11-18T19:55:52.750783"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-18T19:55:52.750784",
-    "updatedAt" : "2024-11-18T19:55:52.750784"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-

프로젝트 수정 (PUT /projects/{projectId})

-
-
-
-

HTTP request

-
-
-
PUT /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 530
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "thumbnailId" : 3,
-  "posterId" : 4,
-  "projectName" : "프로젝트 이름",
-  "projectType" : "LAB",
-  "projectCategory" : "COMPUTER_VISION",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "members" : [ {
-    "name" : "학생 이름 3",
-    "role" : "STUDENT"
-  }, {
-    "name" : "학생 이름 4",
-    "role" : "STUDENT"
-  }, {
-    "name" : "교수 이름 2",
-    "role" : "PROFESSOR"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1477
-
-{
-  "id" : 1,
-  "thumbnailInfo" : {
-    "id" : 3,
-    "uuid" : "썸네일 uuid",
-    "name" : "썸네일 파일 이름",
-    "mimeType" : "썸네일 mime 타입"
-  },
-  "posterInfo" : {
-    "id" : 4,
-    "uuid" : "포스터 uuid",
-    "name" : "포트서 파일 이름",
-    "mimeType" : "포스터 mime 타입"
-  },
-  "projectName" : "프로젝트 이름",
-  "projectType" : "LAB",
-  "projectCategory" : "COMPUTER_VISION",
-  "teamName" : "팀 이름",
-  "youtubeId" : "유튜브 ID",
-  "year" : 2024,
-  "awardStatus" : "FIRST",
-  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-  "professorNames" : [ "교수 이름 2" ],
-  "likeCount" : 100,
-  "like" : false,
-  "bookMark" : false,
-  "comments" : [ {
-    "id" : 1,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : true,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-18T19:55:52.387676",
-    "updatedAt" : "2024-11-18T19:55:52.387679"
-  }, {
-    "id" : 2,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-18T19:55:52.387684",
-    "updatedAt" : "2024-11-18T19:55:52.387684"
-  }, {
-    "id" : 3,
-    "projectId" : 1,
-    "userName" : "유저 이름",
-    "isAnonymous" : false,
-    "content" : "댓글 내용",
-    "createdAt" : "2024-11-18T19:55:52.387687",
-    "updatedAt" : "2024-11-18T19:55:52.387687"
-  } ],
-  "url" : "프로젝트 URL",
-  "description" : "프로젝트 설명"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

-
-
-
-
-
-

프로젝트 삭제 (DELETE /projects/{projectId})

-
-
-
-

HTTP request

-
-
-
DELETE /projects/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-

관심 프로젝트 등록 (POST /projects/{projectId}/favorite)

-
-
-
-

HTTP request

-
-
-
POST /projects/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-

관심 프로젝트 삭제 (DELETE /projects/{projectId}/favorite)

-
-
-
-

HTTP request

-
-
-
DELETE /projects/1/favorite HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-

프로젝트 좋아요 등록 (POST /projects/{projectId}/like)

-
-
-
-

HTTP request

-
-
-
POST /projects/1/like HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-

프로젝트 좋아요 삭제 (DELETE /projects/{projectId}/like)

-
-
-
-

HTTP request

-
-
-
DELETE /projects/1/like HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

-
-
-
-
-
-

프로젝트 댓글 등록 (POST /projects/{projectId}/comment)

-
-
-
-

HTTP request

-
-
-
POST /projects/1/comment HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Content-Length: 57
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "content" : "댓글 내용",
-  "isAnonymous" : true
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 212
-
-{
-  "id" : 1,
-  "projectId" : 1,
-  "userName" : "유저 이름",
-  "isAnonymous" : true,
-  "content" : "댓글 내용",
-  "createdAt" : "2024-11-18T19:55:52.720346",
-  "updatedAt" : "2024-11-18T19:55:52.720349"
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /projects/{projectId}/comment
ParameterDescription

projectId

프로젝트 ID

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content

String

true

댓글 내용

isAnonymous

Boolean

true

익명 여부

-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

id

Number

true

댓글 ID

projectId

Number

true

프로젝트 ID

userName

String

true

유저 이름

isAnonymous

Boolean

true

익명 여부

content

String

true

댓글 내용

createdAt

String

true

생성 시간

updatedAt

String

true

수정 시간

-
-
-
-
-
-

프로젝트 댓글 삭제 (DELETE /projects/{projectId}/comment)

-
-
-
-

HTTP request

-
-
-
DELETE /projects/1/comment/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: all_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - - - - - -
Table 1. /projects/{projectId}/comment/{commentId}
ParameterDescription

projectId

프로젝트 ID

commentId

댓글 ID

-
-
-
-
-
-

수상 프로젝트 조회 (GET /projects/award?year={year})

-
-
-
-

HTTP request

-
-
-
GET /projects/award?year=2024 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: optional_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1759
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "thumbnailInfo" : {
-      "id" : 1,
-      "uuid" : "썸네일 uuid 1",
-      "name" : "썸네일 파일 이름 1",
-      "mimeType" : "썸네일 mime 타입 1"
-    },
-    "projectName" : "프로젝트 이름 1",
-    "teamName" : "팀 이름 1",
-    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
-    "professorNames" : [ "교수 이름 1" ],
-    "projectType" : "STARTUP",
-    "projectCategory" : "BIG_DATA_ANALYSIS",
-    "awardStatus" : "FIRST",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : false,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  }, {
-    "id" : 2,
-    "thumbnailInfo" : {
-      "id" : 2,
-      "uuid" : "썸네일 uuid 2",
-      "name" : "썸네일 파일 이름 2",
-      "mimeType" : "썸네일 mime 타입 2"
-    },
-    "projectName" : "프로젝트 이름 2",
-    "teamName" : "팀 이름 2",
-    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
-    "professorNames" : [ "교수 이름 2" ],
-    "projectType" : "LAB",
-    "projectCategory" : "AI_MACHINE_LEARNING",
-    "awardStatus" : "SECOND",
-    "year" : 2023,
-    "likeCount" : 100,
-    "like" : false,
-    "bookMark" : true,
-    "url" : "프로젝트 URL",
-    "description" : "프로젝트 설명"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

true

프로젝트 년도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
-

AI HUB API

-
-
-
-

AI HUB 모델 리스트 조회 (POST /aihub/models)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

AI 모델 제목

learningModels

Array

true

학습 모델

topics

Array

true

주제 분류

developmentYears

Array

true

개발 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

-
-
-

HTTP request

-
-
-
POST /aihub/models HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 199
-Host: localhost:8080
-
-{
-  "title" : "title",
-  "learningModels" : [ "학습 모델 1" ],
-  "topics" : [ "주제 1" ],
-  "developmentYears" : [ 2024 ],
-  "professor" : "담당 교수 1",
-  "participants" : [ "학생 1" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1221
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "title" : "title",
-    "learningModels" : [ "학습 모델 1" ],
-    "topics" : [ "주제 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  }, {
-    "title" : "title",
-    "learningModels" : [ "학습 모델 1" ],
-    "topics" : [ "주제 1", "주제 2" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2", "학생 3" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 모델 제목

content[].learningModels

Array

true

학습 모델

content[].topics

Array

true

주제 분류

content[].developmentYears

Array

true

개발 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-

AI HUB 데이터셋 리스트 조회 (POST /aihub/datasets)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

AI 데이터셋 제목

dataTypes

Array

true

데이터 유형

topics

Array

true

주제 분류

developmentYears

Array

true

구축 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

-
-
-

HTTP request

-
-
-
POST /aihub/datasets HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 197
-Host: localhost:8080
-
-{
-  "title" : "title",
-  "dataTypes" : [ "주제 1" ],
-  "topics" : [ "데이터 유형 1" ],
-  "developmentYears" : [ 2024 ],
-  "professor" : "담당 교수 1",
-  "participants" : [ "학생 1" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1217
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "title" : "title",
-    "dataTypes" : [ "주제 1" ],
-    "topics" : [ "데이터 유형 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  }, {
-    "title" : "title",
-    "dataTypes" : [ "주제 1", "주제 2" ],
-    "topics" : [ "데이터 유형 1" ],
-    "developmentYears" : [ 2024 ],
-    "professor" : "담당 교수 1",
-    "participants" : [ "학생 1", "학생 2", "학생 3" ],
-    "object" : "page",
-    "id" : "노션 object 아이디",
-    "cover" : "커버 이미지 link",
-    "url" : "노션 redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 데이터셋 제목

content[].topics

Array

true

주제 분류

content[].dataTypes

Array

true

데이터 유형

content[].developmentYears

Array

true

구축 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
-

JOB INFO API

-
-
-
-

JOB INFO 리스트 조회 (POST /jobInfos)

-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

company

String

true

기업명

jobTypes

Array

true

고용 형태

region

String

true

근무 지역

position

String

true

채용 포지션

hiringTime

String

true

채용 시점

state

Array

true

채용 상태

-
-
-

HTTP request

-
-
-
POST /jobInfos HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 198
-Host: localhost:8080
-
-{
-  "company" : "기업명 1",
-  "jobTypes" : [ "고용 형태 1" ],
-  "region" : "근무 지역 1",
-  "position" : "채용 포지션 1",
-  "hiringTime" : "채용 시점 1",
-  "state" : [ "open" ]
-}
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 1295
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "company" : "기업명 1",
-    "jobTypes" : [ "고용 형태 1" ],
-    "region" : "근무 지역 1",
-    "position" : "채용 포지션 1",
-    "logo" : "로고 url",
-    "salary" : "연봉",
-    "website" : "웹사이트 url",
-    "state" : [ "open" ],
-    "hiringTime" : "채용 시점 1",
-    "object" : "page",
-    "id" : "노션 object 아이디 1",
-    "url" : "redirect url"
-  }, {
-    "company" : "기업명 1",
-    "jobTypes" : [ "고용 형태 1", "고용 형태 2" ],
-    "region" : "근무 지역 2",
-    "position" : "채용 포지션 1, 채용 시점 2",
-    "logo" : "로고 url",
-    "salary" : "연봉",
-    "website" : "웹사이트 url",
-    "state" : [ "open" ],
-    "hiringTime" : "채용 시점 1",
-    "object" : "page",
-    "id" : "노션 object 아이디 2",
-    "url" : "redirect url"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].company

String

true

기업명

content[].jobTypes

Array

true

고용 형태

content[].region

String

true

근무 지역

content[].position

String

true

채용 포지션

content[].logo

String

true

로고 url

content[].salary

String

true

연봉

content[].website

String

true

웹사이트 url

content[].state

Array

true

채용 상태

content[].hiringTime

String

true

채용 시점

content[].url

String

true

redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

-
-
-
-
-
-
-
- - - - + + + + + + + +S-TOP Rest Docs + + + + + + +
+
+

커스텀 예외 코드

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodeMessage

1000

요청 형식이 올바르지 않습니다.

1001

해당 연도의 행사 기간이 이미 존재합니다.

1002

올해의 이벤트 기간이 존재하지 않습니다.

1003

이벤트 시작 일시 혹은 종료 일시가 올해를 벗어났습니다.

2001

소셜 로그인 공급자로부터 유저 정보를 받아올 수 없습니다.

2002

소셜 로그인 공급자로부터 인증 토큰을 받아올 수 없습니다.

3000

접근할 수 없는 리소스입니다.

3001

유효하지 않은 Refresh Token 입니다.

3002

토큰 검증에 실패했습니다.

3003

유효하지 않은 Access Token 입니다.

13000

Notion 데이터를 가져오는데 실패했습니다.

4000

유저 id 를 찾을 수 없습니다.

4001

회원가입이 필요합니다.

4002

유저 권한이 존재하지 않습니다.

4003

학과가 존재하지 않습니다.

4004

학과/학번 정보가 존재하지 않습니다.

4005

회원 가입 이용이 불가능한 회원 유형입니다.

4010

ID에 해당하는 인증 신청 정보가 존재하지 않습니다.

4011

이미 인증 된 회원입니다.

4100

회원 유형은 수정할 수 없습니다.

4101

소속 또는 직책의 형식이 잘못되었습니다.

77000

프로젝트를 찾을 수 없습니다.

77001

프로젝트 썸네일을 찾을 수 없습니다

77002

프로젝트 포스터를 찾을 수 없습니다

77003

멤버 정보가 올바르지 않습니다.

77004

기술 스택 정보가 올바르지 않습니다.

77005

관심 표시한 프로젝트가 이미 존재합니다

77007

관심 표시한 프로젝트를 찾을 수 없습니다.

77008

이미 좋아요 한 프로젝트입니다.

77009

좋아요 표시한 프로젝트가 존재하지 않습니다

77010

댓글을 찾을 수 없습니다

77011

유저 정보가 일치하지 않습니다

78000

엑셀 행의 개수와 업로드한 이미지의 개수가 일치해야합니다.

78001

썸네일 이미지 이름을 찾을 수 없습니다.

78002

포스터 이미지 이름을 찾을 수 없습니다.

78003

수상 내역의 한글 이름이 올바르지 않습니다.

78004

프로젝트 종류의 한글 이름이 올바르지 않습니다.

78005

프로젝트 분야의 한글 이름이 올바르지 않습니다.

78006

모든 셀은 값이 있어야 합니다.

78007

엑셀 형식이 올바르지 않습니다.

78008

중복된 썸네일 이미지 이름이 존재합니다.

78009

중복된 포스터 이미지 이름이 존재합니다.

780010

프로젝트 년도는 숫자만 입력해야 합니다.

780011

엑셀 파일을 열 수 없습니다.

5000

파일 업로드를 실패했습니다.

5001

파일 가져오기를 실패했습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

5004

파일을 찾을 수 없습니다.

10000

요청한 ID에 해당하는 공지사항이 존재하지 않습니다.

11000

요청한 ID에 해당하는 이벤트가 존재하지 않습니다.

8000

요청한 ID에 해당하는 문의가 존재하지 않습니다.

8001

요청한 ID에 해당하는 문의 답변이 존재하지 않습니다.

8002

이미 답변이 등록된 문의입니다.

8003

해당 문의에 대한 권한이 없습니다.

8200

해당 ID에 해당하는 잡페어 인터뷰가 없습니다.

8400

해당 ID에 해당하는 대담 영상이 없습니다.

8401

퀴즈 데이터가 존재하지 않습니다.

8402

퀴즈 제출 데이터가 존재하지 않습니다.

8601

이미 퀴즈의 정답을 모두 맞추었습니다.

8801

이미 관심 리스트에 추가되었습니다.

8802

이미 관심 리스트에 추가되어 있지 않습니다.

8804

퀴즈 이벤트 참여 기간이 아닙니다.

8805

대담 영상과 현재 이벤트 참여 연도가 일치하지 않습니다.

8901

퀴즈 최대 시도 횟수를 초과하였습니다.

71001

엑셀 파일이 주어진 클래스와 호환되지 않습니다.

9001

요청한 ID에 해당하는 갤러리가 존재하지 않습니다.

+
+
+

인증 API

+
+
+
+

카카오 소셜 로그인 (POST /auth/login/kakao/)

+
+
+
+

HTTP request

+
+
+
GET /auth/login/kakao?code=codefromkakaologin HTTP/1.1
+Host: localhost:8080
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + +
ParameterRequiredDescription

code

true

카카오 인가코드

+
+
+

HTTP response

+
+
+
HTTP/1.1 302 Found
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Tue, 26 Nov 2024 06:22:25 GMT; Secure; HttpOnly; SameSite=None
+Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Tue, 26 Nov 2024 06:22:25 GMT; Secure; SameSite=None
+Location: https://localhost:3000/login/kakao
+
+
+
+
+

Response fields

+
+

Snippet response-fields not found for operation::auth-controller-test/kakao-social-login

+
+
+
+
+
+
+

회원가입 (POST /auth/register)

+
+
+
+

HTTP request

+
+
+
POST /auth/register HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Content-Length: 301
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "name" : "stop-user",
+  "phoneNumber" : "010-1234-1234",
+  "userType" : "STUDENT",
+  "email" : "email@gmail.com",
+  "signUpSource" : "ad",
+  "studentInfo" : {
+    "department" : "소프트웨어학과",
+    "studentNumber" : "2021123123"
+  },
+  "division" : null,
+  "position" : null
+}
+
+
+
+
+

Request cookies

+ ++++ + + + + + + + + + + + + +
NameDescription

refresh-token

갱신 토큰

+
+
+

Request headers

+ ++++ + + + + + + + + + + + + +
NameDescription

Authorization

access token

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

name

String

true

유저 이름

phoneNumber

String

true

전화 번호

userType

String

true

회원 유형

email

String

true

이메일

signUpSource

String

false

가입 경로

studentInfo.department

String

true

학과

studentInfo.studentNumber

String

true

학번

division

String

false

소속

position

String

false

직책

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 90
+
+{
+  "name" : "stop-user",
+  "email" : "email@email.com",
+  "phone" : "010-1234-1234"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

name

String

true

이름

email

String

true

이메일

phone

String

true

전화번호

+
+
+
+
+
+

Access Token 재발급 (POST /auth/reissue)

+
+
+
+

HTTP request

+
+
+
POST /auth/reissue HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 47
+
+{
+  "accessToken" : "reissued_access_token"
+}
+
+
+
+
+
+
+
+

로그아웃 (POST /auth/logout)

+
+
+
+

HTTP request

+
+
+
POST /auth/logout HTTP/1.1
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+Content-Type: application/x-www-form-urlencoded
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

파일 API

+
+
+
+

다중 파일 업로드 (POST /files)

+
+
+
+

HTTP request

+
+
+
POST /files HTTP/1.1
+Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Host: localhost:8080
+
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Content-Disposition: form-data; name=files; filename=첨부파일1.png
+Content-Type: image/png
+
+[BINARY DATA - PNG IMAGE CONTENT]
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Content-Disposition: form-data; name=files; filename=첨부파일2.pdf
+Content-Type: application/pdf
+
+[BINARY DATA - PDF CONTENT]
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
+
+
+
+
+

Request parts

+ ++++ + + + + + + + + + + + + +
PartDescription

files

업로드할 파일 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 464
+
+[ {
+  "id" : 1,
+  "uuid" : "93c1cbe0-8c44-4432-9ac2-906feb256ba9",
+  "name" : "첨부파일1.png",
+  "mimeType" : "image/png",
+  "createdAt" : "2024-11-19T15:22:29.6605669",
+  "updatedAt" : "2024-11-19T15:22:29.6605669"
+}, {
+  "id" : 2,
+  "uuid" : "99547005-27d9-4c62-b6a2-134f9a8d669e",
+  "name" : "첨부파일2.pdf",
+  "mimeType" : "application/pdf",
+  "createdAt" : "2024-11-19T15:22:29.6605669",
+  "updatedAt" : "2024-11-19T15:22:29.6605669"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

파일 ID

[].uuid

String

true

파일 UUID

[].name

String

true

파일 이름

[].mimeType

String

true

파일의 MIME 타입

[].createdAt

String

true

파일 생성일

[].updatedAt

String

true

파일 수정일

+
+
+
+
+
+

파일 조회 (GET /files/{fileId})

+
+
+
+

HTTP request

+
+
+
GET /files/1 HTTP/1.1
+Host: localhost:8080
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /files/{fileId}
ParameterDescription

fileId

파일 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: image/png;charset=UTF-8
+Content-Length: 33
+
+[BINARY DATA - PNG IMAGE CONTENT]
+
+
+
+
+
+
+
+

프로젝트 일괄 등록 양식 다운로드 (GET /files/form/projects)

+
+
+
+

HTTP request

+
+
+
GET /files/form/projects HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Disposition: form-data; name="attachment"; filename="project_upload_form.xlsx"
+Content-Type: application/octet-stream;charset=UTF-8
+Content-Length: 19
+
+project_upload_form
+
+
+
+
+
+
+
+
+
+

잡페어 인터뷰 API

+
+
+
+

잡페어 인터뷰 생성 (POST /jobInterviews)

+
+
+
+

HTTP request

+
+
+
POST /jobInterviews HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 220
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "잡페어 인터뷰의 제목",
+  "youtubeId" : "유튜브 고유 ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자의 소속",
+  "talkerName" : "대담자의 성명",
+  "category" : "INTERN"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 329
+
+{
+  "id" : 1,
+  "title" : "잡페어 인터뷰의 제목",
+  "youtubeId" : "유튜브 고유 ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자의 소속",
+  "talkerName" : "대담자의 성명",
+  "category" : "INTERN",
+  "createdAt" : "2024-11-19T15:22:43.6470123",
+  "updatedAt" : "2024-11-19T15:22:43.6470123"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

+
+
+
+
+
+

잡페어 인터뷰 리스트 조회 (GET /jobInterviews)

+
+
+
+

HTTP request

+
+
+
GET /jobInterviews HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 잡페어 인터뷰 연도

category

false

찾고자 하는 잡페어 인터뷰 카테고리: SENIOR, INTERN

title

false

찾고자 하는 잡페어 인터뷰의 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1255
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "title" : "잡페어 인터뷰의 제목1",
+    "youtubeId" : "유튜브 고유 ID1",
+    "year" : 2023,
+    "talkerBelonging" : "대담자의 소속1",
+    "talkerName" : "대담자의 성명1",
+    "favorite" : false,
+    "category" : "INTERN",
+    "createdAt" : "2024-11-19T15:22:43.500491",
+    "updatedAt" : "2024-11-19T15:22:43.500491"
+  }, {
+    "id" : 2,
+    "title" : "잡페어 인터뷰의 제목2",
+    "youtubeId" : "유튜브 고유 ID2",
+    "year" : 2024,
+    "talkerBelonging" : "대담자의 소속2",
+    "talkerName" : "대담자의 성명2",
+    "favorite" : true,
+    "category" : "INTERN",
+    "createdAt" : "2024-11-19T15:22:43.500491",
+    "updatedAt" : "2024-11-19T15:22:43.500491"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

잡페어 인터뷰 ID

content[].title

String

true

잡페어 인터뷰 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

잡페어 인터뷰 연도

content[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

content[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

content[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

content[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

content[].createdAt

String

true

잡페어 인터뷰 생성일

content[].updatedAt

String

true

잡페어 인터뷰 수정일

+
+
+
+
+
+

잡페어 인터뷰 단건 조회 (GET /jobInterviews/{jobInterviewId})

+
+
+
+

HTTP request

+
+
+
GET /jobInterviews/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

조회할 잡페어 인터뷰의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 352
+
+{
+  "id" : 1,
+  "title" : "잡페어 인터뷰의 제목",
+  "youtubeId" : "유튜브 고유 ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자의 소속",
+  "talkerName" : "대담자의 성명",
+  "favorite" : false,
+  "category" : "INTERN",
+  "createdAt" : "2024-11-19T15:22:43.5889318",
+  "updatedAt" : "2024-11-19T15:22:43.5889318"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

+
+
+
+
+
+

잡페어 인터뷰 수정 (PUT /jobInterviews/{jobInterviewId})

+
+
+
+

HTTP request

+
+
+
PUT /jobInterviews/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 224
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 제목",
+  "youtubeId" : "수정된 유튜브 ID",
+  "year" : 2024,
+  "talkerBelonging" : "수정된 대담자 소속",
+  "talkerName" : "수정된 대담자 성명",
+  "category" : "INTERN"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

수정할 잡페어 인터뷰의 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 325
+
+{
+  "id" : 1,
+  "title" : "수정된 제목",
+  "youtubeId" : "수정된 유튜브 ID",
+  "year" : 2024,
+  "talkerBelonging" : "수정된 대담자 소속",
+  "talkerName" : "수정된 대담자 성명",
+  "category" : "INTERN",
+  "createdAt" : "2021-01-01T12:00:00",
+  "updatedAt" : "2024-11-19T15:22:43.3501083"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

+
+
+
+
+
+

잡페어 인터뷰 삭제 (DELETE /jobInterviews/{jobInterviewId})

+
+
+
+

HTTP request

+
+
+
DELETE /jobInterviews/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}
ParameterDescription

jobInterviewId

삭제할 잡페어 인터뷰의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

잡페어 인터뷰 관심 등록 (POST /jobInterviews/{jobInterviews}/favorite)

+
+
+
+

HTTP request

+
+
+
POST /jobInterviews/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에 추가할 잡페어 인터뷰의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

잡페어 인터뷰 관심 삭제 (DELETE /jobInterviews/{jobInterviews}/favorite)

+
+
+
+

HTTP request

+
+
+
DELETE /jobInterviews/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /jobInterviews/{jobInterviewId}/favorite
ParameterDescription

jobInterviewId

관심 목록에서 삭제할 잡페어 인터뷰의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

대담 영상 API

+
+
+
+

대담 영상 생성 (POST /talks)

+
+
+
+

HTTP request

+
+
+
POST /talks HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 376
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "제목",
+  "youtubeId" : "유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자 소속",
+  "talkerName" : "대담자 성명",
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 485
+
+{
+  "id" : 1,
+  "title" : "제목",
+  "youtubeId" : "유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자 소속",
+  "talkerName" : "대담자 성명",
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ],
+  "createdAt" : "2024-11-19T15:22:47.8125417",
+  "updatedAt" : "2024-11-19T15:22:47.8125417"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

+
+
+
+
+
+

대담 영상 리스트 조회 (GET /talks)

+
+
+
+

HTTP request

+
+
+
GET /talks HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 대담 영상의 연도

title

false

찾고자 하는 대담 영상의 제목 일부

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1047
+
+{
+  "totalElements" : 1,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "title" : "제목",
+    "youtubeId" : "유튜브 고유ID",
+    "year" : 2024,
+    "talkerBelonging" : "대담자 소속",
+    "talkerName" : "대담자 성명",
+    "favorite" : true,
+    "quiz" : [ {
+      "question" : "질문1",
+      "answer" : 0,
+      "options" : [ "선지1", "선지2" ]
+    }, {
+      "question" : "질문2",
+      "answer" : 0,
+      "options" : [ "선지1", "선지2" ]
+    } ],
+    "createdAt" : "2024-11-19T15:22:47.8752375",
+    "updatedAt" : "2024-11-19T15:22:47.8752375"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 1,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

대담 영상 ID

content[].title

String

true

대담 영상 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

대담 영상 연도

content[].talkerBelonging

String

true

대담자의 소속된 직장/단체

content[].talkerName

String

true

대담자의 성명

content[].favorite

Boolean

true

관심한 대담영상의 여부

content[].quiz

Array

false

퀴즈 데이터, 없는경우 null

content[].quiz[].question

String

false

퀴즈 1개의 질문

content[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

content[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

content[].createdAt

String

true

대담 영상 생성일

content[].updatedAt

String

true

대담 영상 수정일

+
+
+
+
+
+

대담 영상 단건 조회 (GET /talks/{talkId})

+
+
+
+

HTTP request

+
+
+
GET /talks/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}
ParameterDescription

talkId

조회할 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 507
+
+{
+  "id" : 1,
+  "title" : "제목",
+  "youtubeId" : "유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자 소속",
+  "talkerName" : "대담자 성명",
+  "favorite" : true,
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ],
+  "createdAt" : "2024-11-19T15:22:47.7544993",
+  "updatedAt" : "2024-11-19T15:22:47.7544993"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

favorite

Boolean

true

관심한 대담영상의 여부

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

+
+
+
+
+
+

대담 영상 수정 (PUT /talks/{talkId})

+
+
+
+

HTTP request

+
+
+
PUT /talks/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 476
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정한 제목",
+  "youtubeId" : "수정한 유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "수정한 대담자 소속",
+  "talkerName" : "수정한 대담자 성명",
+  "quiz" : [ {
+    "question" : "수정한 질문1",
+    "answer" : 0,
+    "options" : [ "수정한 선지1", "수정한 선지2" ]
+  }, {
+    "question" : "수정한 질문2",
+    "answer" : 0,
+    "options" : [ "수정한 선지1", "수정한 선지2" ]
+  } ]
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}
ParameterDescription

talkId

수정할 대담 영상의 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 585
+
+{
+  "id" : 1,
+  "title" : "수정한 제목",
+  "youtubeId" : "수정한 유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "수정한 대담자 소속",
+  "talkerName" : "수정한 대담자 성명",
+  "quiz" : [ {
+    "question" : "수정한 질문1",
+    "answer" : 0,
+    "options" : [ "수정한 선지1", "수정한 선지2" ]
+  }, {
+    "question" : "수정한 질문2",
+    "answer" : 0,
+    "options" : [ "수정한 선지1", "수정한 선지2" ]
+  } ],
+  "createdAt" : "2024-11-19T15:22:47.5460119",
+  "updatedAt" : "2024-11-19T15:22:47.5460119"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

+
+
+
+
+
+

대담 영상 삭제 (DELETE /talks/{talkId})

+
+
+
+

HTTP request

+
+
+
DELETE /talks/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}
ParameterDescription

talkId

삭제할 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

대담 영상의 퀴즈 조회 (GET /talks/{talkId}/quiz)

+
+
+
+

HTTP request

+
+
+
GET /talks/1/quiz HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 가져올 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 215
+
+{
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

+
+
+
+
+
+

대담 영상의 퀴즈 결과 제출 (POST /talks/{talkId}/quiz)

+
+
+
+

HTTP request

+
+
+
POST /talks/1/quiz HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Content-Length: 52
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "result" : {
+    "0" : 0,
+    "1" : 1
+  }
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/quiz
ParameterDescription

talkId

퀴즈를 제출할 대담 영상의 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

result

Object

true

퀴즈를 푼 결과

result.*

Number

true

퀴즈 각 문제별 정답 인덱스, key는 문제 번호

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 43
+
+{
+  "success" : true,
+  "tryCount" : 1
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

success

Boolean

true

퀴즈 성공 여부

tryCount

Number

true

퀴즈 시도 횟수

+
+
+
+
+
+

대담 영상의 관심 등록 (POST /talks/{talkId}/favorite)

+
+
+
+

HTTP request

+
+
+
POST /talks/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에 추가할 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

대담 영상의 관심 삭제 (DELETE /talks/{talkId}/favorite)

+
+
+
+

HTTP request

+
+
+
DELETE /talks/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/favorite
ParameterDescription

talkId

관심 목록에서 삭제할 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

유저의 퀴즈 제출 기록 조회 (GET /talks/{talkId/quiz/submit)

+
+
+
+

HTTP request

+
+
+
GET /talks/1/quiz/submit HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /talks/{talkId}/quiz/submit
ParameterDescription

talkId

퀴즈가 연결된 대담 영상의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 44
+
+{
+  "success" : false,
+  "tryCount" : 2
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

tryCount

Number

true

시도한 횟수

success

Boolean

true

퀴즈 성공 여부

+
+
+
+
+
+
+
+

퀴즈 결과 API

+
+
+
+

퀴즈 결과 조회 (GET /quizzes/result)

+
+
+
+

HTTP request

+
+
+
GET /quizzes/result HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 778
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "userId" : 1,
+    "name" : "name",
+    "phone" : "010-1111-1111",
+    "email" : "scg@scg.skku.ac.kr",
+    "successCount" : 3
+  }, {
+    "userId" : 2,
+    "name" : "name2",
+    "phone" : "010-0000-1234",
+    "email" : "iam@2tle.io",
+    "successCount" : 1
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

+
+
+
+
+
+

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

+
+
+
+

HTTP request

+
+
+
GET /quizzes/result/excel HTTP/1.1
+Content-Type: application/octet-stream;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/octet-stream;charset=UTF-8
+Content-Disposition: attachment; filename=excel.xlsx
+Content-Length: 2829
+
+PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
+�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
+�0D��ro�z�4� �'{����MHV�盓z���T��E�1e�����Ɇ�ѳ����:�No7jH!bb�Y��V��������T�)$o���0M��9ؗGb�7�pe��*~�R�>��Y�EB���nW������PK6n�!��PK-docProps/core.xmlm�]K�0��J�}{�n
+m�(Aq`e�]H�m�� �v�{�:+�wI��<���������r��F����c�K�I�גFcE�!ۺ�	�p�Ez�I�hτ�H�e^t���"�c�b��!^]��W�"y���K8L��.FrRJ�(�f��*���(�������B}�P�8f�j��F��n���^O_H��f�!(�(`���F�����ّ�ȋuJiJ/�|Ê��ϞK�5?	���՗�������-�%����PK��g�PK-xl/sharedStrings.xml=�A
+�0�{��D�i�/��tm�&f7�����0Ì�7mꃕc&���B�y��Zx>���~72��X�I��nx�s�["�5����R7�\���u�\*����M��9��"��~PKh���y�PK-
+xl/styles.xml���n� ��J}���d���&C%W��J]�9ۨpX@"�O_0N�L:�������n4���ye���UA	`c�®���iKw���aҰ����C^�MF���Ik�!��c~p �O&�٦(��
+)/�dj<i�	CE�x�Z�*k�^�or:*i���XmQ(aY�m�P�]�B��S3O��,o�0O����%��[��Ii�;Ćf���ֱ K~��(Z�������}�91�8�/>Z'�nߟ%^jhC48��);�t�51�Jt�NȋcI"���iu��{lI���L����_�8ВfL.�����ƒ����hv���PK����E�PK-xl/workbook.xmlM���0��&�C�wi1ƨ����z/�@mI�_0��83��d��l�@�;	i"���|m\+�^\w'��v��>���=[xG���Tuh5%~D�$�V�E���P��!F;�Gn�q��[��j1=���F��U�&�3��U2]E3a�K	b���~���T�PK5%����PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
+����s����;[�E8D&a��h@-
+��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-6n�!���docProps/app.xmlPK-��g�sdocProps/core.xmlPK-h���y��xl/sharedStrings.xmlPK-����E�
+�xl/styles.xmlPK-5%����xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
+
+
+
+
+
+
+
+
+
+

공지 사항 API

+
+
+

공지 사항 생성 (POST /notices)

+
+
+
+

HTTP request

+
+
+
POST /notices HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 126
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "공지 사항 제목",
+  "content" : "공지 사항 내용",
+  "fixed" : true,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 999
+
+{
+  "id" : 1,
+  "title" : "공지 사항 제목",
+  "content" : "공지 사항 내용",
+  "hitCount" : 0,
+  "fixed" : true,
+  "createdAt" : "2024-11-19T15:22:34.8606778",
+  "updatedAt" : "2024-11-19T15:22:34.8606778",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:34.8606778",
+    "updatedAt" : "2024-11-19T15:22:34.8606778"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:34.8606778",
+    "updatedAt" : "2024-11-19T15:22:34.8606778"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:34.8606778",
+    "updatedAt" : "2024-11-19T15:22:34.8606778"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

공지 사항 리스트 조회 (GET /notices)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP request

+
+
+
GET /notices HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 899
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "title" : "공지 사항 1",
+    "hitCount" : 10,
+    "fixed" : true,
+    "createdAt" : "2024-11-19T15:22:34.6266992",
+    "updatedAt" : "2024-11-19T15:22:34.6266992"
+  }, {
+    "id" : 2,
+    "title" : "공지 사항 2",
+    "hitCount" : 10,
+    "fixed" : false,
+    "createdAt" : "2024-11-19T15:22:34.6266992",
+    "updatedAt" : "2024-11-19T15:22:34.6266992"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

공지 사항 ID

content[].title

String

true

공지 사항 제목

content[].hitCount

Number

true

공지 사항 조회수

content[].fixed

Boolean

true

공지 사항 고정 여부

content[].createdAt

String

true

공지 사항 생성일

content[].updatedAt

String

true

공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+

공지 사항 조회 (GET /notices/{noticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

조회할 공지 사항 ID

+
+
+

HTTP request

+
+
+
GET /notices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 987
+
+{
+  "id" : 1,
+  "title" : "공지 사항 제목",
+  "content" : "content",
+  "hitCount" : 10,
+  "fixed" : true,
+  "createdAt" : "2024-11-19T15:22:34.8150949",
+  "updatedAt" : "2024-11-19T15:22:34.8150949",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:34.8150949",
+    "updatedAt" : "2024-11-19T15:22:34.8150949"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:34.8150949",
+    "updatedAt" : "2024-11-19T15:22:34.8150949"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:34.8150949",
+    "updatedAt" : "2024-11-19T15:22:34.8150949"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

공지 사항 수정 (PUT /notices/{noticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

수정할 공지 사항 ID

+
+
+

HTTP request

+
+
+
PUT /notices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 147
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 공지 사항 제목",
+  "content" : "수정된 공지 사항 내용",
+  "fixed" : false,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 989
+
+{
+  "id" : 1,
+  "title" : "수정된 공지 사항 제목",
+  "content" : "수정된 공지 사항 내용",
+  "hitCount" : 10,
+  "fixed" : false,
+  "createdAt" : "2024-01-01T12:00:00",
+  "updatedAt" : "2024-11-19T15:22:34.6974643",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-19T15:22:34.6974643"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-19T15:22:34.6974643"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-19T15:22:34.6974643"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

공지 사항 삭제 (DELETE /notices/{noticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /notices/{noticeId}
ParameterDescription

noticeId

삭제할 공지 사항 ID

+
+
+

HTTP request

+
+
+
DELETE /notices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

이벤트 공지 사항 API

+
+
+

이벤트 공지 사항 생성 (POST /eventNotices)

+
+
+
+

HTTP request

+
+
+
POST /eventNotices HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 146
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "이벤트 공지 사항 제목",
+  "content" : "이벤트 공지 사항 내용",
+  "fixed" : true,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1019
+
+{
+  "id" : 1,
+  "title" : "이벤트 공지 사항 제목",
+  "content" : "이벤트 공지 사항 내용",
+  "hitCount" : 0,
+  "fixed" : true,
+  "createdAt" : "2024-11-19T15:22:26.3472166",
+  "updatedAt" : "2024-11-19T15:22:26.3472166",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:26.3472166",
+    "updatedAt" : "2024-11-19T15:22:26.3472166"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:26.3472166",
+    "updatedAt" : "2024-11-19T15:22:26.3472166"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:26.3472166",
+    "updatedAt" : "2024-11-19T15:22:26.3472166"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

이벤트 공지 사항 리스트 조회 (GET /eventNotices)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

title

false

찾고자 하는 이벤트 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP request

+
+
+
GET /eventNotices HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 919
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "title" : "이벤트 공지 사항 1",
+    "hitCount" : 10,
+    "fixed" : true,
+    "createdAt" : "2024-11-19T15:22:26.4193293",
+    "updatedAt" : "2024-11-19T15:22:26.4193293"
+  }, {
+    "id" : 2,
+    "title" : "이벤트 공지 사항 2",
+    "hitCount" : 10,
+    "fixed" : false,
+    "createdAt" : "2024-11-19T15:22:26.4193293",
+    "updatedAt" : "2024-11-19T15:22:26.4193293"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

이벤트 공지 사항 ID

content[].title

String

true

이벤트 공지 사항 제목

content[].hitCount

Number

true

이벤트 공지 사항 조회수

content[].fixed

Boolean

true

이벤트 공지 사항 고정 여부

content[].createdAt

String

true

이벤트 공지 사항 생성일

content[].updatedAt

String

true

이벤트 공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+

이벤트 공지 사항 조회 (GET /eventNotices/{eventNoticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

조회할 이벤트 공지 사항 ID

+
+
+

HTTP request

+
+
+
GET /eventNotices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 989
+
+{
+  "id" : 1,
+  "title" : "이벤트 공지 사항 제목",
+  "content" : "content",
+  "hitCount" : 10,
+  "fixed" : true,
+  "createdAt" : "2024-11-19T15:22:26.227972",
+  "updatedAt" : "2024-11-19T15:22:26.227972",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:26.227972",
+    "updatedAt" : "2024-11-19T15:22:26.227972"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:26.227972",
+    "updatedAt" : "2024-11-19T15:22:26.227972"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:26.227972",
+    "updatedAt" : "2024-11-19T15:22:26.227972"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

이벤트 공지 사항 수정 (PUT /eventNotices/{eventNoticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

수정할 이벤트 공지 사항 ID

+
+
+

HTTP request

+
+
+
PUT /eventNotices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 167
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 이벤트 공지 사항 제목",
+  "content" : "수정된 이벤트 공지 사항 내용",
+  "fixed" : false,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1009
+
+{
+  "id" : 1,
+  "title" : "수정된 이벤트 공지 사항 제목",
+  "content" : "수정된 이벤트 공지 사항 내용",
+  "hitCount" : 10,
+  "fixed" : false,
+  "createdAt" : "2024-01-01T12:00:00",
+  "updatedAt" : "2024-11-19T15:22:26.1261877",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "예시 첨부 파일 1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-19T15:22:26.1251854"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "예시 첨부 파일 2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-19T15:22:26.1261877"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "예시 첨부 파일 3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-01-01T12:00:00",
+    "updatedAt" : "2024-11-19T15:22:26.1261877"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

+
+
+
+
+
+

이벤트 공지 사항 삭제 (DELETE /eventNotices/{eventNoticeId})

+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /eventNotices/{eventNoticeId}
ParameterDescription

eventNoticeId

삭제할 이벤트 공지 사항 ID

+
+
+

HTTP request

+
+
+
DELETE /eventNotices/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

이벤트 기간 API

+
+
+
+

이벤트 기간 생성 (POST /eventPeriods)

+
+
+
+

HTTP request

+
+
+
POST /eventPeriods HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 89
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "start" : "2024-11-19T15:22:27.3296176",
+  "end" : "2024-11-29T15:22:27.3296176"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 216
+
+{
+  "id" : 1,
+  "year" : 2024,
+  "start" : "2024-11-19T15:22:27.3296176",
+  "end" : "2024-11-29T15:22:27.3296176",
+  "createdAt" : "2024-11-19T15:22:27.3296176",
+  "updatedAt" : "2024-11-19T15:22:27.3296176"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

+
+
+
+
+
+

올해의 이벤트 기간 조회 (GET /eventPeriod)

+
+
+
+

HTTP request

+
+
+
GET /eventPeriod HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 216
+
+{
+  "id" : 1,
+  "year" : 2024,
+  "start" : "2024-11-19T15:22:27.2850492",
+  "end" : "2024-11-29T15:22:27.2850492",
+  "createdAt" : "2024-11-19T15:22:27.2850492",
+  "updatedAt" : "2024-11-19T15:22:27.2850492"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

+
+
+
+
+
+

전체 이벤트 기간 리스트 조회 (GET /eventPeriods)

+
+
+
+

HTTP request

+
+
+
GET /eventPeriods HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 438
+
+[ {
+  "id" : 1,
+  "year" : 2024,
+  "start" : "2024-11-19T15:22:27.3867137",
+  "end" : "2024-11-29T15:22:27.3867137",
+  "createdAt" : "2024-11-19T15:22:27.3867137",
+  "updatedAt" : "2024-11-19T15:22:27.3867137"
+}, {
+  "id" : 2,
+  "year" : 2025,
+  "start" : "2024-11-19T15:22:27.3867137",
+  "end" : "2024-11-29T15:22:27.3867137",
+  "createdAt" : "2024-11-19T15:22:27.3867137",
+  "updatedAt" : "2024-11-19T15:22:27.3867137"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

이벤트 기간 ID

[].year

Number

true

이벤트 연도

[].start

String

true

이벤트 시작 일시

[].end

String

true

이벤트 종료 일시

[].createdAt

String

true

생성일

[].updatedAt

String

true

변경일

+
+
+
+
+
+

올해의 이벤트 기간 업데이트 (PUT /eventPeriod)

+
+
+
+

HTTP request

+
+
+
PUT /eventPeriod HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 89
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "start" : "2024-11-19T15:22:27.2169363",
+  "end" : "2024-11-29T15:22:27.2169363"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 216
+
+{
+  "id" : 1,
+  "year" : 2024,
+  "start" : "2024-11-19T15:22:27.2169363",
+  "end" : "2024-11-29T15:22:27.2169363",
+  "createdAt" : "2024-11-19T15:22:27.2169363",
+  "updatedAt" : "2024-11-19T15:22:27.2169363"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

+
+
+
+
+
+
+
+

갤러리 API

+
+
+
+

갤러리 게시글 생성 (POST /galleries)

+
+
+
+

HTTP request

+
+
+
POST /galleries HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 101
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "새내기 배움터",
+  "year" : 2024,
+  "month" : 4,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 929
+
+{
+  "id" : 1,
+  "title" : "새내기 배움터",
+  "year" : 2024,
+  "month" : 4,
+  "hitCount" : 1,
+  "createdAt" : "2024-11-19T15:22:31.1031748",
+  "updatedAt" : "2024-11-19T15:22:31.1031748",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "사진1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:31.1031748",
+    "updatedAt" : "2024-11-19T15:22:31.1031748"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "사진2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:31.1031748",
+    "updatedAt" : "2024-11-19T15:22:31.1031748"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "사진3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:31.1031748",
+    "updatedAt" : "2024-11-19T15:22:31.1031748"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

+
+
+
+
+
+

갤러리 게시글 목록 조회 (GET /galleries)

+
+
+
+

HTTP request

+
+
+
GET /galleries?year=2024&month=4 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

연도

month

false

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1289
+
+{
+  "totalElements" : 1,
+  "totalPages" : 1,
+  "size" : 1,
+  "content" : [ {
+    "id" : 1,
+    "title" : "새내기 배움터",
+    "year" : 2024,
+    "month" : 4,
+    "hitCount" : 0,
+    "createdAt" : "2024-11-19T15:22:30.9431053",
+    "updatedAt" : "2024-11-19T15:22:30.9431053",
+    "files" : [ {
+      "id" : 1,
+      "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+      "name" : "사진1.jpg",
+      "mimeType" : "image/jpeg",
+      "createdAt" : "2024-11-19T15:22:30.9431053",
+      "updatedAt" : "2024-11-19T15:22:30.9431053"
+    }, {
+      "id" : 2,
+      "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+      "name" : "사진2.jpg",
+      "mimeType" : "image/jpeg",
+      "createdAt" : "2024-11-19T15:22:30.9431053",
+      "updatedAt" : "2024-11-19T15:22:30.9431053"
+    }, {
+      "id" : 3,
+      "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+      "name" : "사진3.jpg",
+      "mimeType" : "image/jpeg",
+      "createdAt" : "2024-11-19T15:22:30.9431053",
+      "updatedAt" : "2024-11-19T15:22:30.9431053"
+    } ]
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 1,
+  "first" : true,
+  "last" : true,
+  "pageable" : "INSTANCE",
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

totalElements

Number

true

전체 데이터 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지당 데이터 수

content

Array

true

갤러리 목록

content[].id

Number

true

갤러리 ID

content[].title

String

true

갤러리 제목

content[].year

Number

true

갤러리 연도

content[].month

Number

true

갤러리 월

content[].hitCount

Number

true

갤러리 조회수

content[].createdAt

String

true

갤러리 생성일

content[].updatedAt

String

true

갤러리 수정일

content[].files

Array

true

파일 목록

content[].files[].id

Number

true

파일 ID

content[].files[].uuid

String

true

파일 UUID

content[].files[].name

String

true

파일 이름

content[].files[].mimeType

String

true

파일 MIME 타입

content[].files[].createdAt

String

true

파일 생성일

content[].files[].updatedAt

String

true

파일 수정일

number

Number

true

현재 페이지 번호

sort.empty

Boolean

true

정렬 정보

sort.sorted

Boolean

true

정렬 정보

sort.unsorted

Boolean

true

정렬 정보

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

numberOfElements

Number

true

현재 페이지의 데이터 수

empty

Boolean

true

빈 페이지 여부

+
+
+
+
+
+

갤러리 게시글 조회 (GET /galleries/{galleryId})

+
+
+
+

HTTP request

+
+
+
GET /galleries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

조회할 갤러리 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 929
+
+{
+  "id" : 1,
+  "title" : "새내기 배움터",
+  "year" : 2024,
+  "month" : 4,
+  "hitCount" : 1,
+  "createdAt" : "2024-11-19T15:22:31.0302695",
+  "updatedAt" : "2024-11-19T15:22:31.0302695",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "사진1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:31.0292633",
+    "updatedAt" : "2024-11-19T15:22:31.0292633"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "사진2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:31.0302695",
+    "updatedAt" : "2024-11-19T15:22:31.0302695"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "사진3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:31.0302695",
+    "updatedAt" : "2024-11-19T15:22:31.0302695"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

+
+
+
+
+
+

갤러리 게시글 삭제 (DELETE /galleries/{galleryId})

+
+
+
+

HTTP request

+
+
+
DELETE /galleries/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

삭제할 갤러리 ID

+
+
+
+
+
+

갤러리 게시글 수정 (PUT /galleries/{galleryId})

+
+
+
+

HTTP request

+
+
+
PUT /galleries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 98
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 제목",
+  "year" : 2024,
+  "month" : 5,
+  "fileIds" : [ 1, 2, 3 ]
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /galleries/{galleryId}
ParameterDescription

galleryId

수정할 갤러리 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 926
+
+{
+  "id" : 1,
+  "title" : "수정된 제목",
+  "year" : 2024,
+  "month" : 5,
+  "hitCount" : 1,
+  "createdAt" : "2024-11-19T15:22:30.7510164",
+  "updatedAt" : "2024-11-19T15:22:30.7510164",
+  "files" : [ {
+    "id" : 1,
+    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
+    "name" : "사진1.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:30.7510164",
+    "updatedAt" : "2024-11-19T15:22:30.7510164"
+  }, {
+    "id" : 2,
+    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
+    "name" : "사진2.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:30.7510164",
+    "updatedAt" : "2024-11-19T15:22:30.7510164"
+  }, {
+    "id" : 3,
+    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
+    "name" : "사진3.jpg",
+    "mimeType" : "image/jpeg",
+    "createdAt" : "2024-11-19T15:22:30.7510164",
+    "updatedAt" : "2024-11-19T15:22:30.7510164"
+  } ]
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

+
+
+
+
+
+
+
+

가입 신청 관리 API

+
+
+
+

가입 신청 리스트 조회 (GET /applications)

+
+
+
+

HTTP request

+
+
+
GET /applications HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 1235
+
+{
+  "totalElements" : 3,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "name" : "김영한",
+    "division" : "배민",
+    "position" : null,
+    "userType" : "INACTIVE_COMPANY",
+    "createdAt" : "2024-11-19T15:22:39.2981008",
+    "updatedAt" : "2024-11-19T15:22:39.2981008"
+  }, {
+    "id" : 2,
+    "name" : "김교수",
+    "division" : "솦융대",
+    "position" : "교수",
+    "userType" : "INACTIVE_PROFESSOR",
+    "createdAt" : "2024-11-19T15:22:39.2981008",
+    "updatedAt" : "2024-11-19T15:22:39.2981008"
+  }, {
+    "id" : 3,
+    "name" : "박교수",
+    "division" : "정통대",
+    "position" : "교수",
+    "userType" : "INACTIVE_PROFESSOR",
+    "createdAt" : "2024-11-19T15:22:39.2981008",
+    "updatedAt" : "2024-11-19T15:22:39.2981008"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 3,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

가입 신청 ID

content[].name

String

true

가입 신청자 이름

content[].division

String

false

소속

content[].position

String

false

직책

content[].userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

content[].createdAt

String

true

가입 신청 정보 생성일

content[].updatedAt

String

true

가입 신청 정보 수정일

+
+
+
+
+
+

가입 신청자 상세 정보 조회 (GET /applications/{applicationId})

+
+
+
+

HTTP request

+
+
+
GET /applications/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 282
+
+{
+  "id" : 1,
+  "name" : "김영한",
+  "phone" : "010-1111-2222",
+  "email" : "email@gmail.com",
+  "division" : "배민",
+  "position" : "CEO",
+  "userType" : "INACTIVE_COMPANY",
+  "createdAt" : "2024-11-19T15:22:39.580926",
+  "updatedAt" : "2024-11-19T15:22:39.580926"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

+
+
+
+
+
+

교수/기업 가입 허가 (PATCH /applications/{applicationId})

+
+
+
+

HTTP request

+
+
+
PATCH /applications/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 275
+
+{
+  "id" : 1,
+  "name" : "김영한",
+  "phone" : "010-1111-2222",
+  "email" : "email@gmail.com",
+  "division" : "배민",
+  "position" : "CEO",
+  "userType" : "COMPANY",
+  "createdAt" : "2024-11-19T15:22:39.5095509",
+  "updatedAt" : "2024-11-19T15:22:39.5095509"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [PROFESSOR, COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

+
+
+
+
+
+

교수/기업 가입 거절 (DELETE /applications/{applicationId})

+
+
+
+

HTTP request

+
+
+
DELETE /applications/1 HTTP/1.1
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /applications/{applicationId}
ParameterDescription

applicationId

가입 신청 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

프로젝트 문의 사항 API

+
+
+
+

프로젝트 문의 사항 생성 (POST /projects/{projectId}/inquiry)

+
+
+
+

HTTP request

+
+
+
POST /projects/1/inquiry HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Content-Length: 105
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "프로젝트 문의 사항 제목",
+  "content" : "프로젝트 문의 사항 내용"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 317
+
+{
+  "id" : 1,
+  "authorName" : "문의 작성자 이름",
+  "projectId" : 1,
+  "projectName" : "프로젝트 이름",
+  "title" : "문의 사항 제목",
+  "content" : "문의 사항 내용",
+  "replied" : false,
+  "createdAt" : "2024-11-19T15:22:32.5296142",
+  "updatedAt" : "2024-11-19T15:22:32.5296142"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

replied

Boolean

true

답변 등록 여부

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

+
+
+
+
+
+
+

프로젝트 문의 사항 리스트 조회 (GET /inquiries)

+
+
+
+

HTTP request

+
+
+
GET /inquiries HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

title

false

찾고자 하는 공지 사항 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 862
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "authorName" : "프로젝트 문의 사항 제목",
+    "title" : "프로젝트 문의 사항 내용",
+    "createdAt" : "2024-11-19T15:22:32.3920816"
+  }, {
+    "id" : 2,
+    "authorName" : "프로젝트 문의 사항 제목",
+    "title" : "프로젝트 문의 사항 내용",
+    "createdAt" : "2024-11-19T15:22:32.3920816"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

문의 사항 ID

content[].authorName

String

true

문의 작성자 이름

content[].title

String

true

문의 사항 제목

content[].createdAt

String

true

문의 사항 생성 시간

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+

프로젝트 문의 사항 단건 조회 (GET /inquiries/{inquiryId})

+
+
+
+

HTTP request

+
+
+
GET /inquiries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

조회할 문의 사항 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 317
+
+{
+  "id" : 1,
+  "authorName" : "문의 작성자 이름",
+  "projectId" : 1,
+  "projectName" : "프로젝트 이름",
+  "title" : "문의 사항 제목",
+  "content" : "문의 사항 내용",
+  "replied" : false,
+  "createdAt" : "2024-11-19T15:22:32.4745261",
+  "updatedAt" : "2024-11-19T15:22:32.4745261"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

replied

Boolean

true

답변 등록 여부

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

+
+
+
+
+
+
+

프로젝트 문의 사항 수정 (PUT /inquiries/{inquiryId})

+
+
+
+

HTTP request

+
+
+
PUT /inquiries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Content-Length: 125
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 프로젝트 문의 사항 제목",
+  "content" : "수정된 프로젝트 문의 사항 내용"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

수정할 문의 사항 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 337
+
+{
+  "id" : 1,
+  "authorName" : "문의 작성자 이름",
+  "projectId" : 1,
+  "projectName" : "프로젝트 이름",
+  "title" : "수정된 문의 사항 제목",
+  "content" : "수정된 문의 사항 내용",
+  "replied" : false,
+  "createdAt" : "2024-11-19T15:22:32.6501995",
+  "updatedAt" : "2024-11-19T15:22:32.6501995"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

수정된 문의 사항 제목

content

String

true

수정된 문의 사항 내용

replied

Boolean

true

답변 등록 여부

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간

+
+
+
+
+
+
+

프로젝트 문의 사항 삭제 (DELETE /inquiries/{inquiryId})

+
+
+
+

HTTP request

+
+
+
DELETE /inquiries/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}
ParameterDescription

inquiryId

삭제할 문의 사항 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+

프로젝트 문의 사항 답변 (POST /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
POST /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 79
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "문의 답변 제목",
+  "content" : "문의 답변 내용"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

답변할 문의 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 92
+
+{
+  "id" : 1,
+  "title" : "문의 답변 제목",
+  "content" : "문의 답변 내용"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+
+
+
+
+

프로젝트 문의 사항 답변 조회 (GET /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
GET /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: company_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

조회할 문의 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 92
+
+{
+  "id" : 1,
+  "title" : "문의 답변 제목",
+  "content" : "문의 답변 내용"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+
+
+
+
+

프로젝트 문의 사항 답변 수정 (PUT /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
PUT /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 99
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "title" : "수정된 문의 답변 제목",
+  "content" : "수정된 문의 답변 내용"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

수정할 답변 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

답변 제목

content

String

true

답변 내용

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 112
+
+{
+  "id" : 1,
+  "title" : "수정된 문의 답변 제목",
+  "content" : "수정된 문의 답변 내용"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

답변 ID

title

String

true

수정된 답변 제목

content

String

true

수정된 답변 내용

+
+
+
+
+
+
+

프로젝트 문의 사항 답변 삭제 (DELETE /inquiries/{inquiryId}/reply)

+
+
+
+

HTTP request

+
+
+
DELETE /inquiries/1/reply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /inquiries/{inquiryId}/reply
ParameterDescription

inquiryId

삭제할 답변 ID

+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+
+
+

프로젝트 API

+
+
+
+

프로젝트 조회 (GET /projects)

+
+
+
+

HTTP request

+
+
+
GET /projects HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1828
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "thumbnailInfo" : {
+      "id" : 1,
+      "uuid" : "썸네일 uuid 1",
+      "name" : "썸네일 파일 이름 1",
+      "mimeType" : "썸네일 mime 타입 1"
+    },
+    "projectName" : "프로젝트 이름 1",
+    "teamName" : "팀 이름 1",
+    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+    "professorNames" : [ "교수 이름 1" ],
+    "projectType" : "STARTUP",
+    "projectCategory" : "BIG_DATA_ANALYSIS",
+    "awardStatus" : "FIRST",
+    "year" : 2023,
+    "likeCount" : 100,
+    "like" : false,
+    "bookMark" : false,
+    "url" : "프로젝트 URL",
+    "description" : "프로젝트 설명"
+  }, {
+    "id" : 2,
+    "thumbnailInfo" : {
+      "id" : 2,
+      "uuid" : "썸네일 uuid 2",
+      "name" : "썸네일 파일 이름 2",
+      "mimeType" : "썸네일 mime 타입 2"
+    },
+    "projectName" : "프로젝트 이름 2",
+    "teamName" : "팀 이름 2",
+    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
+    "professorNames" : [ "교수 이름 2" ],
+    "projectType" : "LAB",
+    "projectCategory" : "AI_MACHINE_LEARNING",
+    "awardStatus" : "SECOND",
+    "year" : 2023,
+    "likeCount" : 100,
+    "like" : false,
+    "bookMark" : true,
+    "url" : "프로젝트 URL",
+    "description" : "프로젝트 설명"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

title

false

프로젝트 이름

year

false

프로젝트 년도

category

false

프로젝트 카테고리

type

false

프로젝트 타입

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+

프로젝트 생성 (POST /projects)

+
+
+
+

HTTP request

+
+
+
POST /projects HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 557
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "thumbnailId" : 1,
+  "posterId" : 2,
+  "projectName" : "프로젝트 이름",
+  "projectType" : "STARTUP",
+  "projectCategory" : "BIG_DATA_ANALYSIS",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2021,
+  "awardStatus" : "NONE",
+  "members" : [ {
+    "name" : "학생 이름 1",
+    "role" : "STUDENT"
+  }, {
+    "name" : "학생 이름 2",
+    "role" : "STUDENT"
+  }, {
+    "name" : "교수 이름 1",
+    "role" : "PROFESSOR"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1540
+
+{
+  "id" : 1,
+  "thumbnailInfo" : {
+    "id" : 2,
+    "uuid" : "썸네일 uuid",
+    "name" : "썸네일 파일 이름",
+    "mimeType" : "썸네일 mime 타입"
+  },
+  "posterInfo" : {
+    "id" : 2,
+    "uuid" : "포스터 uuid",
+    "name" : "포트서 파일 이름",
+    "mimeType" : "포스터 mime 타입"
+  },
+  "projectName" : "프로젝트 이름",
+  "projectType" : "STARTUP",
+  "projectCategory" : "BIG_DATA_ANALYSIS",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2024,
+  "awardStatus" : "FIRST",
+  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+  "professorNames" : [ "교수 이름 1" ],
+  "likeCount" : 0,
+  "like" : false,
+  "bookMark" : false,
+  "comments" : [ {
+    "id" : 1,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : true,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-19T15:22:36.8727225",
+    "updatedAt" : "2024-11-19T15:22:36.8727225"
+  }, {
+    "id" : 2,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-19T15:22:36.8727225",
+    "updatedAt" : "2024-11-19T15:22:36.8727225"
+  }, {
+    "id" : 3,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-19T15:22:36.8727225",
+    "updatedAt" : "2024-11-19T15:22:36.8727225"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

+
+
+
+
+
+

프로젝트 엑셀 일괄등록 (POST /projects/excel)

+
+
+
+

HTTP request

+
+
+
POST /projects/excel HTTP/1.1
+Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Content-Disposition: form-data; name=excel; filename=project_upload_form.xlsx
+Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
+
+[BINARY DATA]
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Content-Disposition: form-data; name=thumbnails; filename=thumbnails.json
+Content-Type: application/json
+
+[{"id":1,"uuid":"099ee9f5-7028-4230-bbeb-59854a2462cc","name":"썸네일1.png","mimeType":"image/png","createdAt":"2024-11-19T15:22:37.9534527","updatedAt":"2024-11-19T15:22:37.9534527"},{"id":1,"uuid":"75b2b11a-5648-4296-be50-d3665dc9ede4","name":"썸네일2.png","mimeType":"image/png","createdAt":"2024-11-19T15:22:37.9534527","updatedAt":"2024-11-19T15:22:37.9534527"}]
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
+Content-Disposition: form-data; name=posters; filename=thumbnails.json
+Content-Type: application/json
+
+[{"id":1,"uuid":"5ece1858-c541-4075-8099-5c360accafab","name":"포스터1.png","mimeType":"image/png","createdAt":"2024-11-19T15:22:37.9534527","updatedAt":"2024-11-19T15:22:37.9534527"},{"id":1,"uuid":"ee152b69-effc-4e8c-9b38-9c8459e7ff52","name":"포스터2.png","mimeType":"image/png","createdAt":"2024-11-19T15:22:37.9534527","updatedAt":"2024-11-19T15:22:37.9534527"}]
+--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
+
+
+
+
+

Request parts

+ ++++ + + + + + + + + + + + + + + + + + + + + +
PartDescription

excel

업로드할 Excel 파일

thumbnails

썸네일 등록 응답 JSON 파일

posters

포스터 등록 응답 JSON 파일

+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 26
+
+{
+  "successCount" : 2
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

successCount

Number

true

생성에 성공한 프로젝트 개수

+
+
+
+
+
+

프로젝트 조회 (GET /projects/{projectId})

+
+
+
+

HTTP request

+
+
+
GET /projects/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1540
+
+{
+  "id" : 1,
+  "thumbnailInfo" : {
+    "id" : 2,
+    "uuid" : "썸네일 uuid",
+    "name" : "썸네일 파일 이름",
+    "mimeType" : "썸네일 mime 타입"
+  },
+  "posterInfo" : {
+    "id" : 2,
+    "uuid" : "포스터 uuid",
+    "name" : "포트서 파일 이름",
+    "mimeType" : "포스터 mime 타입"
+  },
+  "projectName" : "프로젝트 이름",
+  "projectType" : "STARTUP",
+  "projectCategory" : "BIG_DATA_ANALYSIS",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2024,
+  "awardStatus" : "FIRST",
+  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+  "professorNames" : [ "교수 이름 1" ],
+  "likeCount" : 0,
+  "like" : false,
+  "bookMark" : false,
+  "comments" : [ {
+    "id" : 1,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : true,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-19T15:22:36.6653757",
+    "updatedAt" : "2024-11-19T15:22:36.6653757"
+  }, {
+    "id" : 2,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-19T15:22:36.6653757",
+    "updatedAt" : "2024-11-19T15:22:36.6653757"
+  }, {
+    "id" : 3,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-19T15:22:36.6653757",
+    "updatedAt" : "2024-11-19T15:22:36.6653757"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

+
+
+
+
+
+

프로젝트 수정 (PUT /projects/{projectId})

+
+
+
+

HTTP request

+
+
+
PUT /projects/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Content-Length: 552
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "thumbnailId" : 3,
+  "posterId" : 4,
+  "projectName" : "프로젝트 이름",
+  "projectType" : "LAB",
+  "projectCategory" : "COMPUTER_VISION",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2024,
+  "awardStatus" : "FIRST",
+  "members" : [ {
+    "name" : "학생 이름 3",
+    "role" : "STUDENT"
+  }, {
+    "name" : "학생 이름 4",
+    "role" : "STUDENT"
+  }, {
+    "name" : "교수 이름 2",
+    "role" : "PROFESSOR"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1536
+
+{
+  "id" : 1,
+  "thumbnailInfo" : {
+    "id" : 3,
+    "uuid" : "썸네일 uuid",
+    "name" : "썸네일 파일 이름",
+    "mimeType" : "썸네일 mime 타입"
+  },
+  "posterInfo" : {
+    "id" : 4,
+    "uuid" : "포스터 uuid",
+    "name" : "포트서 파일 이름",
+    "mimeType" : "포스터 mime 타입"
+  },
+  "projectName" : "프로젝트 이름",
+  "projectType" : "LAB",
+  "projectCategory" : "COMPUTER_VISION",
+  "teamName" : "팀 이름",
+  "youtubeId" : "유튜브 ID",
+  "year" : 2024,
+  "awardStatus" : "FIRST",
+  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
+  "professorNames" : [ "교수 이름 2" ],
+  "likeCount" : 100,
+  "like" : false,
+  "bookMark" : false,
+  "comments" : [ {
+    "id" : 1,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : true,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-19T15:22:35.8996673",
+    "updatedAt" : "2024-11-19T15:22:35.8996673"
+  }, {
+    "id" : 2,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-19T15:22:35.8996673",
+    "updatedAt" : "2024-11-19T15:22:35.8996673"
+  }, {
+    "id" : 3,
+    "projectId" : 1,
+    "userName" : "유저 이름",
+    "isAnonymous" : false,
+    "content" : "댓글 내용",
+    "createdAt" : "2024-11-19T15:22:35.8996673",
+    "updatedAt" : "2024-11-19T15:22:35.8996673"
+  } ],
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

+
+
+
+
+
+

프로젝트 삭제 (DELETE /projects/{projectId})

+
+
+
+

HTTP request

+
+
+
DELETE /projects/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+

관심 프로젝트 등록 (POST /projects/{projectId}/favorite)

+
+
+
+

HTTP request

+
+
+
POST /projects/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+

관심 프로젝트 삭제 (DELETE /projects/{projectId}/favorite)

+
+
+
+

HTTP request

+
+
+
DELETE /projects/1/favorite HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/favorite
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+

프로젝트 좋아요 등록 (POST /projects/{projectId}/like)

+
+
+
+

HTTP request

+
+
+
POST /projects/1/like HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+

프로젝트 좋아요 삭제 (DELETE /projects/{projectId}/like)

+
+
+
+

HTTP request

+
+
+
DELETE /projects/1/like HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/like
ParameterDescription

projectId

프로젝트 ID

+
+
+
+
+
+

프로젝트 댓글 등록 (POST /projects/{projectId}/comment)

+
+
+
+

HTTP request

+
+
+
POST /projects/1/comment HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Content-Length: 60
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "content" : "댓글 내용",
+  "isAnonymous" : true
+}
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 201 Created
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 222
+
+{
+  "id" : 1,
+  "projectId" : 1,
+  "userName" : "유저 이름",
+  "isAnonymous" : true,
+  "content" : "댓글 내용",
+  "createdAt" : "2024-11-19T15:22:36.5762487",
+  "updatedAt" : "2024-11-19T15:22:36.5762487"
+}
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + +
Table 1. /projects/{projectId}/comment
ParameterDescription

projectId

프로젝트 ID

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content

String

true

댓글 내용

isAnonymous

Boolean

true

익명 여부

+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

댓글 ID

projectId

Number

true

프로젝트 ID

userName

String

true

유저 이름

isAnonymous

Boolean

true

익명 여부

content

String

true

댓글 내용

createdAt

String

true

생성 시간

updatedAt

String

true

수정 시간

+
+
+
+
+
+

프로젝트 댓글 삭제 (DELETE /projects/{projectId}/comment)

+
+
+
+

HTTP request

+
+
+
DELETE /projects/1/comment/1 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: all_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+

Path parameters

+ + ++++ + + + + + + + + + + + + + + + + +
Table 1. /projects/{projectId}/comment/{commentId}
ParameterDescription

projectId

프로젝트 ID

commentId

댓글 ID

+
+
+
+
+
+

수상 프로젝트 조회 (GET /projects/award?year={year})

+
+
+
+

HTTP request

+
+
+
GET /projects/award?year=2024 HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: optional_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1828
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "id" : 1,
+    "thumbnailInfo" : {
+      "id" : 1,
+      "uuid" : "썸네일 uuid 1",
+      "name" : "썸네일 파일 이름 1",
+      "mimeType" : "썸네일 mime 타입 1"
+    },
+    "projectName" : "프로젝트 이름 1",
+    "teamName" : "팀 이름 1",
+    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+    "professorNames" : [ "교수 이름 1" ],
+    "projectType" : "STARTUP",
+    "projectCategory" : "BIG_DATA_ANALYSIS",
+    "awardStatus" : "FIRST",
+    "year" : 2023,
+    "likeCount" : 100,
+    "like" : false,
+    "bookMark" : false,
+    "url" : "프로젝트 URL",
+    "description" : "프로젝트 설명"
+  }, {
+    "id" : 2,
+    "thumbnailInfo" : {
+      "id" : 2,
+      "uuid" : "썸네일 uuid 2",
+      "name" : "썸네일 파일 이름 2",
+      "mimeType" : "썸네일 mime 타입 2"
+    },
+    "projectName" : "프로젝트 이름 2",
+    "teamName" : "팀 이름 2",
+    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
+    "professorNames" : [ "교수 이름 2" ],
+    "projectType" : "LAB",
+    "projectCategory" : "AI_MACHINE_LEARNING",
+    "awardStatus" : "SECOND",
+    "year" : 2023,
+    "likeCount" : 100,
+    "like" : false,
+    "bookMark" : true,
+    "url" : "프로젝트 URL",
+    "description" : "프로젝트 설명"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

true

프로젝트 년도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+
+

AI HUB API

+
+
+
+

AI HUB 모델 리스트 조회 (POST /aihub/models)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

AI 모델 제목

learningModels

Array

true

학습 모델

topics

Array

true

주제 분류

developmentYears

Array

true

개발 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

+
+
+

HTTP request

+
+
+
POST /aihub/models HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 206
+Host: localhost:8080
+
+{
+  "title" : "title",
+  "learningModels" : [ "학습 모델 1" ],
+  "topics" : [ "주제 1" ],
+  "developmentYears" : [ 2024 ],
+  "professor" : "담당 교수 1",
+  "participants" : [ "학생 1" ]
+}
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1270
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "title" : "title",
+    "learningModels" : [ "학습 모델 1" ],
+    "topics" : [ "주제 1" ],
+    "developmentYears" : [ 2024 ],
+    "professor" : "담당 교수 1",
+    "participants" : [ "학생 1", "학생 2" ],
+    "object" : "page",
+    "id" : "노션 object 아이디",
+    "cover" : "커버 이미지 link",
+    "url" : "노션 redirect url"
+  }, {
+    "title" : "title",
+    "learningModels" : [ "학습 모델 1" ],
+    "topics" : [ "주제 1", "주제 2" ],
+    "developmentYears" : [ 2024 ],
+    "professor" : "담당 교수 1",
+    "participants" : [ "학생 1", "학생 2", "학생 3" ],
+    "object" : "page",
+    "id" : "노션 object 아이디",
+    "cover" : "커버 이미지 link",
+    "url" : "노션 redirect url"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 모델 제목

content[].learningModels

Array

true

학습 모델

content[].topics

Array

true

주제 분류

content[].developmentYears

Array

true

개발 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+

AI HUB 데이터셋 리스트 조회 (POST /aihub/datasets)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

title

String

true

AI 데이터셋 제목

dataTypes

Array

true

데이터 유형

topics

Array

true

주제 분류

developmentYears

Array

true

구축 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

+
+
+

HTTP request

+
+
+
POST /aihub/datasets HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 204
+Host: localhost:8080
+
+{
+  "title" : "title",
+  "dataTypes" : [ "주제 1" ],
+  "topics" : [ "데이터 유형 1" ],
+  "developmentYears" : [ 2024 ],
+  "professor" : "담당 교수 1",
+  "participants" : [ "학생 1" ]
+}
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1266
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "title" : "title",
+    "dataTypes" : [ "주제 1" ],
+    "topics" : [ "데이터 유형 1" ],
+    "developmentYears" : [ 2024 ],
+    "professor" : "담당 교수 1",
+    "participants" : [ "학생 1", "학생 2" ],
+    "object" : "page",
+    "id" : "노션 object 아이디",
+    "cover" : "커버 이미지 link",
+    "url" : "노션 redirect url"
+  }, {
+    "title" : "title",
+    "dataTypes" : [ "주제 1", "주제 2" ],
+    "topics" : [ "데이터 유형 1" ],
+    "developmentYears" : [ 2024 ],
+    "professor" : "담당 교수 1",
+    "participants" : [ "학생 1", "학생 2", "학생 3" ],
+    "object" : "page",
+    "id" : "노션 object 아이디",
+    "cover" : "커버 이미지 link",
+    "url" : "노션 redirect url"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 데이터셋 제목

content[].topics

Array

true

주제 분류

content[].dataTypes

Array

true

데이터 유형

content[].developmentYears

Array

true

구축 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+
+

JOB INFO API

+
+
+
+

JOB INFO 리스트 조회 (POST /jobInfos)

+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

company

String

true

기업명

jobTypes

Array

true

고용 형태

region

String

true

근무 지역

position

String

true

채용 포지션

hiringTime

String

true

채용 시점

state

Array

true

채용 상태

+
+
+

HTTP request

+
+
+
POST /jobInfos HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 205
+Host: localhost:8080
+
+{
+  "company" : "기업명 1",
+  "jobTypes" : [ "고용 형태 1" ],
+  "region" : "근무 지역 1",
+  "position" : "채용 포지션 1",
+  "hiringTime" : "채용 시점 1",
+  "state" : [ "open" ]
+}
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 1348
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "company" : "기업명 1",
+    "jobTypes" : [ "고용 형태 1" ],
+    "region" : "근무 지역 1",
+    "position" : "채용 포지션 1",
+    "logo" : "로고 url",
+    "salary" : "연봉",
+    "website" : "웹사이트 url",
+    "state" : [ "open" ],
+    "hiringTime" : "채용 시점 1",
+    "object" : "page",
+    "id" : "노션 object 아이디 1",
+    "url" : "redirect url"
+  }, {
+    "company" : "기업명 1",
+    "jobTypes" : [ "고용 형태 1", "고용 형태 2" ],
+    "region" : "근무 지역 2",
+    "position" : "채용 포지션 1, 채용 시점 2",
+    "logo" : "로고 url",
+    "salary" : "연봉",
+    "website" : "웹사이트 url",
+    "state" : [ "open" ],
+    "hiringTime" : "채용 시점 1",
+    "object" : "page",
+    "id" : "노션 object 아이디 2",
+    "url" : "redirect url"
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].company

String

true

기업명

content[].jobTypes

Array

true

고용 형태

content[].region

String

true

근무 지역

content[].position

String

true

채용 포지션

content[].logo

String

true

로고 url

content[].salary

String

true

연봉

content[].website

String

true

웹사이트 url

content[].state

Array

true

채용 상태

content[].hiringTime

String

true

채용 시점

content[].url

String

true

redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

+
+
+
+
+
+
+
+

유저 API

+
+
+
+

로그인 유저 기본 정보 조회 (GET /users/me)

+
+
+
+

HTTP request

+
+
+
GET /users/me HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 337
+
+{
+  "id" : 1,
+  "name" : "이름",
+  "phone" : "010-1234-5678",
+  "email" : "student@g.skku.edu",
+  "userType" : "STUDENT",
+  "division" : null,
+  "position" : null,
+  "studentNumber" : "2000123456",
+  "departmentName" : "학과",
+  "createdAt" : "2024-11-19T15:22:41.8644006",
+  "updatedAt" : "2024-11-19T15:22:41.8644006"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

+
+
+
+
+
+

로그인 유저 기본 정보 수정 (PUT /users/me)

+
+
+
+

HTTP request

+
+
+
PUT /users/me HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: user_access_token
+Content-Length: 203
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+{
+  "name" : "이름",
+  "phoneNumber" : "010-1234-5678",
+  "email" : "student@g.skku.edu",
+  "division" : null,
+  "position" : null,
+  "studentNumber" : "2000123456",
+  "department" : "학과"
+}
+
+
+
+
+

Request fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

name

String

true

이름

phoneNumber

String

true

전화번호

email

String

true

이메일

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

department

String

false

학과

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 337
+
+{
+  "id" : 1,
+  "name" : "이름",
+  "phone" : "010-1234-5678",
+  "email" : "student@g.skku.edu",
+  "userType" : "STUDENT",
+  "division" : null,
+  "position" : null,
+  "studentNumber" : "2000123456",
+  "departmentName" : "학과",
+  "createdAt" : "2024-11-19T15:22:42.0783323",
+  "updatedAt" : "2024-11-19T15:22:42.0783323"
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

+
+
+
+
+
+

유저 탈퇴 (DELETE /users/me)

+
+
+
+

HTTP request

+
+
+
DELETE /users/me HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 204 No Content
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+
+
+
+
+
+
+
+

유저 관심 프로젝트 리스트 조회 (GET /users/favorites/projects)

+
+
+
+

HTTP request

+
+
+
GET /users/favorites/projects HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 1246
+
+[ {
+  "id" : 1,
+  "thumbnailInfo" : {
+    "id" : 1,
+    "uuid" : "썸네일 uuid 1",
+    "name" : "썸네일 파일 이름 1",
+    "mimeType" : "썸네일 mime 타입 1"
+  },
+  "projectName" : "프로젝트 이름 1",
+  "teamName" : "팀 이름 1",
+  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+  "professorNames" : [ "교수 이름 1" ],
+  "projectType" : "STARTUP",
+  "projectCategory" : "BIG_DATA_ANALYSIS",
+  "awardStatus" : "FIRST",
+  "year" : 2023,
+  "likeCount" : 100,
+  "like" : false,
+  "bookMark" : false,
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}, {
+  "id" : 2,
+  "thumbnailInfo" : {
+    "id" : 2,
+    "uuid" : "썸네일 uuid 2",
+    "name" : "썸네일 파일 이름 2",
+    "mimeType" : "썸네일 mime 타입 2"
+  },
+  "projectName" : "프로젝트 이름 2",
+  "teamName" : "팀 이름 2",
+  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
+  "professorNames" : [ "교수 이름 2" ],
+  "projectType" : "LAB",
+  "projectCategory" : "AI_MACHINE_LEARNING",
+  "awardStatus" : "SECOND",
+  "year" : 2023,
+  "likeCount" : 100,
+  "like" : false,
+  "bookMark" : true,
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

프로젝트 ID

[].thumbnailInfo

Object

true

썸네일 정보

[].thumbnailInfo.id

Number

true

썸네일 ID

[].thumbnailInfo.uuid

String

true

썸네일 UUID

[].thumbnailInfo.name

String

true

썸네일 파일 이름

[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

[].projectName

String

true

프로젝트 이름

[].teamName

String

true

팀 이름

[].studentNames[]

Array

true

학생 이름

[].professorNames[]

Array

true

교수 이름

[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

[].year

Number

true

프로젝트 년도

[].likeCount

Number

true

좋아요 수

[].like

Boolean

true

좋아요 여부

[].bookMark

Boolean

true

북마크 여부

[].url

String

true

프로젝트 URL

[].description

String

true

프로젝트 설명

+
+
+
+
+
+

유저 관심 대담영상 리스트 조회 (GET /users/favorites/talks)

+
+
+
+

HTTP request

+
+
+
GET /users/favorites/talks HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 1026
+
+[ {
+  "id" : 1,
+  "title" : "제목1",
+  "youtubeId" : "유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자 소속1",
+  "talkerName" : "대담자 성명1",
+  "favorite" : true,
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ],
+  "createdAt" : "2024-11-19T15:22:41.7524031",
+  "updatedAt" : "2024-11-19T15:22:41.7524031"
+}, {
+  "id" : 2,
+  "title" : "제목2",
+  "youtubeId" : "유튜브 고유ID",
+  "year" : 2024,
+  "talkerBelonging" : "대담자 소속2",
+  "talkerName" : "대담자 성명2",
+  "favorite" : true,
+  "quiz" : [ {
+    "question" : "질문1",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  }, {
+    "question" : "질문2",
+    "answer" : 0,
+    "options" : [ "선지1", "선지2" ]
+  } ],
+  "createdAt" : "2024-11-19T15:22:41.7524031",
+  "updatedAt" : "2024-11-19T15:22:41.7524031"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

대담 영상 ID

[].title

String

true

대담 영상 제목

[].youtubeId

String

true

유튜브 영상의 고유 ID

[].year

Number

true

대담 영상 연도

[].talkerBelonging

String

true

대담자의 소속된 직장/단체

[].talkerName

String

true

대담자의 성명

[].favorite

Boolean

true

관심한 대담영상의 여부

[].quiz

Array

false

퀴즈 데이터, 없는경우 null

[].quiz[].question

String

false

퀴즈 1개의 질문

[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

[].createdAt

String

true

대담 영상 생성일

[].updatedAt

String

true

대담 영상 수정일

+
+
+
+
+
+

유저 관심 잡페어인터뷰영상 리스트 조회 (GET /users/favorites/jobInterviews)

+
+
+
+

HTTP request

+
+
+
GET /users/favorites/jobInterviews HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 717
+
+[ {
+  "id" : 1,
+  "title" : "잡페어 인터뷰의 제목1",
+  "youtubeId" : "유튜브 고유 ID1",
+  "year" : 2023,
+  "talkerBelonging" : "대담자의 소속1",
+  "talkerName" : "대담자의 성명1",
+  "favorite" : false,
+  "category" : "INTERN",
+  "createdAt" : "2024-11-19T15:22:41.6917669",
+  "updatedAt" : "2024-11-19T15:22:41.6917669"
+}, {
+  "id" : 2,
+  "title" : "잡페어 인터뷰의 제목2",
+  "youtubeId" : "유튜브 고유 ID2",
+  "year" : 2024,
+  "talkerBelonging" : "대담자의 소속2",
+  "talkerName" : "대담자의 성명2",
+  "favorite" : true,
+  "category" : "INTERN",
+  "createdAt" : "2024-11-19T15:22:41.6917669",
+  "updatedAt" : "2024-11-19T15:22:41.6917669"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

잡페어 인터뷰 ID

[].title

String

true

잡페어 인터뷰 제목

[].youtubeId

String

true

유튜브 영상의 고유 ID

[].year

Number

true

잡페어 인터뷰 연도

[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

[].createdAt

String

true

잡페어 인터뷰 생성일

[].updatedAt

String

true

잡페어 인터뷰 수정일

+
+
+
+
+
+

유저 문의 리스트 조회 (GET /users/inquiries)

+
+
+
+

HTTP request

+
+
+
GET /users/inquiries HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 271
+
+[ {
+  "id" : 1,
+  "title" : "Title 1",
+  "projectId" : 1,
+  "createdDate" : "2024-11-19T15:22:41.8208397",
+  "hasReply" : true
+}, {
+  "id" : 2,
+  "title" : "Title 2",
+  "projectId" : 2,
+  "createdDate" : "2024-11-19T15:22:41.8208397",
+  "hasReply" : false
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

문의 ID

[].title

String

true

문의 제목

[].projectId

Number

true

프로젝트 ID

[].createdDate

String

true

문의 생성일

[].hasReply

Boolean

true

답변 여부

+
+
+
+
+
+

유저 과제 제안 리스트 조회 (GET /users/proposals)

+
+
+
+

HTTP request

+
+
+
GET /users/proposals HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 231
+
+[ {
+  "id" : 1,
+  "title" : "Title 1",
+  "createdDate" : "2024-11-19T15:22:41.9120201",
+  "hasReply" : true
+}, {
+  "id" : 2,
+  "title" : "Title 2",
+  "createdDate" : "2024-11-19T15:22:41.9120201",
+  "hasReply" : false
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

과제 제안 ID

[].title

String

true

프로젝트명

[].createdDate

String

true

과제 제안 생성일

[].hasReply

Boolean

true

답변 여부

+
+
+
+
+
+
+
+

학과 API

+
+
+
+

학과 리스트 조회 (GET /departments)

+
+
+
+

HTTP request

+
+
+
GET /departments HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Host: localhost:8080
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 98
+
+[ {
+  "id" : 1,
+  "name" : "소프트웨어학과"
+}, {
+  "id" : 2,
+  "name" : "학과2"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

학과 ID

[].name

String

true

학과 이름

+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/static/docs/inquiry.html b/src/main/resources/static/docs/inquiry.html index c095943c..f5f5ecbb 100644 --- a/src/main/resources/static/docs/inquiry.html +++ b/src/main/resources/static/docs/inquiry.html @@ -455,7 +455,7 @@

HTTP request

POST /projects/1/inquiry HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: company_access_token
-Content-Length: 102
+Content-Length: 105
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -508,7 +508,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 305 +Content-Length: 317 { "id" : 1, @@ -518,8 +518,8 @@

HTTP response

"title" : "문의 사항 제목", "content" : "문의 사항 내용", "replied" : false, - "createdAt" : "2024-11-18T19:55:50.786517", - "updatedAt" : "2024-11-18T19:55:50.786521" + "createdAt" : "2024-11-19T15:22:32.5296142", + "updatedAt" : "2024-11-19T15:22:32.5296142" }
@@ -662,22 +662,22 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 822 +Content-Length: 862 { - "totalPages" : 1, "totalElements" : 2, + "totalPages" : 1, "size" : 10, "content" : [ { "id" : 1, "authorName" : "프로젝트 문의 사항 제목", "title" : "프로젝트 문의 사항 내용", - "createdAt" : "2024-11-18T19:55:50.66564" + "createdAt" : "2024-11-19T15:22:32.3920816" }, { "id" : 2, "authorName" : "프로젝트 문의 사항 제목", "title" : "프로젝트 문의 사항 내용", - "createdAt" : "2024-11-18T19:55:50.665696" + "createdAt" : "2024-11-19T15:22:32.3920816" } ], "number" : 0, "sort" : { @@ -685,6 +685,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 2, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -694,12 +697,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 2, - "first" : true, - "last" : true, "empty" : false } @@ -915,7 +915,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 305 +Content-Length: 317 { "id" : 1, @@ -925,8 +925,8 @@

HTTP response

"title" : "문의 사항 제목", "content" : "문의 사항 내용", "replied" : false, - "createdAt" : "2024-11-18T19:55:50.749487", - "updatedAt" : "2024-11-18T19:55:50.749493" + "createdAt" : "2024-11-19T15:22:32.4745261", + "updatedAt" : "2024-11-19T15:22:32.4745261" } @@ -1021,7 +1021,7 @@

HTTP request

PUT /inquiries/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: company_access_token
-Content-Length: 122
+Content-Length: 125
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1096,7 +1096,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 325 +Content-Length: 337 { "id" : 1, @@ -1106,8 +1106,8 @@

HTTP response

"title" : "수정된 문의 사항 제목", "content" : "수정된 문의 사항 내용", "replied" : false, - "createdAt" : "2024-11-18T19:55:50.848221", - "updatedAt" : "2024-11-18T19:55:50.848224" + "createdAt" : "2024-11-19T15:22:32.6501995", + "updatedAt" : "2024-11-19T15:22:32.6501995" }
@@ -1255,7 +1255,7 @@

HTTP request

POST /inquiries/1/reply HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 76
+Content-Length: 79
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1330,7 +1330,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 88 +Content-Length: 92 { "id" : 1, @@ -1430,7 +1430,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 88 +Content-Length: 92 { "id" : 1, @@ -1494,7 +1494,7 @@

HTTP request

PUT /inquiries/1/reply HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 96
+Content-Length: 99
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1569,7 +1569,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 108 +Content-Length: 112 { "id" : 1, @@ -1680,7 +1680,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/jobInfo-controller-test.html b/src/main/resources/static/docs/jobInfo-controller-test.html index cbbdb50d..a7aada9d 100644 --- a/src/main/resources/static/docs/jobInfo-controller-test.html +++ b/src/main/resources/static/docs/jobInfo-controller-test.html @@ -540,7 +540,7 @@

HTTP request

POST /jobInfos HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Content-Length: 198
+Content-Length: 205
 Host: localhost:8080
 
 {
@@ -563,11 +563,11 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1295 +Content-Length: 1348 { - "totalPages" : 1, "totalElements" : 2, + "totalPages" : 1, "size" : 10, "content" : [ { "company" : "기업명 1", @@ -602,6 +602,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 2, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -611,12 +614,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 2, - "first" : true, - "last" : true, "empty" : false }
@@ -844,7 +844,7 @@

Response fields

diff --git a/src/main/resources/static/docs/jobInterview.html b/src/main/resources/static/docs/jobInterview.html index dfa3e71a..076e69f5 100644 --- a/src/main/resources/static/docs/jobInterview.html +++ b/src/main/resources/static/docs/jobInterview.html @@ -455,7 +455,7 @@

HTTP request

POST /jobInterviews HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 213
+Content-Length: 220
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -536,7 +536,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 317 +Content-Length: 329 { "id" : 1, @@ -546,8 +546,8 @@

HTTP response

"talkerBelonging" : "대담자의 소속", "talkerName" : "대담자의 성명", "category" : "INTERN", - "createdAt" : "2024-11-18T19:55:54.938534", - "updatedAt" : "2024-11-18T19:55:54.938537" + "createdAt" : "2024-11-19T15:22:43.6470123", + "updatedAt" : "2024-11-19T15:22:43.6470123" }
@@ -699,11 +699,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1205 +Content-Length: 1255 { - "totalPages" : 1, "totalElements" : 2, + "totalPages" : 1, "size" : 10, "content" : [ { "id" : 1, @@ -714,8 +714,8 @@

HTTP response

"talkerName" : "대담자의 성명1", "favorite" : false, "category" : "INTERN", - "createdAt" : "2024-11-18T19:55:54.88224", - "updatedAt" : "2024-11-18T19:55:54.882242" + "createdAt" : "2024-11-19T15:22:43.500491", + "updatedAt" : "2024-11-19T15:22:43.500491" }, { "id" : 2, "title" : "잡페어 인터뷰의 제목2", @@ -725,8 +725,8 @@

HTTP response

"talkerName" : "대담자의 성명2", "favorite" : true, "category" : "INTERN", - "createdAt" : "2024-11-18T19:55:54.882264", - "updatedAt" : "2024-11-18T19:55:54.882265" + "createdAt" : "2024-11-19T15:22:43.500491", + "updatedAt" : "2024-11-19T15:22:43.500491" } ], "number" : 0, "sort" : { @@ -734,6 +734,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 2, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -743,12 +746,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 2, - "first" : true, - "last" : true, "empty" : false }
@@ -1005,7 +1005,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 339 +Content-Length: 352 { "id" : 1, @@ -1016,8 +1016,8 @@

HTTP response

"talkerName" : "대담자의 성명", "favorite" : false, "category" : "INTERN", - "createdAt" : "2024-11-18T19:55:54.921774", - "updatedAt" : "2024-11-18T19:55:54.921776" + "createdAt" : "2024-11-19T15:22:43.5889318", + "updatedAt" : "2024-11-19T15:22:43.5889318" }
@@ -1117,7 +1117,7 @@

HTTP request

PUT /jobInterviews/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 217
+Content-Length: 224
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1220,7 +1220,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 314 +Content-Length: 325 { "id" : 1, @@ -1231,7 +1231,7 @@

HTTP response

"talkerName" : "수정된 대담자 성명", "category" : "INTERN", "createdAt" : "2021-01-01T12:00:00", - "updatedAt" : "2024-11-18T19:55:54.788456" + "updatedAt" : "2024-11-19T15:22:43.3501083" }
@@ -1476,7 +1476,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/notice.html b/src/main/resources/static/docs/notice.html index 5f1e5c82..ba748099 100644 --- a/src/main/resources/static/docs/notice.html +++ b/src/main/resources/static/docs/notice.html @@ -454,7 +454,7 @@

HTTP request

POST /notices HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 121
+Content-Length: 126
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -521,7 +521,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 960 +Content-Length: 999 { "id" : 1, @@ -529,29 +529,29 @@

HTTP response

"content" : "공지 사항 내용", "hitCount" : 0, "fixed" : true, - "createdAt" : "2024-11-18T19:55:52.009219", - "updatedAt" : "2024-11-18T19:55:52.009221", + "createdAt" : "2024-11-19T15:22:34.8606778", + "updatedAt" : "2024-11-19T15:22:34.8606778", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:52.00921", - "updatedAt" : "2024-11-18T19:55:52.009213" + "createdAt" : "2024-11-19T15:22:34.8606778", + "updatedAt" : "2024-11-19T15:22:34.8606778" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:52.009214", - "updatedAt" : "2024-11-18T19:55:52.009215" + "createdAt" : "2024-11-19T15:22:34.8606778", + "updatedAt" : "2024-11-19T15:22:34.8606778" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:52.009218", - "updatedAt" : "2024-11-18T19:55:52.009218" + "createdAt" : "2024-11-19T15:22:34.8606778", + "updatedAt" : "2024-11-19T15:22:34.8606778" } ] }
@@ -722,26 +722,26 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 854 +Content-Length: 899 { - "totalPages" : 1, "totalElements" : 2, + "totalPages" : 1, "size" : 10, "content" : [ { "id" : 1, "title" : "공지 사항 1", "hitCount" : 10, "fixed" : true, - "createdAt" : "2024-11-18T19:55:51.877105", - "updatedAt" : "2024-11-18T19:55:51.877107" + "createdAt" : "2024-11-19T15:22:34.6266992", + "updatedAt" : "2024-11-19T15:22:34.6266992" }, { "id" : 2, "title" : "공지 사항 2", "hitCount" : 10, "fixed" : false, - "createdAt" : "2024-11-18T19:55:51.877121", - "updatedAt" : "2024-11-18T19:55:51.877121" + "createdAt" : "2024-11-19T15:22:34.6266992", + "updatedAt" : "2024-11-19T15:22:34.6266992" } ], "number" : 0, "sort" : { @@ -749,6 +749,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 2, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -758,12 +761,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 2, - "first" : true, - "last" : true, "empty" : false } @@ -994,7 +994,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 947 +Content-Length: 987 { "id" : 1, @@ -1002,29 +1002,29 @@

HTTP response

"content" : "content", "hitCount" : 10, "fixed" : true, - "createdAt" : "2024-11-18T19:55:51.982112", - "updatedAt" : "2024-11-18T19:55:51.982112", + "createdAt" : "2024-11-19T15:22:34.8150949", + "updatedAt" : "2024-11-19T15:22:34.8150949", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:51.982104", - "updatedAt" : "2024-11-18T19:55:51.982107" + "createdAt" : "2024-11-19T15:22:34.8150949", + "updatedAt" : "2024-11-19T15:22:34.8150949" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:51.982108", - "updatedAt" : "2024-11-18T19:55:51.982109" + "createdAt" : "2024-11-19T15:22:34.8150949", + "updatedAt" : "2024-11-19T15:22:34.8150949" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", - "createdAt" : "2024-11-18T19:55:51.98211", - "updatedAt" : "2024-11-18T19:55:51.98211" + "createdAt" : "2024-11-19T15:22:34.8150949", + "updatedAt" : "2024-11-19T15:22:34.8150949" } ] } @@ -1171,7 +1171,7 @@

HTTP request

PUT /notices/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 142
+Content-Length: 147
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1238,7 +1238,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 955 +Content-Length: 989 { "id" : 1, @@ -1247,28 +1247,28 @@

HTTP response

"hitCount" : 10, "fixed" : false, "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-11-18T19:55:51.921969", + "updatedAt" : "2024-11-19T15:22:34.6974643", "files" : [ { "id" : 1, "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d", "name" : "예시 첨부 파일 1.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-11-18T19:55:51.921919" + "updatedAt" : "2024-11-19T15:22:34.6974643" }, { "id" : 2, "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea", "name" : "예시 첨부 파일 2.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-11-18T19:55:51.921926" + "updatedAt" : "2024-11-19T15:22:34.6974643" }, { "id" : 3, "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45", "name" : "예시 첨부 파일 3.jpg", "mimeType" : "image/jpeg", "createdAt" : "2024-01-01T12:00:00", - "updatedAt" : "2024-11-18T19:55:51.921929" + "updatedAt" : "2024-11-19T15:22:34.6974643" } ] }
@@ -1440,7 +1440,7 @@

HTTP response

diff --git a/src/main/resources/static/docs/project.html b/src/main/resources/static/docs/project.html index 1d8b255a..4237350c 100644 --- a/src/main/resources/static/docs/project.html +++ b/src/main/resources/static/docs/project.html @@ -469,11 +469,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1759 +Content-Length: 1828 { - "totalPages" : 1, "totalElements" : 2, + "totalPages" : 1, "size" : 10, "content" : [ { "id" : 1, @@ -524,6 +524,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 2, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -533,12 +536,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 2, - "first" : true, - "last" : true, "empty" : false } @@ -867,7 +867,7 @@

HTTP request

POST /projects HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 535
+Content-Length: 557
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -906,7 +906,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1481 +Content-Length: 1540 { "id" : 1, @@ -940,24 +940,24 @@

HTTP response

"userName" : "유저 이름", "isAnonymous" : true, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.832829", - "updatedAt" : "2024-11-18T19:55:52.832841" + "createdAt" : "2024-11-19T15:22:36.8727225", + "updatedAt" : "2024-11-19T15:22:36.8727225" }, { "id" : 2, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.832843", - "updatedAt" : "2024-11-18T19:55:52.832844" + "createdAt" : "2024-11-19T15:22:36.8727225", + "updatedAt" : "2024-11-19T15:22:36.8727225" }, { "id" : 3, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.832844", - "updatedAt" : "2024-11-18T19:55:52.832845" + "createdAt" : "2024-11-19T15:22:36.8727225", + "updatedAt" : "2024-11-19T15:22:36.8727225" } ], "url" : "프로젝트 URL", "description" : "프로젝트 설명" @@ -1315,12 +1315,12 @@

HTTP request

Content-Disposition: form-data; name=thumbnails; filename=thumbnails.json Content-Type: application/json -[{"id":1,"uuid":"c7fabd9b-eea0-48c9-b94d-8fab318b2c88","name":"썸네일1.png","mimeType":"image/png","createdAt":"2024-11-18T19:55:53.698466","updatedAt":"2024-11-18T19:55:53.698477"},{"id":1,"uuid":"989ca4f3-9b7b-4784-b842-64b2314903ca","name":"썸네일2.png","mimeType":"image/png","createdAt":"2024-11-18T19:55:53.698519","updatedAt":"2024-11-18T19:55:53.69852"}] +[{"id":1,"uuid":"099ee9f5-7028-4230-bbeb-59854a2462cc","name":"썸네일1.png","mimeType":"image/png","createdAt":"2024-11-19T15:22:37.9534527","updatedAt":"2024-11-19T15:22:37.9534527"},{"id":1,"uuid":"75b2b11a-5648-4296-be50-d3665dc9ede4","name":"썸네일2.png","mimeType":"image/png","createdAt":"2024-11-19T15:22:37.9534527","updatedAt":"2024-11-19T15:22:37.9534527"}] --6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm Content-Disposition: form-data; name=posters; filename=thumbnails.json Content-Type: application/json -[{"id":1,"uuid":"cdf4712a-9d35-4c99-9ad3-e97036c7028c","name":"포스터1.png","mimeType":"image/png","createdAt":"2024-11-18T19:55:53.698555","updatedAt":"2024-11-18T19:55:53.698556"},{"id":1,"uuid":"eb4efbf9-9539-466b-a349-b56970cfad1b","name":"포스터2.png","mimeType":"image/png","createdAt":"2024-11-18T19:55:53.698561","updatedAt":"2024-11-18T19:55:53.698562"}] +[{"id":1,"uuid":"5ece1858-c541-4075-8099-5c360accafab","name":"포스터1.png","mimeType":"image/png","createdAt":"2024-11-19T15:22:37.9534527","updatedAt":"2024-11-19T15:22:37.9534527"},{"id":1,"uuid":"ee152b69-effc-4e8c-9b38-9c8459e7ff52","name":"포스터2.png","mimeType":"image/png","createdAt":"2024-11-19T15:22:37.9534527","updatedAt":"2024-11-19T15:22:37.9534527"}] --6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
@@ -1363,7 +1363,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 24 +Content-Length: 26 { "successCount" : 2 @@ -1426,7 +1426,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1481 +Content-Length: 1540 { "id" : 1, @@ -1460,24 +1460,24 @@

HTTP response

"userName" : "유저 이름", "isAnonymous" : true, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.750773", - "updatedAt" : "2024-11-18T19:55:52.750777" + "createdAt" : "2024-11-19T15:22:36.6653757", + "updatedAt" : "2024-11-19T15:22:36.6653757" }, { "id" : 2, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.750782", - "updatedAt" : "2024-11-18T19:55:52.750783" + "createdAt" : "2024-11-19T15:22:36.6653757", + "updatedAt" : "2024-11-19T15:22:36.6653757" }, { "id" : 3, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.750784", - "updatedAt" : "2024-11-18T19:55:52.750784" + "createdAt" : "2024-11-19T15:22:36.6653757", + "updatedAt" : "2024-11-19T15:22:36.6653757" } ], "url" : "프로젝트 URL", "description" : "프로젝트 설명" @@ -1740,7 +1740,7 @@

HTTP request

PUT /projects/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 530
+Content-Length: 552
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1779,7 +1779,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1477 +Content-Length: 1536 { "id" : 1, @@ -1813,24 +1813,24 @@

HTTP response

"userName" : "유저 이름", "isAnonymous" : true, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.387676", - "updatedAt" : "2024-11-18T19:55:52.387679" + "createdAt" : "2024-11-19T15:22:35.8996673", + "updatedAt" : "2024-11-19T15:22:35.8996673" }, { "id" : 2, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.387684", - "updatedAt" : "2024-11-18T19:55:52.387684" + "createdAt" : "2024-11-19T15:22:35.8996673", + "updatedAt" : "2024-11-19T15:22:35.8996673" }, { "id" : 3, "projectId" : 1, "userName" : "유저 이름", "isAnonymous" : false, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.387687", - "updatedAt" : "2024-11-18T19:55:52.387687" + "createdAt" : "2024-11-19T15:22:35.8996673", + "updatedAt" : "2024-11-19T15:22:35.8996673" } ], "url" : "프로젝트 URL", "description" : "프로젝트 설명" @@ -2458,7 +2458,7 @@

HTTP request

POST /projects/1/comment HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: all_access_token
-Content-Length: 57
+Content-Length: 60
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -2478,7 +2478,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 212 +Content-Length: 222 { "id" : 1, @@ -2486,8 +2486,8 @@

HTTP response

"userName" : "유저 이름", "isAnonymous" : true, "content" : "댓글 내용", - "createdAt" : "2024-11-18T19:55:52.720346", - "updatedAt" : "2024-11-18T19:55:52.720349" + "createdAt" : "2024-11-19T15:22:36.5762487", + "updatedAt" : "2024-11-19T15:22:36.5762487" }
@@ -2694,11 +2694,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 1759 +Content-Length: 1828 { - "totalPages" : 1, "totalElements" : 2, + "totalPages" : 1, "size" : 10, "content" : [ { "id" : 1, @@ -2749,6 +2749,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 2, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -2758,12 +2761,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 2, - "first" : true, - "last" : true, "empty" : false }
@@ -3072,7 +3072,7 @@

Response fields

diff --git a/src/main/resources/static/docs/proposal.html b/src/main/resources/static/docs/proposal.html deleted file mode 100644 index 63a966aa..00000000 --- a/src/main/resources/static/docs/proposal.html +++ /dev/null @@ -1,1646 +0,0 @@ - - - - - - - -과제 제안 API - - - - - -
-
-

과제 제안 API

-
-
-

과제 제안 생성 (POST /proposals)

-
-
-
-

HTTP request

-
-
-
POST /proposals HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 220
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "webSite" : "website.com",
-  "title" : "과제제안제목",
-  "email" : "이메일@email.com",
-  "projectTypes" : [ "LAB", "CLUB" ],
-  "content" : "과제제안내용",
-  "isVisible" : true,
-  "isAnonymous" : true
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

과제제안 제목

content

String

true

과제제안 내용

webSite

String

과제제안 사이트

projectTypes

Array

true

과제제안 프로젝트 유형들

email

String

true

과제제안 이메일

isVisible

Boolean

true

공개 여부

isAnonymous

Boolean

true

익명 여부

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 237
-
-{
-  "id" : 1,
-  "authorName" : "작성자",
-  "email" : "이메일@email.com",
-  "webSite" : "website.com",
-  "title" : "과제제안제목",
-  "projectTypes" : [ "LAB", "CLUB" ],
-  "content" : "과제제안내용",
-  "replied" : false
-}
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

과제 제안 ID

authorName

String

과제 제안 작성자

email

String

과제 제안 이메일

webSite

String

과제 제안 사이트

title

String

과제 제안 제목

projectTypes

Array

과제 제안 프로젝트 유형들

content

String

과제 제안 내용

replied

Boolean

과제 제안 답변 유무

-
-
-
-
-
-

과제 제안 리스트 조회 (GET /proposals)

-
-
-
-

Query parameters

- ---- - - - - - - - - - - - - - - - - - - - - -
ParameterDescription

title

찾고자 하는 과제제안 제목

page

페이지 번호 [default = 0]

size

페이지 크기 [default = 10]

-
-
-

HTTP request

-
-
-
GET /proposals HTTP/1.1
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 723
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "id" : 1,
-    "title" : "과제 제안1",
-    "name" : "이름",
-    "createdDate" : "2024-11-17T00:47:41.048136"
-  }, {
-    "id" : 2,
-    "title" : "과제 제안2",
-    "name" : "이름",
-    "createdDate" : "2024-11-17T00:47:41.048213"
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "numberOfElements" : 2,
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

content[].id

Number

과제 제안 ID

content[].title

String

과제 제안 제목

content[].name

String

과제 제안 작성자

content[].createdDate

String

과제 제안 생성일

pageable

Object

페이지 정보

pageable.pageNumber

Number

현재 페이지 번호

pageable.pageSize

Number

페이지 당 요소 수

pageable.sort.empty

Boolean

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

정렬되지 않은 상태인지 여부

pageable.offset

Number

오프셋

pageable.paged

Boolean

페이징된 여부

pageable.unpaged

Boolean

페이징되지 않은 여부

totalElements

Number

전체 요소 수

totalPages

Number

전체 페이지 수

size

Number

페이지 당 요소 수

number

Number

현재 페이지 번호

numberOfElements

Number

현재 페이지 요소 수

first

Boolean

첫 페이지 여부

last

Boolean

마지막 페이지 여부

sort.empty

Boolean

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

정렬된 상태인지 여부

empty

Boolean

비어있는 페이지 여부

-
-
-
-
-
-

과제 제안 상세 조회 (GET /proposals/{proposalId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /proposals/{proposalId}
ParameterDescription

proposalId

수정할 과제제안 ID

-
-
-

HTTP request

-
-
-
GET /proposals/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Host: localhost:8080
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 287
-
-{
-  "id" : 1,
-  "authorName" : "작성자",
-  "email" : "작성자@email.com",
-  "webSite" : "website.com",
-  "title" : "과제 제안 제목",
-  "projectTypes" : [ "LAB", "CLUB", "STARTUP", "RESEARCH_AND_BUSINESS_FOUNDATION" ],
-  "content" : "과제제안 내용",
-  "replied" : false
-}
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

과제 제안 ID

authorName

String

과제 제안 작성자

email

String

과제 제안 이메일

webSite

String

과제 제안 사이트

title

String

과제 제안 제목

projectTypes

Array

과제 제안 프로젝트 유형들

content

String

과제 제안 내용

replied

Boolean

과제 제안 답변 유무

-
-
-
-
-
-

과제 제안 수정 (PUT /proposals/{proposalId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /proposals/{proposalId}
ParameterDescription

proposalId

수정할 과제제안 ID

-
-
-

HTTP request

-
-
-
PUT /proposals/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 220
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "webSite" : "website.com",
-  "title" : "과제제안제목",
-  "email" : "이메일@email.com",
-  "projectTypes" : [ "LAB", "CLUB" ],
-  "content" : "과제제안내용",
-  "isVisible" : true,
-  "isAnonymous" : true
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

과제제안 제목

content

String

true

과제제안 내용

webSite

String

과제제안 사이트

projectTypes

Array

true

과제제안 프로젝트 유형들

email

String

true

과제제안 이메일

isVisible

Boolean

true

공개 여부

isAnonymous

Boolean

true

익명 여부

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 237
-
-{
-  "id" : 1,
-  "authorName" : "작성자",
-  "email" : "이메일@email.com",
-  "webSite" : "website.com",
-  "title" : "과제제안제목",
-  "projectTypes" : [ "LAB", "CLUB" ],
-  "content" : "과제제안내용",
-  "replied" : false
-}
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

과제 제안 ID

authorName

String

과제 제안 작성자

email

String

과제 제안 이메일

webSite

String

과제 제안 사이트

title

String

과제 제안 제목

projectTypes

Array

과제 제안 프로젝트 유형들

content

String

과제 제안 내용

replied

Boolean

과제 제안 답변 유무

-
-
-
-
-
-

과제 제안 삭제 (DELETE /proposals/{proposalId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /proposals/{proposalId}
ParameterDescription

proposalId

삭제할 과제제안 ID

-
-
-

HTTP request

-
-
-
DELETE /proposals/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-

과제 제안 답변 조회 (GET /proposals/{proposalId}/reply)

-
-
-
-

Query parameters

-
-

Snippet query-parameters not found for operation::proposal-controller-test/get-proposal-replies

-
-
-
-

HTTP request

-
-
-
GET /proposals/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 100
-
-{
-  "id" : 1,
-  "title" : "과제제안 답변 제목",
-  "content" : "과제제안 답변 내용"
-}
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

과제 제안 답변 ID

title

String

과제 제안 답변 제목

content

String

과제 제안 답변 내용

-
-
-
-
-
-

과제 제안 답변 생성 (PUT /proposals/{proposalId}/reply/)

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /proposals/{proposalId}/reply
ParameterDescription

proposalId

해당 과제제안 ID

-
-
-

HTTP request

-
-
-
POST /proposals/1/reply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 62
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "답변 제목",
-  "content" : "답변 내용"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

과제제안 답변 제목

content

String

true

과제제안 답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 201 Created
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 74
-
-{
-  "id" : 1,
-  "title" : "답변 제목",
-  "content" : "답변 내용"
-}
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

과제 제안 답변 ID

title

String

과제 제안 답변 제목

content

String

과제 제안 답변 내용

-
-
-
-
-
-

과제 제안 답변 수정 (PUT /proposals/{proposalId}/reply/{replyId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - - - - - -
Table 1. /proposals/{proposalId}/reply/{replyId}
ParameterDescription

proposalId

해당 과제제안 ID

replyId

과제 제안 답변 ID

-
-
-

HTTP request

-
-
-
PUT /proposals/1/reply/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Content-Length: 62
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "title" : "답변 제목",
-  "content" : "답변 내용"
-}
-
-
-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

title

String

true

과제제안 답변 제목

content

String

true

과제제안 답변 내용

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 74
-
-{
-  "id" : 1,
-  "title" : "답변 제목",
-  "content" : "답변 내용"
-}
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

과제 제안 답변 ID

title

String

과제 제안 답변 제목

content

String

과제 제안 답변 내용

-
-
-
-
-
-

과제 제안 답변 삭제 (DELETE /proposals/{proposalId}/reply/{replyId})

-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - - - - - -
Table 1. /proposals/{proposalId}/reply/{proposalReplyId}
ParameterDescription

proposalId

해당 과제제안 ID

proposalReplyId

삭제할 과제제안 답변 ID

-
-
-

HTTP request

-
-
-
DELETE /proposals/1/reply/1 HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/quiz.html b/src/main/resources/static/docs/quiz.html index 044d2b30..87741882 100644 --- a/src/main/resources/static/docs/quiz.html +++ b/src/main/resources/static/docs/quiz.html @@ -1,800 +1,803 @@ - - - - - - - -퀴즈 결과 API - - - - - -
-
-

퀴즈 결과 API

-
-
-
-

퀴즈 결과 조회 (GET /quizzes/result)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-Content-Length: 739
-
-{
-  "totalPages" : 1,
-  "totalElements" : 2,
-  "size" : 10,
-  "content" : [ {
-    "userId" : 1,
-    "name" : "name",
-    "phone" : "010-1111-1111",
-    "email" : "scg@scg.skku.ac.kr",
-    "successCount" : 3
-  }, {
-    "userId" : 2,
-    "name" : "name2",
-    "phone" : "010-0000-1234",
-    "email" : "iam@2tle.io",
-    "successCount" : 1
-  } ],
-  "number" : 0,
-  "sort" : {
-    "empty" : true,
-    "sorted" : false,
-    "unsorted" : true
-  },
-  "pageable" : {
-    "pageNumber" : 0,
-    "pageSize" : 10,
-    "sort" : {
-      "empty" : true,
-      "sorted" : false,
-      "unsorted" : true
-    },
-    "offset" : 0,
-    "paged" : true,
-    "unpaged" : false
-  },
-  "numberOfElements" : 2,
-  "first" : true,
-  "last" : true,
-  "empty" : false
-}
-
-
-
-
-

Response fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

-
-
-
-
-
-

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

-
-
-
-

HTTP request

-
-
-
GET /quizzes/result/excel HTTP/1.1
-Content-Type: application/octet-stream;charset=UTF-8
-Authorization: admin_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Query parameters

- ----- - - - - - - - - - - - - - - -
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/octet-stream;charset=UTF-8
-Content-Disposition: attachment; filename=excel.xlsx
-Content-Length: 2821
-
-PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
-�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
-�0D�~EȽ��ADҔ���A? ��6�lB�J?ߜ���0���ͯ�)�@��׍H6���V>��$;�SC
-;̢(�ra�g�l�&�e��L!y�%��49��`_���4G���F��J��Wg
�GS�b����
-~�PK�|wؑ�PK-docProps/core.xmlm��J�0F_%依����.�,��(ޅdl��I��ֵۛ�
-�H�;s�L�=ꁼ��55eyA	iUoښ>vن��Qb�kj,�6�t\Z�{o��c Ic���]��١!O�I��Z���-8!_E�P�9h�B�(`fn1ғR�E���0�P��X�����u��aN����1W3�&b�t{s?��f��D�T'5�EDE����6�<�.�;ڔEy�1��́|�N繂_����n}s��!��]O�R��Ϛ�OPK���x�PK-xl/sharedStrings.xml=�A� ツ��.z0Ɣ�`������,�����q2��o�ԇ���N�E��x5�z>�W���(R�K���^4{�����ŀ�5��y�V����y�m�XV�\�.�j����
8�PKp��&x�PK-
xl/styles.xml���n� ��>bop2TQ��P)U�RWb�6*�����ӤS�Nw�s���3ߍ֐���t��(l��������ҝx�!N=@$ɀ��}��3c���ʰr`:i��2��w,�
-�d
�T��R#�voc �;c�iE��Û��E<|��4Iɣ����F#��n���B�z�F���y�j3y��yҥ�jt>���2��Lژ�!6��2F�OY��4@M�!���G��������1�t��y��p��"	n����u�����a�ΦDi�9�&#��%I��9��}���cK��T��$?������`J������7���o��f��M|PK�1X@C�PK-xl/workbook.xmlM���0��>E�wi1ƨ����z/�HmI�_j��qf��)ʧٌ��w�LC��ָ��[u��T�b�a��؊;���8�9��G�)��5�|�:�2<8MuK=b�#�	q�V�u
����K��H\)�\�&�t͌��%���?��B��T�PK	���PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
����s����;[�E8D&a��h@-
��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-�|wؑ��docProps/app.xmlPK-���x�qdocProps/core.xmlPK-p��&x��xl/sharedStrings.xmlPK-�1X@C�
xl/styles.xmlPK-	���xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
-
-
-
-
-
-
-
-
-
- - + + + + + + + +퀴즈 결과 API + + + + + +
+
+

퀴즈 결과 API

+
+
+
+

퀴즈 결과 조회 (GET /quizzes/result)

+
+
+
+

HTTP request

+
+
+
GET /quizzes/result HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+Content-Length: 778
+
+{
+  "totalElements" : 2,
+  "totalPages" : 1,
+  "size" : 10,
+  "content" : [ {
+    "userId" : 1,
+    "name" : "name",
+    "phone" : "010-1111-1111",
+    "email" : "scg@scg.skku.ac.kr",
+    "successCount" : 3
+  }, {
+    "userId" : 2,
+    "name" : "name2",
+    "phone" : "010-0000-1234",
+    "email" : "iam@2tle.io",
+    "successCount" : 1
+  } ],
+  "number" : 0,
+  "sort" : {
+    "empty" : true,
+    "sorted" : false,
+    "unsorted" : true
+  },
+  "numberOfElements" : 2,
+  "first" : true,
+  "last" : true,
+  "pageable" : {
+    "pageNumber" : 0,
+    "pageSize" : 10,
+    "sort" : {
+      "empty" : true,
+      "sorted" : false,
+      "unsorted" : true
+    },
+    "offset" : 0,
+    "unpaged" : false,
+    "paged" : true
+  },
+  "empty" : false
+}
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

+
+
+
+
+
+

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

+
+
+
+

HTTP request

+
+
+
GET /quizzes/result/excel HTTP/1.1
+Content-Type: application/octet-stream;charset=UTF-8
+Authorization: admin_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

Query parameters

+ +++++ + + + + + + + + + + + + + + +
ParameterRequiredDescription

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/octet-stream;charset=UTF-8
+Content-Disposition: attachment; filename=excel.xlsx
+Content-Length: 2829
+
+PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
+�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
+�0D��ro�z�4� �'{����MHV�盓z���T��E�1e�����Ɇ�ѳ����:�No7jH!bb�Y��V��������T�)$o���0M��9ؗGb�7�pe��*~�R�>��Y�EB���nW������PK6n�!��PK-docProps/core.xmlm�]K�0��J�}{�n
+m�(Aq`e�]H�m�� �v�{�:+�wI��<���������r��F����c�K�I�גFcE�!ۺ�	�p�Ez�I�hτ�H�e^t���"�c�b��!^]��W�"y���K8L��.FrRJ�(�f��*���(�������B}�P�8f�j��F��n���^O_H��f�!(�(`���F�����ّ�ȋuJiJ/�|Ê��ϞK�5?	���՗�������-�%����PK��g�PK-xl/sharedStrings.xml=�A
+�0�{��D�i�/��tm�&f7�����0Ì�7mꃕc&���B�y��Zx>���~72��X�I��nx�s�["�5����R7�\���u�\*����M��9��"��~PKh���y�PK-
+xl/styles.xml���n� ��J}���d���&C%W��J]�9ۨpX@"�O_0N�L:�������n4���ye���UA	`c�®���iKw���aҰ����C^�MF���Ik�!��c~p �O&�٦(��
+)/�dj<i�	CE�x�Z�*k�^�or:*i���XmQ(aY�m�P�]�B��S3O��,o�0O����%��[��Ii�;Ćf���ֱ K~��(Z�������}�91�8�/>Z'�nߟ%^jhC48��);�t�51�Jt�NȋcI"���iu��{lI���L����_�8ВfL.�����ƒ����hv���PK����E�PK-xl/workbook.xmlM���0��&�C�wi1ƨ����z/�@mI�_0��83��d��l�@�;	i"���|m\+�^\w'��v��>���=[xG���Tuh5%~D�$�V�E���P��!F;�Gn�q��[��j1=���F��U�&�3��U2]E3a�K	b���~���T�PK5%����PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
+����s����;[�E8D&a��h@-
+��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-6n�!���docProps/app.xmlPK-��g�sdocProps/core.xmlPK-h���y��xl/sharedStrings.xmlPK-����E�
+�xl/styles.xmlPK-5%����xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/static/docs/talk.html b/src/main/resources/static/docs/talk.html index fd1793cf..04e3e0af 100644 --- a/src/main/resources/static/docs/talk.html +++ b/src/main/resources/static/docs/talk.html @@ -455,7 +455,7 @@

HTTP request

POST /talks HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 361
+Content-Length: 376
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -562,7 +562,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 465 +Content-Length: 485 { "id" : 1, @@ -580,8 +580,8 @@

HTTP response

"answer" : 0, "options" : [ "선지1", "선지2" ] } ], - "createdAt" : "2024-11-18T19:55:56.391775", - "updatedAt" : "2024-11-18T19:55:56.391777" + "createdAt" : "2024-11-19T15:22:47.8125417", + "updatedAt" : "2024-11-19T15:22:47.8125417" }
@@ -746,11 +746,11 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 999 +Content-Length: 1047 { - "totalPages" : 1, "totalElements" : 1, + "totalPages" : 1, "size" : 10, "content" : [ { "id" : 1, @@ -769,8 +769,8 @@

HTTP response

"answer" : 0, "options" : [ "선지1", "선지2" ] } ], - "createdAt" : "2024-11-18T19:55:56.416019", - "updatedAt" : "2024-11-18T19:55:56.416023" + "createdAt" : "2024-11-19T15:22:47.8752375", + "updatedAt" : "2024-11-19T15:22:47.8752375" } ], "number" : 0, "sort" : { @@ -778,6 +778,9 @@

HTTP response

"sorted" : false, "unsorted" : true }, + "numberOfElements" : 1, + "first" : true, + "last" : true, "pageable" : { "pageNumber" : 0, "pageSize" : 10, @@ -787,12 +790,9 @@

HTTP response

"unsorted" : true }, "offset" : 0, - "paged" : true, - "unpaged" : false + "unpaged" : false, + "paged" : true }, - "numberOfElements" : 1, - "first" : true, - "last" : true, "empty" : false } @@ -1067,7 +1067,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 486 +Content-Length: 507 { "id" : 1, @@ -1086,8 +1086,8 @@

HTTP response

"answer" : 0, "options" : [ "선지1", "선지2" ] } ], - "createdAt" : "2024-11-18T19:55:56.373952", - "updatedAt" : "2024-11-18T19:55:56.373955" + "createdAt" : "2024-11-19T15:22:47.7544993", + "updatedAt" : "2024-11-19T15:22:47.7544993" } @@ -1205,7 +1205,7 @@

HTTP request

PUT /talks/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: admin_access_token
-Content-Length: 461
+Content-Length: 476
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1334,7 +1334,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 565 +Content-Length: 585 { "id" : 1, @@ -1352,8 +1352,8 @@

HTTP response

"answer" : 0, "options" : [ "수정한 선지1", "수정한 선지2" ] } ], - "createdAt" : "2024-11-18T19:55:56.226099", - "updatedAt" : "2024-11-18T19:55:56.226104" + "createdAt" : "2024-11-19T15:22:47.5460119", + "updatedAt" : "2024-11-19T15:22:47.5460119" }
@@ -1550,7 +1550,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 205 +Content-Length: 215 { "quiz" : [ { @@ -1625,7 +1625,7 @@

HTTP request

POST /talks/1/quiz HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: access_token
-Content-Length: 47
+Content-Length: 52
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -1702,7 +1702,7 @@ 

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 40 +Content-Length: 43 { "success" : true, @@ -1898,7 +1898,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json;charset=UTF-8 -Content-Length: 41 +Content-Length: 44 { "success" : false, @@ -1949,7 +1949,7 @@

Response fields

diff --git a/src/main/resources/static/docs/user-controller-test.html b/src/main/resources/static/docs/user-controller-test.html deleted file mode 100644 index 30efc3b2..00000000 --- a/src/main/resources/static/docs/user-controller-test.html +++ /dev/null @@ -1,937 +0,0 @@ - - - - - - - -유저 API - - - - - -
-
-

유저 API

-
-
-
-

로그인 유저 기본 정보 조회 (GET /users/me)

-
-
-
-

HTTP request

-
-
-
GET /users/me HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Request cookies

- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

Request headers

- ---- - - - - - - - - - - - - -
NameDescription

Authorization

access token

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 356
-
-{
-  "id" : 1,
-  "name" : "이름",
-  "phone" : "010-1234-5678",
-  "email" : "student@g.skku.edu",
-  "socialLoginId" : "아이디",
-  "userType" : "STUDENT",
-  "division" : null,
-  "position" : null,
-  "studentNumber" : "2000123456",
-  "departmentName" : "학과",
-  "createdAt" : "2024-08-21T15:21:47.871876",
-  "updatedAt" : "2024-08-21T15:21:47.871886"
-}
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

사용자 ID

name

String

사용자 이름

phone

String

사용자 전화번호

email

String

사용자 이메일

socialLoginId

String

사용자 이메일

userType

String

사용자 유형

division

String

소속

position

String

직책

studentNumber

String

학번

departmentName

String

학과 이름

createdAt

String

생성일

updatedAt

String

수정일

-
-
-
-
-
-

로그인 유저 기본 정보 수정 (PUT /users/me)

-
-
-
-

HTTP request

-
-
-
PUT /users/me HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Authorization: user_access_token
-Content-Length: 193
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-{
-  "name" : "이름",
-  "phone" : "010-1234-5678",
-  "email" : "student@g.skku.edu",
-  "division" : null,
-  "position" : null,
-  "studentNumber" : "2000123456",
-  "departmentName" : "학과"
-}
-
-
-
-
-

Request cookies

- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

Request headers

- ---- - - - - - - - - - - - - -
NameDescription

Authorization

access token

-
-
-

Request fields

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeRequiredDescription

name

String

true

이름

phone

String

true

전화번호

email

String

true

이메일

division

String

소속

position

String

직책

studentNumber

String

학번

departmentName

String

학과

-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json
-Content-Length: 356
-
-{
-  "id" : 1,
-  "name" : "이름",
-  "phone" : "010-1234-5678",
-  "email" : "student@g.skku.edu",
-  "socialLoginId" : "아이디",
-  "userType" : "STUDENT",
-  "division" : null,
-  "position" : null,
-  "studentNumber" : "2000123456",
-  "departmentName" : "학과",
-  "createdAt" : "2024-08-21T15:21:47.966909",
-  "updatedAt" : "2024-08-21T15:21:47.967104"
-}
-
-
-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

id

Number

사용자 ID

name

String

사용자 이름

phone

String

사용자 전화번호

email

String

사용자 이메일

socialLoginId

String

사용자 이메일

userType

String

사용자 유형

division

String

소속

position

String

직책

studentNumber

String

학번

departmentName

String

학과 이름

createdAt

String

생성일

updatedAt

String

수정일

-
-
-
-
-
-

유저 탈퇴 (DELETE /users/me)

-
-
-
-

HTTP request

-
-
-
DELETE /users/me HTTP/1.1
-Authorization: user_access_token
-Host: localhost:8080
-Cookie: refresh-token=refresh_token
-
-
-
-
-

Request cookies

- ---- - - - - - - - - - - - - -
NameDescription

refresh-token

갱신 토큰

-
-
-

Request headers

- ---- - - - - - - - - - - - - -
NameDescription

Authorization

access token

-
-
-

HTTP response

-
-
-
HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/static/docs/user.html b/src/main/resources/static/docs/user.html index 53114208..9a04908a 100644 --- a/src/main/resources/static/docs/user.html +++ b/src/main/resources/static/docs/user.html @@ -468,7 +468,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 323 +Content-Length: 337 { "id" : 1, @@ -480,8 +480,8 @@

HTTP response

"position" : null, "studentNumber" : "2000123456", "departmentName" : "학과", - "createdAt" : "2024-10-12T22:04:36.086629", - "updatedAt" : "2024-10-12T22:04:36.086638" + "createdAt" : "2024-11-19T15:22:41.8644006", + "updatedAt" : "2024-11-19T15:22:41.8644006" }
@@ -490,14 +490,16 @@

HTTP response

Response fields

---++++ - + + @@ -505,56 +507,67 @@

Response fields

+ + + + + + + + + + + @@ -574,7 +587,7 @@

HTTP request

PUT /users/me HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Authorization: user_access_token
-Content-Length: 195
+Content-Length: 203
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
 
@@ -629,25 +642,25 @@ 

Request fields

- + - + - + - + @@ -662,7 +675,7 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 323 +Content-Length: 337 { "id" : 1, @@ -674,8 +687,8 @@

HTTP response

"position" : null, "studentNumber" : "2000123456", "departmentName" : "학과", - "createdAt" : "2024-10-12T22:04:36.170473", - "updatedAt" : "2024-10-12T22:04:36.170481" + "createdAt" : "2024-11-19T15:22:42.0783323", + "updatedAt" : "2024-11-19T15:22:42.0783323" }
@@ -684,14 +697,16 @@

HTTP response

Response fields

PathName TypeRequired Description

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

department

String

false

학과

---++++ - + + @@ -699,56 +714,67 @@

Response fields

+ + + + + + + + + + + @@ -787,14 +813,14 @@

HTTP response

-

유저 관심 리스트 조회 (GET /users/favorites)

+

유저 관심 프로젝트 리스트 조회 (GET /users/favorites/projects)

HTTP request

-
GET /users/favorites?type=TALK HTTP/1.1
+
GET /users/favorites/projects HTTP/1.1
 Authorization: user_access_token
 Host: localhost:8080
 Cookie: refresh-token=refresh_token
@@ -802,26 +828,215 @@

HTTP request

-

Query parameters

+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 1246
+
+[ {
+  "id" : 1,
+  "thumbnailInfo" : {
+    "id" : 1,
+    "uuid" : "썸네일 uuid 1",
+    "name" : "썸네일 파일 이름 1",
+    "mimeType" : "썸네일 mime 타입 1"
+  },
+  "projectName" : "프로젝트 이름 1",
+  "teamName" : "팀 이름 1",
+  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
+  "professorNames" : [ "교수 이름 1" ],
+  "projectType" : "STARTUP",
+  "projectCategory" : "BIG_DATA_ANALYSIS",
+  "awardStatus" : "FIRST",
+  "year" : 2023,
+  "likeCount" : 100,
+  "like" : false,
+  "bookMark" : false,
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+}, {
+  "id" : 2,
+  "thumbnailInfo" : {
+    "id" : 2,
+    "uuid" : "썸네일 uuid 2",
+    "name" : "썸네일 파일 이름 2",
+    "mimeType" : "썸네일 mime 타입 2"
+  },
+  "projectName" : "프로젝트 이름 2",
+  "teamName" : "팀 이름 2",
+  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
+  "professorNames" : [ "교수 이름 2" ],
+  "projectType" : "LAB",
+  "projectCategory" : "AI_MACHINE_LEARNING",
+  "awardStatus" : "SECOND",
+  "year" : 2023,
+  "likeCount" : 100,
+  "like" : false,
+  "bookMark" : true,
+  "url" : "프로젝트 URL",
+  "description" : "프로젝트 설명"
+} ]
+
+
+
+
+

Response fields

PathName TypeRequired Description

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

--++++ - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterNameTypeRequired Description

type

관심 항목의 타입 (PROJECT, TALK, JOBINTERVIEW)

[].id

Number

true

프로젝트 ID

[].thumbnailInfo

Object

true

썸네일 정보

[].thumbnailInfo.id

Number

true

썸네일 ID

[].thumbnailInfo.uuid

String

true

썸네일 UUID

[].thumbnailInfo.name

String

true

썸네일 파일 이름

[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

[].projectName

String

true

프로젝트 이름

[].teamName

String

true

팀 이름

[].studentNames[]

Array

true

학생 이름

[].professorNames[]

Array

true

교수 이름

[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

[].year

Number

true

프로젝트 년도

[].likeCount

Number

true

좋아요 수

[].like

Boolean

true

좋아요 여부

[].bookMark

Boolean

true

북마크 여부

[].url

String

true

프로젝트 URL

[].description

String

true

프로젝트 설명

+ + + +
+

유저 관심 대담영상 리스트 조회 (GET /users/favorites/talks)

+
+
+
+

HTTP request

+
+
+
GET /users/favorites/talks HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+

HTTP response

@@ -831,16 +1046,46 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 142 +Content-Length: 1026 [ { "id" : 1, - "title" : "Project 1", - "youtubeId" : "youtube 1" + "title" : "제목1", + "youtubeId" : "유튜브 고유ID", + "year" : 2024, + "talkerBelonging" : "대담자 소속1", + "talkerName" : "대담자 성명1", + "favorite" : true, + "quiz" : [ { + "question" : "질문1", + "answer" : 0, + "options" : [ "선지1", "선지2" ] + }, { + "question" : "질문2", + "answer" : 0, + "options" : [ "선지1", "선지2" ] + } ], + "createdAt" : "2024-11-19T15:22:41.7524031", + "updatedAt" : "2024-11-19T15:22:41.7524031" }, { "id" : 2, - "title" : "Project 2", - "youtubeId" : "youtube 2" + "title" : "제목2", + "youtubeId" : "유튜브 고유ID", + "year" : 2024, + "talkerBelonging" : "대담자 소속2", + "talkerName" : "대담자 성명2", + "favorite" : true, + "quiz" : [ { + "question" : "질문1", + "answer" : 0, + "options" : [ "선지1", "선지2" ] + }, { + "question" : "질문2", + "answer" : 0, + "options" : [ "선지1", "선지2" ] + } ], + "createdAt" : "2024-11-19T15:22:41.7524031", + "updatedAt" : "2024-11-19T15:22:41.7524031" } ]
@@ -849,14 +1094,16 @@

HTTP response

Response fields

---++++ - + + @@ -864,17 +1111,216 @@

Response fields

- + + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathName TypeRequired Description

[].id

Number

ID

true

대담 영상 ID

[].title

String

제목

true

대담 영상 제목

[].youtubeId

String

유튜브 ID

true

유튜브 영상의 고유 ID

[].year

Number

true

대담 영상 연도

[].talkerBelonging

String

true

대담자의 소속된 직장/단체

[].talkerName

String

true

대담자의 성명

[].favorite

Boolean

true

관심한 대담영상의 여부

[].quiz

Array

false

퀴즈 데이터, 없는경우 null

[].quiz[].question

String

false

퀴즈 1개의 질문

[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

[].createdAt

String

true

대담 영상 생성일

[].updatedAt

String

true

대담 영상 수정일

+
+
+
+ +
+

유저 관심 잡페어인터뷰영상 리스트 조회 (GET /users/favorites/jobInterviews)

+
+
+
+

HTTP request

+
+
+
GET /users/favorites/jobInterviews HTTP/1.1
+Authorization: user_access_token
+Host: localhost:8080
+Cookie: refresh-token=refresh_token
+
+
+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 717
+
+[ {
+  "id" : 1,
+  "title" : "잡페어 인터뷰의 제목1",
+  "youtubeId" : "유튜브 고유 ID1",
+  "year" : 2023,
+  "talkerBelonging" : "대담자의 소속1",
+  "talkerName" : "대담자의 성명1",
+  "favorite" : false,
+  "category" : "INTERN",
+  "createdAt" : "2024-11-19T15:22:41.6917669",
+  "updatedAt" : "2024-11-19T15:22:41.6917669"
+}, {
+  "id" : 2,
+  "title" : "잡페어 인터뷰의 제목2",
+  "youtubeId" : "유튜브 고유 ID2",
+  "year" : 2024,
+  "talkerBelonging" : "대담자의 소속2",
+  "talkerName" : "대담자의 성명2",
+  "favorite" : true,
+  "category" : "INTERN",
+  "createdAt" : "2024-11-19T15:22:41.6917669",
+  "updatedAt" : "2024-11-19T15:22:41.6917669"
+} ]
+
+
+
+
+

Response fields

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequiredDescription

[].id

Number

true

잡페어 인터뷰 ID

[].title

String

true

잡페어 인터뷰 제목

[].youtubeId

String

true

유튜브 영상의 고유 ID

[].year

Number

true

잡페어 인터뷰 연도

[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

[].createdAt

String

true

잡페어 인터뷰 생성일

[].updatedAt

String

true

잡페어 인터뷰 수정일

@@ -906,18 +1352,20 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 214 +Content-Length: 271 [ { "id" : 1, "title" : "Title 1", "projectId" : 1, - "createdDate" : "2024-10-12T22:04:36.060407" + "createdDate" : "2024-11-19T15:22:41.8208397", + "hasReply" : true }, { "id" : 2, "title" : "Title 2", "projectId" : 2, - "createdDate" : "2024-10-12T22:04:36.060452" + "createdDate" : "2024-11-19T15:22:41.8208397", + "hasReply" : false } ]
@@ -926,14 +1374,16 @@

HTTP response

Response fields

---++++ - + + @@ -941,23 +1391,33 @@

Response fields

+ + + + + + + + + +
PathName TypeRequired Description

[].id

Number

true

문의 ID

[].title

String

true

문의 제목

[].projectId

Number

true

프로젝트 ID

[].createdDate

String

true

문의 생성일

[].hasReply

Boolean

true

답변 여부

@@ -988,16 +1448,18 @@

HTTP response

Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Type: application/json -Content-Length: 175 +Content-Length: 231 [ { "id" : 1, "title" : "Title 1", - "createdDate" : "2024-10-12T22:04:36.13273" + "createdDate" : "2024-11-19T15:22:41.9120201", + "hasReply" : true }, { "id" : 2, "title" : "Title 2", - "createdDate" : "2024-10-12T22:04:36.132747" + "createdDate" : "2024-11-19T15:22:41.9120201", + "hasReply" : false } ]
@@ -1006,14 +1468,16 @@

HTTP response

Response fields

---++++ - + + @@ -1021,18 +1485,27 @@

Response fields

+ + + + + + + + +
PathName TypeRequired Description

[].id

Number

true

과제 제안 ID

[].title

String

true

프로젝트명

[].createdDate

String

true

과제 제안 생성일

[].hasReply

Boolean

true

답변 여부

@@ -1045,7 +1518,7 @@

Response fields