diff --git a/src/main/java/kr/co/lupintech/service/LeaveService.java b/src/main/java/kr/co/lupintech/service/LeaveService.java index 0d686ba..f138936 100644 --- a/src/main/java/kr/co/lupintech/service/LeaveService.java +++ b/src/main/java/kr/co/lupintech/service/LeaveService.java @@ -2,6 +2,7 @@ import kr.co.lupintech.core.annotation.MyErrorLog; import kr.co.lupintech.core.annotation.MyLog; +import kr.co.lupintech.core.exception.Exception401; import kr.co.lupintech.core.factory.AlarmFactory; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -57,7 +58,11 @@ public class LeaveService { User userPS = userRepository.findById(userId).orElseThrow( () -> new Exception500("로그인 된 유저가 DB에 존재하지 않음") ); - // 2. 당직인 경우 + // 2. 탈퇴한 회원인지 확인 + if(userPS.getStatus().equals(false)){ + throw new Exception401("탈퇴한 회원입니다"); + } + // 3. 당직인 경우 if(applyInDTO.getType().equals(LeaveType.DUTY)){ if(!applyInDTO.getStartDate().equals(applyInDTO.getEndDate())){ throw new Exception400("startDate, endDate", "startDate와 endDate가 같아야 합니다."); @@ -101,7 +106,7 @@ public class LeaveService { return new LeaveResponse.ApplyOutDTO(leavePS, userPS); } - // 3. 연차인 경우 + // 4. 연차인 경우 // 1) 사용할 연차 일수 계산하기: 평일만 계산 + 공휴일 계산 by 공공 API Integer usingDays = -1; try{ @@ -170,6 +175,9 @@ public class LeaveService { User userPS = userRepository.findById(userId).orElseThrow( () -> new Exception500("로그인 된 유저가 DB에 존재하지 않음") ); + if(userPS.getStatus().equals(false)){ + throw new Exception401("탈퇴한 회원입니다"); + } if(leavePS.getStatus().equals(LeaveStatus.APPROVAL)){ throw new Exception400("id", "이미 승인된 신청입니다."); diff --git a/src/main/java/kr/co/lupintech/service/UserService.java b/src/main/java/kr/co/lupintech/service/UserService.java index f653822..7190fad 100644 --- a/src/main/java/kr/co/lupintech/service/UserService.java +++ b/src/main/java/kr/co/lupintech/service/UserService.java @@ -80,6 +80,10 @@ public class UserService { Authentication authentication = authenticationManager.authenticate(usernamePasswordAuthenticationToken); MyUserDetails myUserDetails = (MyUserDetails) authentication.getPrincipal(); + if(myUserDetails.getUser().getStatus().equals(false)){ + throw new Exception401("탈퇴한 회원입니다"); + } + String accessjwt = MyJwtProvider.createAccess(myUserDetails.getUser()); Pair rtInfo = MyJwtProvider.createRefresh(myUserDetails.getUser()); @@ -97,6 +101,9 @@ public class UserService { User userPS = userRepository.findById(id).orElseThrow( () -> new Exception400("id", "해당 유저를 찾을 수 없습니다") ); + if(userPS.getStatus().equals(false)){ + throw new Exception401("탈퇴한 회원입니다"); + } return new UserResponse.DetailOutDTO(userPS); } @@ -112,8 +119,11 @@ public class UserService { public UserResponse.ModifiedOutDTO 개인정보수정(UserRequest.ModifiedInDTO modifiedInDTO, MultipartFile profile, Long id) { // 1. 아이디로 회원 조회 User user = userRepository.findById(id).orElseThrow(() -> new Exception400("id", "해당 유저가 존재하지 않습니다")); - - // 2. 수정사항 없는 경우 + // 2. 탈퇴한 회원인 경우 + if(user.getStatus().equals(false)){ + throw new Exception401("탈퇴한 회원입니다"); + } + // 3. 수정사항 없는 경우 if ((profile == null || profile.isEmpty()) && (modifiedInDTO.getProfileToDelete() == null || modifiedInDTO.getProfileToDelete().isEmpty()) && (user.getEmail().equals(modifiedInDTO.getEmail())) && @@ -121,9 +131,8 @@ public class UserService { (modifiedInDTO.getNewPassword() == null || modifiedInDTO.getNewPassword().isEmpty())){ throw new Exception400("profile, profileToDelete, email, username, newPassword", "수정사항이 없습니다."); } - boolean isProfileReset = false; - // 3. 프로필 사진 등록 시 + // 4. 프로필 사진 등록 시 if (profile != null && !profile.isEmpty()) { // 서버에 사진 저장 try { @@ -134,7 +143,7 @@ public class UserService { throw new Exception500("프로필사진 변경 실패 : " + e.getMessage()); } } - // 4. 프로필 사진 삭제 시 + // 5. 프로필 사진 삭제 시 if (modifiedInDTO.getProfileToDelete() != null && !modifiedInDTO.getProfileToDelete().equals("https://lupinbucket.s3.ap-northeast-2.amazonaws.com/person.png")) { try{ s3Service.delete(modifiedInDTO.getProfileToDelete()); @@ -144,22 +153,22 @@ public class UserService { throw new Exception500("프로필사진 삭제 실패 : " + e.getMessage()); } } - // 5. 이메일 주소 변경 시 + // 6. 이메일 주소 변경 시 if (user.getEmail() != modifiedInDTO.getEmail()) { user.changeEmail(modifiedInDTO.getEmail()); } - // 6. 사원명 변경 시 + // 7. 사원명 변경 시 if (user.getUsername() != modifiedInDTO.getUsername()) { user.changeUsername(modifiedInDTO.getUsername()); } - // 7. 비밀번호 변경 시 + // 8. 비밀번호 변경 시 boolean isPasswordReset = false; if (modifiedInDTO.getNewPassword() != null && !modifiedInDTO.getNewPassword().isEmpty()) { String encodePassword = passwordEncoder.encode(modifiedInDTO.getNewPassword()); user.changePassword(encodePassword); isPasswordReset = true; } - // 8. ModifiedOutDTO 생성 + // 9. ModifiedOutDTO 생성 return new UserResponse.ModifiedOutDTO(user, isPasswordReset, isProfileReset); } @@ -169,6 +178,10 @@ public class UserService { public void 연차수정(Long id, UserRequest.AnnualInDTO annualInDTO) { User userPS = userRepository.findByStatusAndId(true, id) .orElseThrow(()->new Exception400("id", "해당 유저가 존재하지 않습니다.")); + // 탈퇴한 회원인 경우 + if(userPS.getStatus().equals(false)){ + throw new Exception401("탈퇴한 회원입니다"); + } // 정보 수정 userPS.setRemainDays(annualInDTO.getRemainDays()); } @@ -202,6 +215,10 @@ public class UserService { public void 권한수정(Long id, UserRequest.MasterInDTO masterInDTO) { User userPS = userRepository.findByStatusAndId(true, id) .orElseThrow(()->new Exception400("id", "해당 유저가 존재하지 않습니다.")); + // 탈퇴한 회원이면 권한 수정 불가 + if(userPS.getStatus().equals(false)){ + throw new Exception401("탈퇴한 회원입니다"); + } // 정보 수정 userPS.setRole(masterInDTO.getRole()); } diff --git a/src/main/resources/static/docs/admin-api-docs.html b/src/main/resources/static/docs/admin-api-docs.html index 4247f55..251ab43 100644 --- a/src/main/resources/static/docs/admin-api-docs.html +++ b/src/main/resources/static/docs/admin-api-docs.html @@ -1041,7 +1041,7 @@
Curl
diff --git a/src/main/resources/static/docs/alarm-api-docs.html b/src/main/resources/static/docs/alarm-api-docs.html index d2a46ee..fe5ed4a 100644 --- a/src/main/resources/static/docs/alarm-api-docs.html +++ b/src/main/resources/static/docs/alarm-api-docs.html @@ -483,7 +483,7 @@
Response Example
Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 -Content-Length: 297 +Content-Length: 299 { "status" : 200, @@ -496,7 +496,7 @@
Response Example
"endDate" : "2023-05-19", "usingDays" : 3, "status" : "APPROVAL", - "createdAt" : "2023-05-14T15:41:24.4657" + "createdAt" : "2023-05-14T22:51:43.869004" } ] } @@ -561,7 +561,7 @@
Curl
diff --git a/src/main/resources/static/docs/leave-api-docs.html b/src/main/resources/static/docs/leave-api-docs.html index 3a34af4..8dfb4f9 100644 --- a/src/main/resources/static/docs/leave-api-docs.html +++ b/src/main/resources/static/docs/leave-api-docs.html @@ -1,1881 +1,2249 @@ - - - - - - - -REST API - - - - - -
-
-

연차/당직 신청 API

-
-
-

연차 신청 성공 (하루)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 85
-Host: localhost:8080
-
-{
-  "type" : "ANNUAL",
-  "startDate" : "2023-07-20",
-  "endDate" : "2023-07-20"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 175
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : {
-    "id" : 38,
-    "type" : "ANNUAL",
-    "usingDays" : 1,
-    "remainDays" : 12,
-    "status" : "WAITING"
-  }
-}
-
-
-
-
-
-

연차 신청 성공 (여러 일)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 85
-Host: localhost:8080
-
-{
-  "type" : "ANNUAL",
-  "startDate" : "2023-09-04",
-  "endDate" : "2023-09-06"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 176
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : {
-    "id" : 159,
-    "type" : "ANNUAL",
-    "usingDays" : 3,
-    "remainDays" : 10,
-    "status" : "WAITING"
-  }
-}
-
-
-
-
-
-

연차 신청 성공 (주말 포함)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 85
-Host: localhost:8080
-
-{
-  "type" : "ANNUAL",
-  "startDate" : "2023-07-21",
-  "endDate" : "2023-07-25"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 175
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : {
-    "id" : 75,
-    "type" : "ANNUAL",
-    "usingDays" : 3,
-    "remainDays" : 10,
-    "status" : "WAITING"
-  }
-}
-
-
-
-
-
-

연차 신청 성공 (공휴일 포함)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 85
-Host: localhost:8080
-
-{
-  "type" : "ANNUAL",
-  "startDate" : "2023-05-26",
-  "endDate" : "2023-05-30"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 175
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : {
-    "id" : 23,
-    "type" : "ANNUAL",
-    "usingDays" : 2,
-    "remainDays" : 11,
-    "status" : "WAITING"
-  }
-}
-
-
-
-
-
-

당직 신청 성공

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 83
-Host: localhost:8080
-
-{
-  "type" : "DUTY",
-  "startDate" : "2023-07-28",
-  "endDate" : "2023-07-28"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 173
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : {
-    "id" : 46,
-    "type" : "DUTY",
-    "usingDays" : 0,
-    "remainDays" : 13,
-    "status" : "WAITING"
-  }
-}
-
-
-
-
-
-

당직 신청 실패 (하루만 신청해야 함)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 83
-Host: localhost:8080
-
-{
-  "type" : "DUTY",
-  "startDate" : "2023-07-27",
-  "endDate" : "2023-07-28"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 164
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "startDate, endDate",
-    "value" : "startDate와 endDate가 같아야 합니다."
-  }
-}
-
-
-
-
-
-

연차/당직 신청 유효성 검사 실패 (startDate와 endDate는 과거 불가)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 85
-Host: localhost:8080
-
-{
-  "type" : "ANNUAL",
-  "startDate" : "2022-07-24",
-  "endDate" : "2024-07-24"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 157
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "startDate",
-    "value" : "must be a date in the present or in the future"
-  }
-}
-
-
-
-
-
-

연차 신청 실패 (0일 신청)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 85
-Host: localhost:8080
-
-{
-  "type" : "ANNUAL",
-  "startDate" : "2023-07-22",
-  "endDate" : "2023-07-23"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 154
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "startDate, endDate",
-    "value" : "연차를 0일 신청했습니다."
-  }
-}
-
-
-
-
-
-

연차 신청 실패 (남은 연차 일수보다 많이 신청)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 85
-Host: localhost:8080
-
-{
-  "type" : "ANNUAL",
-  "startDate" : "2023-07-21",
-  "endDate" : "2023-09-28"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 170
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "startDate, endDate",
-    "value" : "남은 연차보다 더 많이 신청했습니다."
-  }
-}
-
-
-
-
-
-

당직 신청 실패 (중복 신청)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 83
-Host: localhost:8080
-
-{
-  "type" : "DUTY",
-  "startDate" : "2023-07-10",
-  "endDate" : "2023-07-10"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 153
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "startDate, endDate",
-    "value" : "중복된 당직 신청입니다."
-  }
-}
-
-
-
-
-
-

연차 신청 실패 (이미 신청된 날짜 포함)

-
-
Request Example
-
-
-
POST /auth/leave/apply HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 85
-Host: localhost:8080
-
-{
-  "type" : "ANNUAL",
-  "startDate" : "2023-07-14",
-  "endDate" : "2023-07-19"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 176
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "startDate, endDate",
-    "value" : "이미 신청한 연차일이 포함된 신청입니다."
-  }
-}
-
-
-
-
-
-
-
-

연차/당직 신청 취소 API

-
-
-

연차 신청 취소 성공

-
-
Request Example
-
-
-
POST /auth/leave/167/delete HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 86
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : {
-    "remainDays" : 11
-  }
-}
-
-
-
-
-
-

당직 신청 취소 성공

-
-
Request Example
-
-
-
POST /auth/leave/189/delete HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 86
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : {
-    "remainDays" : 13
-  }
-}
-
-
-
-
-
-

연차/당직 신청 취소 실패 (연차/당직 신청 정보가 없을 때)

-
-
Request Example
-
-
-
POST /auth/leave/2000/delete HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 500 Internal Server Error
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 127
-
-{
-  "status" : 500,
-  "msg" : "serverError",
-  "data" : "해당 연차/당직 신청 정보가 DB에 존재하지 않음"
-}
-
-
-
-
-
-

연차/당직 신청 취소 실패 (이미 승인됨)

-
-
Request Example
-
-
-
POST /auth/leave/136/delete HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 137
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "id",
-    "value" : "이미 승인된 신청입니다."
-  }
-}
-
-
-
-
-
-

연차/당직 신청 취소 실패 (이미 거절됨)

-
-
Request Example
-
-
-
POST /auth/leave/106/delete HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 137
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "id",
-    "value" : "이미 거절된 신청입니다."
-  }
-}
-
-
-
-
-
-
-
-

연차/당직 신청 승인/거절 API

-
-
-

연차/당직 신청 승인/거절 성공

-
-
Request Example
-
-
-
POST /admin/approve HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 44
-Host: localhost:8080
-
-{
-  "id" : 90,
-  "status" : "REJECTION"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 86
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : {
-    "remainDays" : 16
-  }
-}
-
-
-
-
-
-

연차/당직 신청 승인/거절 실패 (연차/당직 신청 정보가 없을 때)

-
-
Request Example
-
-
-
POST /admin/approve HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 45
-Host: localhost:8080
-
-{
-  "id" : 5000,
-  "status" : "APPROVAL"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 500 Internal Server Error
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 127
-
-{
-  "status" : 500,
-  "msg" : "serverError",
-  "data" : "해당 연차/당직 신청 정보가 DB에 존재하지 않음"
-}
-
-
-
-
-
-

연차/당직 신청 승인/거절 실패 (이미 탈퇴한 회원의 신청)

-
-
Request Example
-
-
-
POST /admin/approve HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 44
-Host: localhost:8080
-
-{
-  "id" : 144,
-  "status" : "APPROVAL"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 500 Internal Server Error
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 100
-
-{
-  "status" : 500,
-  "msg" : "serverError",
-  "data" : "탈퇴한 회원의 신청입니다."
-}
-
-
-
-
-
-

연차/당직 신청 승인/거절 실패 (이미 승인됨)

-
-
Request Example
-
-
-
POST /admin/approve HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 44
-Host: localhost:8080
-
-{
-  "id" : 128,
-  "status" : "APPROVAL"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 137
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "id",
-    "value" : "이미 승인된 신청입니다."
-  }
-}
-
-
-
-
-
-

연차/당직 신청 승인/거절 실패 (이미 거절됨)

-
-
Request Example
-
-
-
POST /admin/approve HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 44
-Host: localhost:8080
-
-{
-  "id" : 98,
-  "status" : "REJECTION"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 137
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "id",
-    "value" : "이미 거절된 신청입니다."
-  }
-}
-
-
-
-
-
-

연차/당직 신청 승인/거절 실패 (관리자 권한이 아님)

-
-
Request Example
-
-
-
POST /admin/approve HTTP/1.1
-Content-Type: application/json;charset=UTF-8
-Content-Length: 43
-Host: localhost:8080
-
-{
-  "id" : 3,
-  "status" : "REJECTION"
-}
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 403 Forbidden
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json; charset=utf-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 84
-
-{
-  "status" : 403,
-  "msg" : "forbidden",
-  "data" : "권한이 없습니다"
-}
-
-
-
-
-
-
-
-

월별 연차/당직 조회 API

-
-
-

월별 연차 조회 성공

-
-
Request Example
-
-
-
GET /auth/leave/month/2023-07 HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 908
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : [ {
-    "id" : 168,
-    "userId" : 1,
-    "username" : "김쌀쌀",
-    "type" : "ANNUAL",
-    "status" : "REJECTION",
-    "startDate" : "2023-08-19",
-    "endDate" : "2023-08-19",
-    "profile" : null
-  }, {
-    "id" : 169,
-    "userId" : 2,
-    "username" : "박코스",
-    "type" : "ANNUAL",
-    "status" : "APPROVAL",
-    "startDate" : "2023-08-10",
-    "endDate" : "2023-08-11",
-    "profile" : null
-  }, {
-    "id" : 170,
-    "userId" : 1,
-    "username" : "김쌀쌀",
-    "type" : "DUTY",
-    "status" : "WAITING",
-    "startDate" : "2023-07-10",
-    "endDate" : "2023-07-10",
-    "profile" : null
-  }, {
-    "id" : 173,
-    "userId" : 1,
-    "username" : "김쌀쌀",
-    "type" : "ANNUAL",
-    "status" : "WAITING",
-    "startDate" : "2023-07-17",
-    "endDate" : "2023-07-18",
-    "profile" : null
-  } ]
-}
-
-
-
-
-
-

월별 연차 조회 실패

-
-
Request Example
-
-
-
GET /auth/leave/month/2023-7 HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 153
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "InvalidFormat",
-    "value" : "날짜 형식은 yyyy-MM 이어야 함"
-  }
-}
-
-
-
-
-
-
-
-

ID로 연차/당직 조회 API

-
-
-

ID로 연차 조회 성공

-
-
Request Example
-
-
-
GET /auth/leave/id/1 HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 695
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : [ {
-    "id" : 107,
-    "userId" : 1,
-    "username" : "김쌀쌀",
-    "type" : "ANNUAL",
-    "status" : "REJECTION",
-    "startDate" : "2023-08-19",
-    "endDate" : "2023-08-19",
-    "profile" : null
-  }, {
-    "id" : 109,
-    "userId" : 1,
-    "username" : "김쌀쌀",
-    "type" : "DUTY",
-    "status" : "WAITING",
-    "startDate" : "2023-07-10",
-    "endDate" : "2023-07-10",
-    "profile" : null
-  }, {
-    "id" : 112,
-    "userId" : 1,
-    "username" : "김쌀쌀",
-    "type" : "ANNUAL",
-    "status" : "WAITING",
-    "startDate" : "2023-07-17",
-    "endDate" : "2023-07-18",
-    "profile" : null
-  } ]
-}
-
-
-
-
-
-

ID로 연차 조회 실패 (잘못된 ID)

-
-
Request Example
-
-
-
GET /auth/leave/id/9999999999 HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 400 Bad Request
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 140
-
-{
-  "status" : 400,
-  "msg" : "badRequest",
-  "data" : {
-    "key" : "id",
-    "value" : "아이디를 찾을 수 없습니다"
-  }
-}
-
-
-
-
-
-
-
-

모든 연차/당직 조회 API

-
-
-

모든 연차/당직 조회 성공

-
-
Request Example
-
-
-
GET /auth/leave/all HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 200 OK
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 1544
-
-{
-  "status" : 200,
-  "msg" : "성공",
-  "data" : [ {
-    "id" : 197,
-    "userId" : 1,
-    "username" : "김쌀쌀",
-    "type" : "ANNUAL",
-    "status" : "REJECTION",
-    "startDate" : "2023-08-19",
-    "endDate" : "2023-08-19",
-    "profile" : null
-  }, {
-    "id" : 198,
-    "userId" : 2,
-    "username" : "박코스",
-    "type" : "ANNUAL",
-    "status" : "APPROVAL",
-    "startDate" : "2023-08-10",
-    "endDate" : "2023-08-11",
-    "profile" : null
-  }, {
-    "id" : 199,
-    "userId" : 1,
-    "username" : "김쌀쌀",
-    "type" : "DUTY",
-    "status" : "WAITING",
-    "startDate" : "2023-07-10",
-    "endDate" : "2023-07-10",
-    "profile" : null
-  }, {
-    "id" : 200,
-    "userId" : 2,
-    "username" : "박코스",
-    "type" : "ANNUAL",
-    "status" : "WAITING",
-    "startDate" : "2023-09-18",
-    "endDate" : "2023-09-19",
-    "profile" : null
-  }, {
-    "id" : 201,
-    "userId" : 3,
-    "username" : "이삭제",
-    "type" : "ANNUAL",
-    "status" : "WAITING",
-    "startDate" : "2023-09-29",
-    "endDate" : "2023-09-29",
-    "profile" : null
-  }, {
-    "id" : 202,
-    "userId" : 1,
-    "username" : "김쌀쌀",
-    "type" : "ANNUAL",
-    "status" : "WAITING",
-    "startDate" : "2023-07-17",
-    "endDate" : "2023-07-18",
-    "profile" : null
-  }, {
-    "id" : 203,
-    "userId" : 2,
-    "username" : "박코스",
-    "type" : "ANNUAL",
-    "status" : "WAITING",
-    "startDate" : "2023-10-26",
-    "endDate" : "2023-10-27",
-    "profile" : null
-  } ]
-}
-
-
-
-
-
-

모든 연차/당직 조회 실패 (인증되지 않은 사용자)

-
-
Request Example
-
-
-
GET /auth/leave/all HTTP/1.1
-Host: localhost:8080
-
-
-
-
-
Response Example
-
-
-
HTTP/1.1 401 Unauthorized
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
-Content-Type: application/json; charset=utf-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 1; mode=block
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 93
-
-{
-  "status" : 401,
-  "msg" : "unAuthorized",
-  "data" : "인증되지 않았습니다"
-}
-
-
-
-
-
-
-
- - - - - + + + + + + + +REST API + + + + + +
+
+

연차/당직 신청 API

+
+
+

연차 신청 성공 (하루)

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 85
+Host: localhost:8080
+
+{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-20",
+  "endDate" : "2023-07-20"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 175
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : {
+    "id" : 38,
+    "type" : "ANNUAL",
+    "usingDays" : 1,
+    "remainDays" : 12,
+    "status" : "WAITING"
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-20",
+  "endDate" : "2023-07-20"
+}'
+
+
+
+
+
+

연차 신청 성공 (여러 일)

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 85
+Host: localhost:8080
+
+{
+  "type" : "ANNUAL",
+  "startDate" : "2023-09-04",
+  "endDate" : "2023-09-06"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 176
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : {
+    "id" : 166,
+    "type" : "ANNUAL",
+    "usingDays" : 3,
+    "remainDays" : 10,
+    "status" : "WAITING"
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "ANNUAL",
+  "startDate" : "2023-09-04",
+  "endDate" : "2023-09-06"
+}'
+
+
+
+
+
+

연차 신청 성공 (주말 포함)

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 85
+Host: localhost:8080
+
+{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-21",
+  "endDate" : "2023-07-25"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 175
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : {
+    "id" : 75,
+    "type" : "ANNUAL",
+    "usingDays" : 3,
+    "remainDays" : 10,
+    "status" : "WAITING"
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-21",
+  "endDate" : "2023-07-25"
+}'
+
+
+
+
+
+

연차 신청 성공 (공휴일 포함)

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 85
+Host: localhost:8080
+
+{
+  "type" : "ANNUAL",
+  "startDate" : "2023-05-26",
+  "endDate" : "2023-05-30"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 175
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : {
+    "id" : 23,
+    "type" : "ANNUAL",
+    "usingDays" : 2,
+    "remainDays" : 11,
+    "status" : "WAITING"
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "ANNUAL",
+  "startDate" : "2023-05-26",
+  "endDate" : "2023-05-30"
+}'
+
+
+
+
+
+

당직 신청 성공

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 83
+Host: localhost:8080
+
+{
+  "type" : "DUTY",
+  "startDate" : "2023-07-28",
+  "endDate" : "2023-07-28"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 173
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : {
+    "id" : 46,
+    "type" : "DUTY",
+    "usingDays" : 0,
+    "remainDays" : 13,
+    "status" : "WAITING"
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "DUTY",
+  "startDate" : "2023-07-28",
+  "endDate" : "2023-07-28"
+}'
+
+
+
+
+
+

당직 신청 실패 (하루만 신청해야 함)

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 83
+Host: localhost:8080
+
+{
+  "type" : "DUTY",
+  "startDate" : "2023-07-27",
+  "endDate" : "2023-07-28"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 164
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "startDate, endDate",
+    "value" : "startDate와 endDate가 같아야 합니다."
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "DUTY",
+  "startDate" : "2023-07-27",
+  "endDate" : "2023-07-28"
+}'
+
+
+
+
+
+

연차/당직 신청 유효성 검사 실패 (startDate와 endDate는 과거 불가)

+
+
Request Example
+
+

include::./build/generated-snippets/leave-controller-test/apply_fail_valid_test/http-request.adoc[]\ +===== Response Example

+
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 157
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "startDate",
+    "value" : "must be a date in the present or in the future"
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "ANNUAL",
+  "startDate" : "2022-07-24",
+  "endDate" : "2024-07-24"
+}'
+
+
+
+
+
+

연차 신청 실패 (0일 신청)

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 85
+Host: localhost:8080
+
+{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-22",
+  "endDate" : "2023-07-23"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 154
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "startDate, endDate",
+    "value" : "연차를 0일 신청했습니다."
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-22",
+  "endDate" : "2023-07-23"
+}'
+
+
+
+
+
+

연차 신청 실패 (남은 연차 일수보다 많이 신청)

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 85
+Host: localhost:8080
+
+{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-21",
+  "endDate" : "2023-09-28"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 170
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "startDate, endDate",
+    "value" : "남은 연차보다 더 많이 신청했습니다."
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-21",
+  "endDate" : "2023-09-28"
+}'
+
+
+
+
+
+

당직 신청 실패 (중복 신청)

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 83
+Host: localhost:8080
+
+{
+  "type" : "DUTY",
+  "startDate" : "2023-07-10",
+  "endDate" : "2023-07-10"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 153
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "startDate, endDate",
+    "value" : "중복된 당직 신청입니다."
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "DUTY",
+  "startDate" : "2023-07-10",
+  "endDate" : "2023-07-10"
+}'
+
+
+
+
+
+

연차 신청 실패 (이미 신청된 날짜 포함)

+
+
Request Example
+
+
+
POST /auth/leave/apply HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 85
+Host: localhost:8080
+
+{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-14",
+  "endDate" : "2023-07-19"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 176
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "startDate, endDate",
+    "value" : "이미 신청한 연차일이 포함된 신청입니다."
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/apply' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "type" : "ANNUAL",
+  "startDate" : "2023-07-14",
+  "endDate" : "2023-07-19"
+}'
+
+
+
+
+
+
+
+

연차/당직 신청 취소 API

+
+
+

연차 신청 취소 성공

+
+
Request Example
+
+
+
POST /auth/leave/174/delete HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 86
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : {
+    "remainDays" : 11
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/174/delete' -i -X POST
+
+
+
+
+
+

당직 신청 취소 성공

+
+
Request Example
+
+
+
POST /auth/leave/196/delete HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 86
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : {
+    "remainDays" : 13
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/196/delete' -i -X POST
+
+
+
+
+
+

연차/당직 신청 취소 실패 (연차/당직 신청 정보가 없을 때)

+
+
Request Example
+
+
+
POST /auth/leave/2000/delete HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 500 Internal Server Error
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 127
+
+{
+  "status" : 500,
+  "msg" : "serverError",
+  "data" : "해당 연차/당직 신청 정보가 DB에 존재하지 않음"
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/2000/delete' -i -X POST
+
+
+
+
+
+

연차/당직 신청 취소 실패 (이미 승인됨)

+
+
Request Example
+
+
+
POST /auth/leave/143/delete HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 137
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "id",
+    "value" : "이미 승인된 신청입니다."
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/143/delete' -i -X POST
+
+
+
+
+
+

연차/당직 신청 취소 실패 (이미 거절됨)

+
+
Request Example
+
+
+
POST /auth/leave/106/delete HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 137
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "id",
+    "value" : "이미 거절된 신청입니다."
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/106/delete' -i -X POST
+
+
+
+
+
+
+
+

연차/당직 신청 승인/거절 API

+
+
+

연차/당직 신청 승인/거절 성공

+
+
Request Example
+
+
+
POST /admin/approve HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 44
+Host: localhost:8080
+
+{
+  "id" : 90,
+  "status" : "REJECTION"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 86
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : {
+    "remainDays" : 16
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/admin/approve' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "id" : 90,
+  "status" : "REJECTION"
+}'
+
+
+
+
+
+

연차/당직 신청 승인/거절 실패 (연차/당직 신청 정보가 없을 때)

+
+
Request Example
+
+
+
POST /admin/approve HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 45
+Host: localhost:8080
+
+{
+  "id" : 5000,
+  "status" : "APPROVAL"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 500 Internal Server Error
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 127
+
+{
+  "status" : 500,
+  "msg" : "serverError",
+  "data" : "해당 연차/당직 신청 정보가 DB에 존재하지 않음"
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/admin/approve' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "id" : 5000,
+  "status" : "APPROVAL"
+}'
+
+
+
+
+
+

연차/당직 신청 승인/거절 실패 (이미 탈퇴한 회원의 신청)

+
+
Request Example
+
+
+
POST /admin/approve HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 44
+Host: localhost:8080
+
+{
+  "id" : 151,
+  "status" : "APPROVAL"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 500 Internal Server Error
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 100
+
+{
+  "status" : 500,
+  "msg" : "serverError",
+  "data" : "탈퇴한 회원의 신청입니다."
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/admin/approve' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "id" : 151,
+  "status" : "APPROVAL"
+}'
+
+
+
+
+
+

연차/당직 신청 승인/거절 실패 (이미 승인됨)

+
+
Request Example
+
+
+
POST /admin/approve HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 44
+Host: localhost:8080
+
+{
+  "id" : 135,
+  "status" : "APPROVAL"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 137
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "id",
+    "value" : "이미 승인된 신청입니다."
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/admin/approve' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "id" : 135,
+  "status" : "APPROVAL"
+}'
+
+
+
+
+
+

연차/당직 신청 승인/거절 실패 (이미 거절됨)

+
+
Request Example
+
+
+
POST /admin/approve HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 44
+Host: localhost:8080
+
+{
+  "id" : 98,
+  "status" : "REJECTION"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 137
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "id",
+    "value" : "이미 거절된 신청입니다."
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/admin/approve' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "id" : 98,
+  "status" : "REJECTION"
+}'
+
+
+
+
+
+

연차/당직 신청 승인/거절 실패 (관리자 권한이 아님)

+
+
Request Example
+
+
+
POST /admin/approve HTTP/1.1
+Content-Type: application/json;charset=UTF-8
+Content-Length: 43
+Host: localhost:8080
+
+{
+  "id" : 3,
+  "status" : "REJECTION"
+}
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 403 Forbidden
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json; charset=utf-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 84
+
+{
+  "status" : 403,
+  "msg" : "forbidden",
+  "data" : "권한이 없습니다"
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/admin/approve' -i -X POST \
+    -H 'Content-Type: application/json;charset=UTF-8' \
+    -d '{
+  "id" : 3,
+  "status" : "REJECTION"
+}'
+
+
+
+
+
+
+
+

월별 연차/당직 조회 API

+
+
+

월별 연차 조회 성공

+
+
Request Example
+
+
+
GET /auth/leave/month/2023-07 HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 908
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : [ {
+    "id" : 175,
+    "userId" : 1,
+    "username" : "김쌀쌀",
+    "type" : "ANNUAL",
+    "status" : "REJECTION",
+    "startDate" : "2023-08-19",
+    "endDate" : "2023-08-19",
+    "profile" : null
+  }, {
+    "id" : 176,
+    "userId" : 2,
+    "username" : "박코스",
+    "type" : "ANNUAL",
+    "status" : "APPROVAL",
+    "startDate" : "2023-08-10",
+    "endDate" : "2023-08-11",
+    "profile" : null
+  }, {
+    "id" : 177,
+    "userId" : 1,
+    "username" : "김쌀쌀",
+    "type" : "DUTY",
+    "status" : "WAITING",
+    "startDate" : "2023-07-10",
+    "endDate" : "2023-07-10",
+    "profile" : null
+  }, {
+    "id" : 180,
+    "userId" : 1,
+    "username" : "김쌀쌀",
+    "type" : "ANNUAL",
+    "status" : "WAITING",
+    "startDate" : "2023-07-17",
+    "endDate" : "2023-07-18",
+    "profile" : null
+  } ]
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/month/2023-07' -i -X GET
+
+
+
+
+
+

월별 연차 조회 실패

+
+
Request Example
+
+
+
GET /auth/leave/month/2023-7 HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 153
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "InvalidFormat",
+    "value" : "날짜 형식은 yyyy-MM 이어야 함"
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/month/2023-7' -i -X GET
+
+
+
+
+
+
+
+

ID로 연차/당직 조회 API

+
+
+

ID로 연차 조회 성공

+
+
Request Example
+
+
+
GET /auth/leave/id/1 HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 695
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : [ {
+    "id" : 107,
+    "userId" : 1,
+    "username" : "김쌀쌀",
+    "type" : "ANNUAL",
+    "status" : "REJECTION",
+    "startDate" : "2023-08-19",
+    "endDate" : "2023-08-19",
+    "profile" : null
+  }, {
+    "id" : 109,
+    "userId" : 1,
+    "username" : "김쌀쌀",
+    "type" : "DUTY",
+    "status" : "WAITING",
+    "startDate" : "2023-07-10",
+    "endDate" : "2023-07-10",
+    "profile" : null
+  }, {
+    "id" : 112,
+    "userId" : 1,
+    "username" : "김쌀쌀",
+    "type" : "ANNUAL",
+    "status" : "WAITING",
+    "startDate" : "2023-07-17",
+    "endDate" : "2023-07-18",
+    "profile" : null
+  } ]
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/id/1' -i -X GET
+
+
+
+
+
+

ID로 연차 조회 실패 (잘못된 ID)

+
+
Request Example
+
+
+
GET /auth/leave/id/9999999999 HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 400 Bad Request
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 140
+
+{
+  "status" : 400,
+  "msg" : "badRequest",
+  "data" : {
+    "key" : "id",
+    "value" : "아이디를 찾을 수 없습니다"
+  }
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/id/9999999999' -i -X GET
+
+
+
+
+
+
+
+

모든 연차/당직 조회 API

+
+
+

모든 연차/당직 조회 성공

+
+
Request Example
+
+
+
GET /auth/leave/all HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json;charset=UTF-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 1544
+
+{
+  "status" : 200,
+  "msg" : "성공",
+  "data" : [ {
+    "id" : 204,
+    "userId" : 1,
+    "username" : "김쌀쌀",
+    "type" : "ANNUAL",
+    "status" : "REJECTION",
+    "startDate" : "2023-08-19",
+    "endDate" : "2023-08-19",
+    "profile" : null
+  }, {
+    "id" : 205,
+    "userId" : 2,
+    "username" : "박코스",
+    "type" : "ANNUAL",
+    "status" : "APPROVAL",
+    "startDate" : "2023-08-10",
+    "endDate" : "2023-08-11",
+    "profile" : null
+  }, {
+    "id" : 206,
+    "userId" : 1,
+    "username" : "김쌀쌀",
+    "type" : "DUTY",
+    "status" : "WAITING",
+    "startDate" : "2023-07-10",
+    "endDate" : "2023-07-10",
+    "profile" : null
+  }, {
+    "id" : 207,
+    "userId" : 2,
+    "username" : "박코스",
+    "type" : "ANNUAL",
+    "status" : "WAITING",
+    "startDate" : "2023-09-18",
+    "endDate" : "2023-09-19",
+    "profile" : null
+  }, {
+    "id" : 208,
+    "userId" : 3,
+    "username" : "이삭제",
+    "type" : "ANNUAL",
+    "status" : "WAITING",
+    "startDate" : "2023-09-29",
+    "endDate" : "2023-09-29",
+    "profile" : null
+  }, {
+    "id" : 209,
+    "userId" : 1,
+    "username" : "김쌀쌀",
+    "type" : "ANNUAL",
+    "status" : "WAITING",
+    "startDate" : "2023-07-17",
+    "endDate" : "2023-07-18",
+    "profile" : null
+  }, {
+    "id" : 210,
+    "userId" : 2,
+    "username" : "박코스",
+    "type" : "ANNUAL",
+    "status" : "WAITING",
+    "startDate" : "2023-10-26",
+    "endDate" : "2023-10-27",
+    "profile" : null
+  } ]
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/all' -i -X GET
+
+
+
+
+
+

모든 연차/당직 조회 실패 (인증되지 않은 사용자)

+
+
Request Example
+
+
+
GET /auth/leave/all HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 401 Unauthorized
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json; charset=utf-8
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+Content-Length: 93
+
+{
+  "status" : 401,
+  "msg" : "unAuthorized",
+  "data" : "인증되지 않았습니다"
+}
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/all' -i -X GET
+
+
+
+
+
+
+
+

다운로드 API

+
+
+

엑셀 다운로드

+
+
Request Example
+
+
+
GET /auth/leave/download HTTP/1.1
+Host: localhost:8080
+
+
+
+
+
Response Example
+
+
+
HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Disposition: attachment; filename="annual_leave_duty.xlsx"
+Content-Type: application/octet-stream;charset=UTF-8
+Accept-Ranges: bytes
+Content-Length: 3776
+X-Content-Type-Options: nosniff
+X-XSS-Protection: 1; mode=block
+Cache-Control: no-cache, no-store, max-age=0, must-revalidate
+Pragma: no-cache
+Expires: 0
+
+PKy��V[Content_Types].xml�S�n�0����*6�PU�C���\{�X�%����]8�R�
+q�cfgfW�d�q�ZCB|��|�*�*h㻆},^�{Va�^K<4l�f��b+��ذ>�� ��D"xBڐ��tL��R-e�v4�*�>׹h���	Z���z�����Q2S,���H���v�`o"��U�RٵC(2q��qa9S�
&
����(�A��p(�tS6��9�)�JG���sBQ�4���0�eX�9u�1���dg9�2�~ω^��+~��#o�)�r�	�ʝ4���WH�����/��/�D1,�C1|��7PK�,(�;PKy��V_rels/.rels���J1�_%̽�miڋ�����ݰ�LHFݾ����lA��03��1�v?�I�S.���uӂ�h���x9>��@��p�HNT`��>ӄRW��SQ���A$�k]�@KÉb�t�J-s��{қ����'Ι���[�:b�I̓��<�2�M���)�oB�뼥�o��,d_L�^v�|�8�O��&���24EGn�je���W�n�,g����Gс
+~Q/����}PKn2K�JPKy��VdocProps/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�!��PKy��VdocProps/core.xmlm�]K�0��J�}{�v
m�(Aq�D�.$Ƕ�|�D��{�:+�wI��<���栆��	�r��F�����~�����%�ƚѓMS	˄q�sƢ=�$z�g�֤�2/:T�g��1|5N�����o�<?��K8L��.FrRJ�(�f��*���(�������B|�P�8fc9sq#
+�w���i���$MuR3��I�p����䩼��oIS�E��딮��dk�V/����_g��XH����f��
+���|PKq��d�PKy��Vxl/sharedStrings.xmlu�OK�0���!��%�d��([��tc����ƭ���I��ģxԛ���/�B�a�@�i ��yx�b�����O2fA��!�,��-,�����s��d‚{]J�\�t�F�:�q.����ђ��w����\dEJD=�󂒘/)�
+�PJm�'�)lob"a�h3mI�i�')m�`�K�D�B�	�qY��C^?Amּ%K������7�)���&5����@ӇM3w��q�M���y����WeV]j5�ͧ�r�I����[��/��������F�v��QݾU/O�CZ���W��:֌���KC���PKl�B$PKy��V
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�PKy��Vxl/workbook.xml��1O�0�w$��u;�A�B���Pد���ۑϤ�|�TF&��}��5�/?���4T���օ������#l������I>��>籖�MOyG
+��b�KLG�c"��e?�[��G�b���뜡�h>=�|�$0��ܻ���Y����LՓ������m���љ�9
+4�M�ǃ5s��l^_Г�W‰D��Րv����J��z&׏�oPK/.I�^PKy��Vxl/_rels/workbook.xml.rels��Mk�0@���}q���n/c�k?~���84����˿����@;�$��{�\��:Q�>MU��`��Cg��xzł����a�Zni@)_���Ua6�Eқ�l=��ULʦ�yD)������E]��|ˀ9Sm���q
�=��{��v�KW\VS��hc���ޣ�)����AߏY���4��+����瘏��Z^F���5FϮ��PKg뢨�4PKy��Vxl/worksheets/sheet1.xml��K��0�����
�i�V�d�*U}�I�ڀ#�M��kح�1�(7�ϓ�/3����sab���o�&���
MF~�*>%�1��!�r�2��IGcFZ)��;�[��㊟٠ȑ���j)w<V�����u��u7�<=t=���`nj<yUB�<�����u4��)���i���U��w?ى�%Sk)^��.‹����9�c�z�?��b]�Je)��)����T�#Q'O%�Ȩ֗|���b�ξ�̃lc2���ȞMBV�,��4YYe2���\�����y��&�a�����7R%���>[�&�-0X��T Ի�h���w�/�&0s�=yh
D�5%ZPB����|���ƇH�M�Y�� ��1X��� 4�-i�ȇ��|�u>B:-X�з�-���|䣅��s���2���6F�A���,c���w�S-O�|�����Sd�)�n2�>��G����w�'�=�tហS�`S� �&�Y���(т��w����nطZ4�0:;.%�ՍbEթ9r.��V��٪��^��Qλ�#ޮ��������oH�?PKqܚ;U	PKy��V�,(�;[Content_Types].xmlPKy��Vn2K�J|_rels/.relsPKy��V6n�!���docProps/app.xmlPKy��Vq��d�kdocProps/core.xmlPKy��Vl�B$�xl/sharedStrings.xmlPKy��V����E�
5xl/styles.xmlPKy��V/.I�^�xl/workbook.xmlPKy��Vg뢨�4�xl/_rels/workbook.xml.relsPKy��Vqܚ;U	�	xl/worksheets/sheet1.xmlPK		?k
+
+
+
+
+
Curl
+
+
+
$ curl 'http://localhost:8080/auth/leave/download' -i -X GET
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/src/main/resources/static/docs/refresh-api-docs.html b/src/main/resources/static/docs/refresh-api-docs.html index 7278861..68ed33a 100644 --- a/src/main/resources/static/docs/refresh-api-docs.html +++ b/src/main/resources/static/docs/refresh-api-docs.html @@ -466,7 +466,7 @@
Request Example
POST /refreshtoken HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY1MTMwMCwidXVpZCI6IjQ0MjBiYjg2LTA2ZWMtNGJiMi05MDQxLTdiOGRmYTAxN2Q4YyJ9.J6A6yUoYjBJvpC9wEG44r2eChY7Uq_Qup3kITDG7Ug3oaQkUWBFLLsE4WE99xZaOsmGhSXxZuNGAbuy0aNbzGQ
+RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY3NzExNywidXVpZCI6IjQwNmY2YWIyLTRmZmQtNDRlOC05ZWIyLTZmNDExZTlmZjNlMiJ9.gzAafuyJ6712Q3tjRRxY_oqnIyhxwoD1mTDCtQh-XHf93I8xZvy03NXQPhFI137htTcSESkwJnhrs5s03M9okQ
 Host: localhost:8080
@@ -479,7 +479,7 @@
Response Example
Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers -Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsInJvbGUiOiJST0xFX1VTRVIiLCJpZCI6MSwiZXhwIjoxNjg0MTMyOTAwfQ.1p2T9UVamYMpchlhn4-66Wuu65eQJ8K7eObWK2V_AJTA86KDzkDl9eJb_BDb9OTJ5RYMNViAU3U4oq8d6gW-ew +Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsInJvbGUiOiJST0xFX1VTRVIiLCJpZCI6MSwiZXhwIjoxNjg0MTU4NzE3fQ.snC7BuFwC0Nz9bLg5fuCrBiVCZ2uHWjgl3YOMDuyqH138VyshvFG5U-KYBYAwvtnHW_ZGAaKwGb-PupVNotJnQ X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate @@ -494,7 +494,7 @@
Curl
$ curl 'http://localhost:8080/refreshtoken' -i -X POST \
     -H 'Content-Type: application/json;charset=UTF-8' \
-    -H 'RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY1MTMwMCwidXVpZCI6IjQ0MjBiYjg2LTA2ZWMtNGJiMi05MDQxLTdiOGRmYTAxN2Q4YyJ9.J6A6yUoYjBJvpC9wEG44r2eChY7Uq_Qup3kITDG7Ug3oaQkUWBFLLsE4WE99xZaOsmGhSXxZuNGAbuy0aNbzGQ'
+ -H 'RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY3NzExNywidXVpZCI6IjQwNmY2YWIyLTRmZmQtNDRlOC05ZWIyLTZmNDExZTlmZjNlMiJ9.gzAafuyJ6712Q3tjRRxY_oqnIyhxwoD1mTDCtQh-XHf93I8xZvy03NXQPhFI137htTcSESkwJnhrs5s03M9okQ'
@@ -507,7 +507,7 @@
Request Example
POST /refreshtoken HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDA0NjQ5OSwidXVpZCI6ImRlNTM0NGRmLTZhNWEtNGNkYy1iZWU5LWM3NjJkNzZkZTRlMCJ9.CoDNMLcZmBGkEE9x6W_qysRi7gk6OZVx1QSw4SkKK8M7IvYf76GrHPDNS0TLmn2zuc0sW2R3jIDBZZPDc5mZyQ
+RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDA3MjMxNiwidXVpZCI6ImM3ZDAyOGU4LTI4NTItNDk2Ny1iNjdhLWU3ZTNjNTNhZTgzYSJ9.PE68DQAVQAscEbrEsg6EDrpDRgq8PxHFbtFk-WhxZbxVsL5dG1By5tr3MNeJfS3OzOWZnF0MjhMLlpTEb8-GWQ
 Host: localhost:8080
@@ -542,7 +542,7 @@
Curl
$ curl 'http://localhost:8080/refreshtoken' -i -X POST \
     -H 'Content-Type: application/json;charset=UTF-8' \
-    -H 'RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDA0NjQ5OSwidXVpZCI6ImRlNTM0NGRmLTZhNWEtNGNkYy1iZWU5LWM3NjJkNzZkZTRlMCJ9.CoDNMLcZmBGkEE9x6W_qysRi7gk6OZVx1QSw4SkKK8M7IvYf76GrHPDNS0TLmn2zuc0sW2R3jIDBZZPDc5mZyQ'
+ -H 'RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDA3MjMxNiwidXVpZCI6ImM3ZDAyOGU4LTI4NTItNDk2Ny1iNjdhLWU3ZTNjNTNhZTgzYSJ9.PE68DQAVQAscEbrEsg6EDrpDRgq8PxHFbtFk-WhxZbxVsL5dG1By5tr3MNeJfS3OzOWZnF0MjhMLlpTEb8-GWQ'
@@ -553,7 +553,7 @@
Curl
diff --git a/src/main/resources/static/docs/sse-api-docs.html b/src/main/resources/static/docs/sse-api-docs.html index 4881a2f..4679e4d 100644 --- a/src/main/resources/static/docs/sse-api-docs.html +++ b/src/main/resources/static/docs/sse-api-docs.html @@ -643,7 +643,7 @@
Curl
diff --git a/src/main/resources/static/docs/user-api-docs.html b/src/main/resources/static/docs/user-api-docs.html index 67df1a4..c1b5cf6 100644 --- a/src/main/resources/static/docs/user-api-docs.html +++ b/src/main/resources/static/docs/user-api-docs.html @@ -689,8 +689,8 @@
Response Example
Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers -Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsInJvbGUiOiJST0xFX1VTRVIiLCJpZCI6MSwiZXhwIjoxNjg0MTMyOTAxfQ.NbHnje3WASFohJM9Uuo3kygWxnQH8llHTLV5RzjnSqizuv2AyelOsHwjeySXNgqo-OfqOaEPHvgbYa5kFZ7tWg -RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY1MTMwMSwidXVpZCI6ImIwNmNjOGZmLTMyNjMtNDFhMy05ODAzLWZlOWE2ZGVkMmY0OCJ9.llaJTYe9OQGJQSCDhIwoXUek6_HAa4CXXuO5-7bpwfOlE-fLqvDClJl5rzkmuhVkNmvyulMiWkMxN5faYxMomQ +Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsInJvbGUiOiJST0xFX1VTRVIiLCJpZCI6MSwiZXhwIjoxNjg0MTU4NzE4fQ.pKkvn-UmCx-oGFOvqJrZIMTi2Hfp6leRq6nUvqhas_Ze1rALFCQifo5jsuxQvxOG3v6MoPSlD3dWeAU35uzYSQ +RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY3NzExOCwidXVpZCI6IjIzODAyOWNhLTliM2MtNGZmNi05ZWQ2LTYxZTc5NTg2NDA2MSJ9.eY7Ih4B-THXYqqFHcSJfZOr1foaJ48HBmTcHX89mjMvF8dXAwY7UUzZFGtBB1lZPPJZ5k3p2O1sCkHtsJ4fiYQ Content-Type: application/json;charset=UTF-8 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block @@ -787,8 +787,8 @@
Request Example
POST /auth/logout HTTP/1.1
-Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsInJvbGUiOiJST0xFX1VTRVIiLCJpZCI6MSwiZXhwIjoxNjg0MTMyOTAzfQ.t5KTKLptfmZzDyJWHMLkU2HDAP689eA0vkcytC0NIDwRM_XPuIU5TUtzLHILeqdPmM_v_-b0bSev-s_r-8K60Q
-RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY1MTMwMywidXVpZCI6IjdiNmIwMWQ0LTI4MzItNGU4MS1iNDRhLWQxMTQ2NjhlZGE2OSJ9.TOisn0tMf-rz5pKPwg1j173Chjwz5pZxAnJujP5Jj1FfnaiWyTzfp2RpTV2ebAZDNPygYFt7d_djcUPEyRZnBA
+Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsInJvbGUiOiJST0xFX1VTRVIiLCJpZCI6MSwiZXhwIjoxNjg0MTU4NzIwfQ.v7mkDrNaCZoci-R7EagolPGKpjrYojiGJT1FnpPY0Ptr4G8evz89xVAFPnIz1exggDFGyrb4HCx2wBFM-zlnXA
+RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY3NzEyMCwidXVpZCI6IjA4N2E5NDE1LTFmMTMtNDg2Ny04MDIzLWM4NjZiY2ZkNzc4NSJ9.E20JuD812x73ozmtpetT6CkbWylMf2PYEWDzQRVxZMBBYtQc5g0t0v1ucA0rq5CgTWgKiV96JodaA3Qmed7BeQ
 Host: localhost:8080
@@ -814,8 +814,8 @@
Curl
$ curl 'http://localhost:8080/auth/logout' -i -X POST \
-    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsInJvbGUiOiJST0xFX1VTRVIiLCJpZCI6MSwiZXhwIjoxNjg0MTMyOTAzfQ.t5KTKLptfmZzDyJWHMLkU2HDAP689eA0vkcytC0NIDwRM_XPuIU5TUtzLHILeqdPmM_v_-b0bSev-s_r-8K60Q' \
-    -H 'RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY1MTMwMywidXVpZCI6IjdiNmIwMWQ0LTI4MzItNGU4MS1iNDRhLWQxMTQ2NjhlZGE2OSJ9.TOisn0tMf-rz5pKPwg1j173Chjwz5pZxAnJujP5Jj1FfnaiWyTzfp2RpTV2ebAZDNPygYFt7d_djcUPEyRZnBA'
+ -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsInJvbGUiOiJST0xFX1VTRVIiLCJpZCI6MSwiZXhwIjoxNjg0MTU4NzIwfQ.v7mkDrNaCZoci-R7EagolPGKpjrYojiGJT1FnpPY0Ptr4G8evz89xVAFPnIz1exggDFGyrb4HCx2wBFM-zlnXA' \ + -H 'RefreshToken: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqd3RzdHVkeSIsImV4cCI6MTY4NDY3NzEyMCwidXVpZCI6IjA4N2E5NDE1LTFmMTMtNDg2Ny04MDIzLWM4NjZiY2ZkNzc4NSJ9.E20JuD812x73ozmtpetT6CkbWylMf2PYEWDzQRVxZMBBYtQc5g0t0v1ucA0rq5CgTWgKiV96JodaA3Qmed7BeQ'
@@ -983,7 +983,7 @@
Response Example
"username" : "김이박", "passwordReset" : true, "profileReset" : true, - "profile" : "https://lupinbucket.s3.ap-northeast-2.amazonaws.com/5a390d8e-31f5-4c3c-b5ec-a7cbd96fe658_person.png" + "profile" : "https://lupinbucket.s3.ap-northeast-2.amazonaws.com/dd96d63c-c6c8-469c-a7fe-93d2dd251418_person.png" } } @@ -1019,7 +1019,7 @@
Request Example
Content-Disposition: form-data; name=modifiedInDTO; filename=modifiedInDTO Content-Type: application/json -{"email":"asdf@nate.com","username":"김이박","newPassword":"1234","profileToDelete":"https://lupinbucket.s3.ap-northeast-2.amazonaws.com/16eacd64-42cd-4fe7-a85c-7041cee3c2b7_person.png"} +{"email":"asdf@nate.com","username":"김이박","newPassword":"1234","profileToDelete":"https://lupinbucket.s3.ap-northeast-2.amazonaws.com/b02e1c82-48da-4ee3-af9c-dab30bf83570_person.png"} --6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm-- @@ -1538,7 +1538,7 @@
Curl