1. 인증

1.1. 로그인

1.1.1. 성공

HTTP request
POST /v1/auth/login HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 60

{
  "email" : "admin@email.com",
  "password" : "qwer1234"
}
Request fields
Path Type Description

email

String

사용자 이메일

password

String

사용자 패스워드

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyNSwiZXhwIjoxNzMwNTYxNzI1fQ.96kxm-j35UHfnJMJUqwJrCqLDzKsRlfRMsucWnuLEac; Path=/; Domain=localhost; Max-Age=7200; Expires=Sat, 19 Oct 2024 17:35:25 GMT; SameSite=none
Set-Cookie: refreshToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyNSwiZXhwIjoxNzMwNTYxNzI1fQ.96kxm-j35UHfnJMJUqwJrCqLDzKsRlfRMsucWnuLEac; Path=/; Domain=localhost; Max-Age=7200; Expires=Sat, 19 Oct 2024 17:35:25 GMT; SameSite=none
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 18

{
  "clubId" : 2
}
Response headers
Name Description

Set-Cookie

인증 쿠키 설정

Response cookies
Name Description

accessToken

Access Token

refreshToken

Refresh Token

1.1.2. 실패: 잘못된 패스워드

HTTP request
POST /v1/auth/login HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 65

{
  "email" : "admin@email.com",
  "password" : "wrongPassword"
}
Request fields
Path Type Description

email

String

사용자 이메일

password

String

잘못된 패스워드

HTTP response
HTTP/1.1 401 Unauthorized
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 166

{
  "type" : "about:blank",
  "title" : "Unauthorized",
  "status" : 401,
  "detail" : "비밀번호가 일치하지 않습니다.",
  "instance" : "/v1/auth/login"
}

1.1.3. 실패: 존재하지 않는 이메일

HTTP request
POST /v1/auth/login HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 114

{
  "email" : "invalid@email.com",
  "password" : "$2a$10$rG0JsflKdGcORjGFTURYb.npEgtvClK4.3P.EMr/o3SdekrVFxOvG"
}
Request fields
Path Type Description

email

String

존재하지 않는 이메일

password

String

사용자 패스워드

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 157

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 회원입니다.",
  "instance" : "/v1/auth/login"
}

1.2. 로그아웃

1.2.1. 성공

HTTP request
POST /v1/auth/logout HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyNSwiZXhwIjoxNzMwNTYxNzI1fQ.96kxm-j35UHfnJMJUqwJrCqLDzKsRlfRMsucWnuLEac
Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: accessToken=; Path=/; Domain=localhost; Max-Age=0; Expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=none
Set-Cookie: refreshToken=; Path=/; Domain=localhost; Max-Age=0; Expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=none
Date: Sat, 19 Oct 2024 15:35:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Response headers
Name Description

Set-Cookie

인증 해제 쿠키 설정

1.2.2. 실패: 존재하지 않는 토큰

HTTP request
POST /v1/auth/logout HTTP/1.1
Content-Type: application/json
Host: localhost:36299
HTTP response
HTTP/1.1 401 Unauthorized
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 171

{
  "type" : "about:blank",
  "title" : "Unauthorized",
  "status" : 401,
  "detail" : "로그인 정보가 유효하지 않습니다.",
  "instance" : "/v1/auth/logout"
}

2. 사용자

2.1. 사용자 회원가입

2.1.1. 성공

HTTP request
POST /v1/members/signup HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 120

{
  "clubName" : "크루루",
  "email" : "mail@mail.com",
  "password" : "newPassword214!",
  "phone" : "01012341234"
}
Request fields
Path Type Description

clubName

String

동아리명

email

String

사용자 이메일

password

String

사용자 패스워드

phone

String

사용자 전화번호

HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: /v1/members/2
Date: Sat, 19 Oct 2024 15:35:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive

2.1.2. 실패: 유효하지 않은 요청

HTTP request
POST /v1/members/signup HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 109

{
  "clubName" : "크루루",
  "email" : "mail@mail.com",
  "password" : "newPassword214!",
  "phone" : ""
}
Request fields
Path Type Description

clubName

String

동아리명

email

String

사용자 이메일

password

String

사용자 패스워드

phone

String

사용자 전화번호

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:32 GMT
Connection: close
Content-Length: 170

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{phone=전화번호를 입력해주세요.}",
  "instance" : "/v1/members/signup"
}

3. 지원자

3.1. 지원자들의 프로세스 일괄 수정

3.1.1. 성공

HTTP request
PUT /v1/applicants/move-process/2 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 28
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNSwiZXhwIjoxNzMwNTYxNzE1fQ.JKJcaSNnNoriDApkLoIe1034_YGKLocyNShVoKUhkJo

{
  "applicantIds" : [ 1 ]
}
Path parameters
Table 1. /v1/applicants/move-process/{processId}
Parameter Description

processId

지원자들이 옮겨질 프로세스의 id

Request cookies
Name Description

accessToken

사용자 토큰

Request fields
Path Type Description

applicantIds

Array

프로세스를 옮길 지원자들의 id

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive

3.1.2. 실패: 존재하지 않는 프로세스

HTTP request
PUT /v1/applicants/move-process/-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 28
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI

{
  "applicantIds" : [ 1 ]
}
Path parameters
Table 1. /v1/applicants/move-process/{processId}
Parameter Description

processId

존재하지 않는 프로세스의 id

Request cookies
Name Description

accessToken

사용자 토큰

Request fields
Path Type Description

applicantIds

Array

프로세스를 옮길 지원자들의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 174

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Process입니다.",
  "instance" : "/v1/applicants/move-process/-1"
}

3.2. 지원자 기본 정보 조회

3.2.1. 성공

HTTP request
GET /v1/applicants/1 HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI
Path parameters
Table 1. /v1/applicants/{applicantId}
Parameter Description

applicantId

지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 261

{
  "applicant" : {
    "id" : 1,
    "name" : "도비",
    "email" : "DOBBY@email.com",
    "phone" : "01000000000",
    "isRejected" : false,
    "createdAt" : "2024-10-19T15:35:16.476392"
  },
  "process" : {
    "id" : 1,
    "name" : "지원 접수"
  }
}
Response fields
Path Type Description

applicant.id

Number

지원자의 id

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

applicant.isRejected

Boolean

지원자의 불합격 여부

applicant.createdAt

String

지원자의 생성날짜

process.id

Number

프로세스의 id

process.name

String

프로세스 이름

3.2.2. 실패: 존재하지 않는 지원자

HTTP request
GET /v1/applicants/-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExMywiZXhwIjoxNzMwNTYxNzEzfQ.k85PeskNj5QjK4oR_dN-h6OI1LfiMpMmBCzWnteiplU
Path parameters
Table 1. /v1/applicants/{applicantId}
Parameter Description

applicantId

존재하지 않는 지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 163

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/applicants/-1"
}

3.3. 지원자 상세 정보 조회

3.3.1. 성공

HTTP request
GET /v1/applicants/1/detail HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI
Path parameters
Table 1. /v1/applicants/{applicantId}/detail
Parameter Description

applicantId

지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 114

{
  "details" : [ {
    "orderIndex" : 1,
    "question" : "주관식 단답형",
    "answer" : "응답1"
  } ]
}
Response fields
Path Type Description

details

Array

답변들

details[].orderIndex

Number

순서

details[].question

String

질문

details[].answer

String

질문에 대한 응답

3.3.2. 실패: 존재하지 않는 지원자

HTTP request
GET /v1/applicants/-1/detail HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo
Path parameters
Table 1. /v1/applicants/{applicantId}/detail
Parameter Description

applicantId

지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 170

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/applicants/-1/detail"
}

3.4. 지원자 불합격

3.4.1. 성공

HTTP request
PATCH /v1/applicants/1/reject HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI
Path parameters
Table 1. /v1/applicants/{applicantId}/reject
Parameter Description

applicantId

지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive

3.4.2. 실패: 존재하지 않는 지원자

HTTP request
PATCH /v1/applicants/-1/reject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo
Path parameters
Table 1. /v1/applicants/{applicantId}/reject
Parameter Description

applicantId

지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 170

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/applicants/-1/reject"
}

3.4.3. 실패: 이미 불합격한 지원자

HTTP request
PATCH /v1/applicants/1/reject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI
Path parameters
Table 1. /v1/applicants/{applicantId}/reject
Parameter Description

applicantId

존재하지 않는 지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:15 GMT
Connection: close
Content-Length: 171

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "이미 불합격한 지원자입니다.",
  "instance" : "/v1/applicants/1/reject"
}

3.5. 지원자 불합격 해제

3.5.1. 성공

HTTP request
PATCH /v1/applicants/1/unreject HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI
Path parameters
Table 1. /v1/applicants/{applicantId}/unreject
Parameter Description

applicantId

지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive

3.5.2. 실패: 존재하지 않는 지원자

HTTP request
PATCH /v1/applicants/-1/unreject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI
Path parameters
Table 1. /v1/applicants/{applicantId}/unreject
Parameter Description

applicantId

존재하지 않는 지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 172

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/applicants/-1/unreject"
}

3.5.3. 실패: 불합격하지 않은 지원자

HTTP request
PATCH /v1/applicants/1/unreject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNSwiZXhwIjoxNzMwNTYxNzE1fQ.JKJcaSNnNoriDApkLoIe1034_YGKLocyNShVoKUhkJo
Path parameters
Table 1. /v1/applicants/{applicantId}/unreject
Parameter Description

applicantId

불합격하지 않는 지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:15 GMT
Connection: close
Content-Length: 176

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "불합격하지 않은 지원자입니다.",
  "instance" : "/v1/applicants/1/unreject"
}

3.6. 지원자 정보 변경

3.6.1. 성공

HTTP request
PATCH /v1/applicants/1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 85
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI

{
  "name" : "도비",
  "email" : "dev.DOBBY@gmail.com",
  "phone" : "01011111111"
}
Path parameters
Table 1. /v1/applicants/{applicantId}
Parameter Description

applicantId

지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive

3.6.2. 실패: 존재하지 않는 지원자

HTTP request
PATCH /v1/applicants/-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 85
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI

{
  "name" : "도비",
  "email" : "dev.DOBBY@gmail.com",
  "phone" : "01011111111"
}
Path parameters
Table 1. /v1/applicants/{applicantId}
Parameter Description

applicantId

존재하지 않는 지원자의 id

Request cookies
Name Description

accessToken

사용자 토큰

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 163

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/applicants/-1"
}

3.7. 지원자 일괄 불합격

3.7.1. 성공

HTTP request
PATCH /v1/applicants/reject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 31
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNSwiZXhwIjoxNzMwNTYxNzE1fQ.JKJcaSNnNoriDApkLoIe1034_YGKLocyNShVoKUhkJo

{
  "applicantIds" : [ 1, 2 ]
}
Request cookies
Name Description

accessToken

사용자 토큰

Request fields
Path Type Description

applicantIds

Array

불합격 시킬 지원자들의 id

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive

3.7.2. 실패: 존재하지 않는 지원자

HTTP request
PATCH /v1/applicants/reject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 29
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI

{
  "applicantIds" : [ -1 ]
}
Request cookies
Name Description

accessToken

사용자 토큰

Request fields
Path Type Description

applicantIds

Array

존재하지 않는 지원자의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 167

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/applicants/reject"
}

3.7.3. 실패: 이미 불합격한 지원자

HTTP request
PATCH /v1/applicants/reject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 28
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo

{
  "applicantIds" : [ 1 ]
}
Request cookies
Name Description

accessToken

사용자 토큰

Request fields
Path Type Description

applicantIds

Array

이미 불합격한 지원자의 id

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:16 GMT
Connection: close
Content-Length: 169

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "이미 불합격한 지원자입니다.",
  "instance" : "/v1/applicants/reject"
}

3.8. 지원자 일괄 불합격 해제

3.8.1. 성공

HTTP request
PATCH /v1/applicants/unreject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 31
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNSwiZXhwIjoxNzMwNTYxNzE1fQ.JKJcaSNnNoriDApkLoIe1034_YGKLocyNShVoKUhkJo

{
  "applicantIds" : [ 1, 2 ]
}
Request cookies
Name Description

accessToken

사용자 토큰

Request fields
Path Type Description

applicantIds

Array

불합격 해제시킬 지원자들의 id

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive

3.8.2. 실패: 존재하지 않는 지원자

HTTP request
PATCH /v1/applicants/unreject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 29
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNSwiZXhwIjoxNzMwNTYxNzE1fQ.JKJcaSNnNoriDApkLoIe1034_YGKLocyNShVoKUhkJo

{
  "applicantIds" : [ -1 ]
}
Request cookies
Name Description

accessToken

사용자 토큰

Request fields
Path Type Description

applicantIds

Array

존재하지 않는 지원자의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 169

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/applicants/unreject"
}

3.8.3. 실패: 불합격 하지 않은 지원자

HTTP request
PATCH /v1/applicants/unreject HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 28
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNiwiZXhwIjoxNzMwNTYxNzE2fQ.wTFUba3gejhlfbTb-tU6-8m4XuFV4m7E-4AVWyNGIrI

{
  "applicantIds" : [ 1 ]
}
Request cookies
Name Description

accessToken

사용자 토큰

Request fields
Path Type Description

applicantIds

Array

불합격하지 않은 지원자의 id

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:16 GMT
Connection: close
Content-Length: 174

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "불합격하지 않은 지원자입니다.",
  "instance" : "/v1/applicants/unreject"
}

4. 동아리

4.1. 동아리 생성

4.1.1. 성공

HTTP request
POST /v1/clubs?memberId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 33
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOCwiZXhwIjoxNzMwNTYxNzI4fQ.PgL6xnzpx3cYIMS8Pro8wDBNXRKXXHf6CQVsbfH4O34

{
  "name" : "연합 동아리"
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

memberId

동아리를 생성할 사용자의 id

Request fields
Path Type Description

name

String

생성할 동아리의 이름

HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: /v1/clubs/2
Date: Sat, 19 Oct 2024 15:35:28 GMT
Keep-Alive: timeout=60
Connection: keep-alive

4.1.2. 실패: 존재하지 않는 사용자

HTTP request
POST /v1/clubs?memberId=-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 33
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOCwiZXhwIjoxNzMwNTYxNzI4fQ.PgL6xnzpx3cYIMS8Pro8wDBNXRKXXHf6CQVsbfH4O34

{
  "name" : "연합 동아리"
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

memberId

존재하지 않는 사용자의 id

Request fields
Path Type Description

name

String

생성할 동아리의 이름

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:28 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 152

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 회원입니다.",
  "instance" : "/v1/clubs"
}

4.1.3. 실패: 조건에 맞지 않는 동아리 이름

HTTP request
POST /v1/clubs?memberId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 17
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOCwiZXhwIjoxNzMwNTYxNzI4fQ.PgL6xnzpx3cYIMS8Pro8wDBNXRKXXHf6CQVsbfH4O34

{
  "name" : ""
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

memberId

동아리를 생성할 사용자의 id

Request fields
Path Type Description

name

String

조건에 맞지 않는 동아리의 이름

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:28 GMT
Connection: close
Content-Length: 165

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{name=동아리 이름은 필수 값입니다.}",
  "instance" : "/v1/clubs"
}

5. 대시보드

5.1. 대시보드 생성

5.1.1. 성공

HTTP request
POST /v1/dashboards?clubId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 372
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOCwiZXhwIjoxNzMwNTYxNzI4fQ.PgL6xnzpx3cYIMS8Pro8wDBNXRKXXHf6CQVsbfH4O34

{
  "title" : "크루루대시보드",
  "postingContent" : "# 공고 내용",
  "questions" : [ {
    "type" : "DROPDOWN",
    "question" : "객관식질문1",
    "choices" : [ {
      "choice" : "선택지1",
      "orderIndex" : 1
    } ],
    "orderIndex" : 1,
    "required" : false
  } ],
  "startDate" : "2024-08-02T02:00:00",
  "endDate" : "2024-08-08T02:00:00"
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

clubId

동아리의 id

Request fields
Path Type Description

title

String

공고 제목

postingContent

String

공고 내용

questions

Array

질문들

startDate

String

공고 시작 날짜

endDate

String

공고 마감 날짜

questions[].type

String

질문 유형

questions[].question

String

질문 내용

questions[].choices

Array

질문의 선택지들

questions[].orderIndex

Number

질문의 순서

questions[].required

Boolean

질문의 필수여부

questions[].choices[].choice

String

객관식 질문의 선택지

questions[].choices[].orderIndex

Number

선택지의 순서

HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: /v1/dashboards/1
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:28 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 44

{
  "applyFormId" : 1,
  "dashboardId" : 1
}

5.1.2. 실패: 적절하지 않은 질문 생성

HTTP request
POST /v1/dashboards?clubId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 370
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOSwiZXhwIjoxNzMwNTYxNzI5fQ.r2b883PixNP2qawjkcP4mMDHz3_ULpwBh1SzwPxGNpI

{
  "title" : "크루루대시보드",
  "postingContent" : "# 공고 내용",
  "questions" : [ {
    "type" : "DROPDOWN",
    "question" : "객관식질문",
    "choices" : [ {
      "choice" : "선택지1",
      "orderIndex" : 0
    } ],
    "orderIndex" : 0,
    "required" : null
  } ],
  "startDate" : "2024-08-02T02:00:00",
  "endDate" : "2024-08-08T02:00:00"
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

clubId

동아리의 id

Request fields
Path Type Description

title

String

공고 제목

postingContent

String

공고 내용

questions

Array

질문들

startDate

String

공고 시작 날짜

endDate

String

공고 마감 날짜

questions[].type

String

질문 유형

questions[].question

String

질문 내용

questions[].choices

Array

질문의 선택지들

questions[].orderIndex

Number

질문의 순서

questions[].required

Null

질문의 필수여부

questions[].choices[].choice

String

객관식 질문의 선택지

questions[].choices[].orderIndex

Number

선택지의 순서

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:29 GMT
Connection: close
Content-Length: 163

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{questions[0].required=must not be null}",
  "instance" : "/v1/dashboards"
}

5.1.3. 실패: 존재하지 않는 동아리

HTTP request
POST /v1/dashboards?clubId=-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 372
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOCwiZXhwIjoxNzMwNTYxNzI4fQ.PgL6xnzpx3cYIMS8Pro8wDBNXRKXXHf6CQVsbfH4O34

{
  "title" : "크루루대시보드",
  "postingContent" : "# 공고 내용",
  "questions" : [ {
    "type" : "DROPDOWN",
    "question" : "객관식질문1",
    "choices" : [ {
      "choice" : "선택지1",
      "orderIndex" : 1
    } ],
    "orderIndex" : 1,
    "required" : false
  } ],
  "startDate" : "2024-08-02T02:00:00",
  "endDate" : "2024-08-08T02:00:00"
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

clubId

존재하지 않는 동아리 id

Request fields
Path Type Description

title

String

공고 제목

postingContent

String

공고 내용

questions

Array

질문들

startDate

String

공고 시작 날짜

endDate

String

공고 마감 날짜

questions[].type

String

질문 유형

questions[].question

String

질문 내용

questions[].choices

Array

질문의 선택지들

questions[].orderIndex

Number

질문의 순서

questions[].required

Boolean

질문의 필수여부

questions[].choices[].choice

String

객관식 질문의 선택지

questions[].choices[].orderIndex

Number

선택지의 순서

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:28 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 155

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Club입니다.",
  "instance" : "/v1/dashboards"
}

5.2. 대시보드 조회

5.2.1. 성공

HTTP request
GET /v1/dashboards?clubId=1 HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOCwiZXhwIjoxNzMwNTYxNzI4fQ.PgL6xnzpx3cYIMS8Pro8wDBNXRKXXHf6CQVsbfH4O34
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

clubId

동아리의 id

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:28 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 337

{
  "dashboards" : [ {
    "dashboardId" : 1,
    "applyFormId" : 1,
    "title" : "크루루 백엔드 모집 공고",
    "stats" : {
      "accept" : 0,
      "fail" : 0,
      "inProgress" : 0,
      "total" : 0
    },
    "startDate" : "2024-07-31T02:00:00",
    "endDate" : "2024-08-08T02:00:00"
  } ],
  "clubName" : "크루루"
}
Response fields
Path Type Description

clubName

String

동아리명

dashboards

Array

대시보드들의 요약 정보

dashboards[].dashboardId

Number

대시보드의 id

dashboards[].applyFormId

Number

지원폼의 id

dashboards[].title

String

지원폼의 공고명

dashboards[].stats.accept

Number

합격 인원

dashboards[].stats.fail

Number

불합격 인원

dashboards[].stats.inProgress

Number

진행중 인원

dashboards[].stats.total

Number

인원 총계

dashboards[].startDate

String

시작날짜

dashboards[].endDate

String

마감날짜

5.3. 대시보드 삭제

5.3.1. 성공

HTTP request
DELETE /v1/dashboards/1 HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOCwiZXhwIjoxNzMwNTYxNzI4fQ.PgL6xnzpx3cYIMS8Pro8wDBNXRKXXHf6CQVsbfH4O34
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/dashboards/{dashboardId}
Parameter Description

dashboardId

삭제할 대시보드의 id

HTTP response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:28 GMT
Keep-Alive: timeout=60
Connection: keep-alive

5.3.2. 실패: 존재하지 않는 대시보드

HTTP request
DELETE /v1/dashboards/-1 HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOCwiZXhwIjoxNzMwNTYxNzI4fQ.PgL6xnzpx3cYIMS8Pro8wDBNXRKXXHf6CQVsbfH4O34
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/dashboards/{dashboardId}
Parameter Description

dashboardId

존재하지 않는 대시보드의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:28 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 163

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Dashboard입니다.",
  "instance" : "/v1/dashboards/-1"
}

6. 프로세스

6.1. 프로세스 목록 조회

6.1.1. 성공

HTTP request
GET /v1/processes?dashboardId=1&minScore=0.00&maxScore=5.00&evaluationStatus=ALL&sortByCreatedAt=DESC&sortByScore=null HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

dashboardId

대시보드의 id, required=true

minScore

지원자 최소 평균 점수: 0.00(default) ~ 5.00, required=false

maxScore

지원자 최대 평균 점수: 0.00 ~ 5.00(default), required=false

evaluationStatus

지원자 평가 유무: ALL(default), NOT_EVALUATED, EVALUATED, required=false

sortByCreatedAt

지원자 지원 날짜 정렬 조건: DESC, ASC, required=false

sortByScore

지원자 평균 점수 정렬 조건: DESC, ASC, required=false

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:33 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 851

{
  "processes" : [ {
    "processId" : 1,
    "orderIndex" : 0,
    "applicants" : [ {
      "applicantId" : 1,
      "applicantName" : "도비",
      "createdAt" : "2024-10-19T15:35:33.322926",
      "isRejected" : false,
      "evaluationCount" : 0,
      "averageScore" : 0.0
    } ],
    "name" : "지원 접수",
    "description" : "지원자가 지원서를 제출하는 단계"
  }, {
    "processId" : 2,
    "orderIndex" : 1,
    "applicants" : [ ],
    "name" : "1차 면접",
    "description" : "화상 면접"
  }, {
    "processId" : 3,
    "orderIndex" : 0,
    "applicants" : [ ],
    "name" : "지원 접수",
    "description" : "지원자가 지원서를 제출하는 단계"
  } ],
  "applyFormId" : 1,
  "title" : "크루루 백엔드 모집 공고",
  "startDate" : "2024-07-31T02:00:00",
  "endDate" : "2024-08-08T02:00:00"
}
Response fields
Path Type Description

applyFormId

Number

지원폼의 id

processes

Array

프로세스 목록

title

String

지원폼의 제목

startDate

String

지원폼 모집 시작일

endDate

String

지원폼 모집 종료일

processes[].processId

Number

프로세스의 id

processes[].orderIndex

Number

프로세스의 순서

processes[].name

String

프로세스명

processes[].description

String

프로세스의 설명

processes[].applicants

Array

프로세스에 속한 지원자들

processes[].applicants[]applicantId

Number

지원자의 id

processes[].applicants[]applicantName

String

지원자의 이름

processes[].applicants[]createdAt

String

지원자의 지원날짜

processes[].applicants[]isRejected

Boolean

지원자의 불합격 여부

processes[].applicants[]evaluationCount

Number

지원자의 평가 개수

processes[].applicants[]averageScore

Number

지원자의 평가 평균 점수

6.1.2. 실패: 존재하지 않는 대시보드

HTTP request
GET /v1/processes?dashboardId=0 HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

dashboardId

존재하지 않는 대시보드의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:33 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 159

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Dashboard입니다.",
  "instance" : "/v1/processes"
}

6.2. 프로세스 생성

6.2.1. 성공

HTTP request
POST /v1/processes?dashboardId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 90
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA

{
  "processName" : "1차 면접",
  "orderIndex" : 1,
  "description" : "화상 면접"
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

dashboardId

대시보드의 id

Request fields
Path Type Description

processName

String

프로세스명

description

String

프로세스의 설명

orderIndex

Number

프로세스의 순서

HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive

6.2.2. 실패: 존재하지 않는 대시보드

HTTP request
POST /v1/processes?dashboardId=-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 90
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA

{
  "processName" : "1차 면접",
  "orderIndex" : 1,
  "description" : "화상 면접"
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

dashboardId

대시보드의 id

Request fields
Path Type Description

processName

String

프로세스명

description

String

프로세스의 설명

orderIndex

Number

프로세스의 순서

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 159

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Dashboard입니다.",
  "instance" : "/v1/processes"
}

6.2.3. 실패: 조건에 맞지 않는 프로세스 이름

HTTP request
POST /v1/processes?dashboardId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 79
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA

{
  "processName" : "",
  "orderIndex" : 1,
  "description" : "화상 면접"
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

dashboardId

대시보드의 id

Request fields
Path Type Description

processName

String

부적절한 프로세스명

description

String

프로세스의 설명

orderIndex

Number

프로세스의 순서

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:33 GMT
Connection: close
Content-Length: 172

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{name=프로세스 이름은 필수 값입니다.}",
  "instance" : "/v1/processes"
}

6.2.4. 실패: 최대 프로세스 개수 초과

HTTP request
POST /v1/processes?dashboardId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 81
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA

{
  "processName" : "name",
  "orderIndex" : 3,
  "description" : "description"
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

dashboardId

생성할 프로세스의 대시보드 id

Request fields
Path Type Description

processName

String

프로세스명

description

String

프로세스의 설명

orderIndex

Number

프로세스의 순서

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:33 GMT
Connection: close
Content-Length: 179

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "프로세스는 최대 5개까지 생성 가능합니다.",
  "instance" : "/v1/processes"
}

6.3. 프로세스 수정

6.3.1. 성공

HTTP request
PATCH /v1/processes/1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 81
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA

{
  "processName" : "임시 과정",
  "description" : "수정된 프로세스"
}
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/processes/{processId}
Parameter Description

processId

수정될 프로세스의 id

Request fields
Path Type Description

processName

String

프로세스명

description

String

프로세스의 설명

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:33 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 322

{
  "processId" : 1,
  "orderIndex" : 0,
  "applicants" : [ {
    "applicantId" : 1,
    "applicantName" : "도비",
    "createdAt" : "2024-10-19T15:35:33.266806",
    "isRejected" : false,
    "evaluationCount" : 0,
    "averageScore" : 0.0
  } ],
  "name" : "임시 과정",
  "description" : "수정된 프로세스"
}
Response fields
Path Type Description

processId

Number

프로세스의 id

orderIndex

Number

프로세스의 순서

name

String

프로세스명

description

String

프로세스의 설명

applicants

Array

프로세스에 속한 지원자들

applicants[].applicantId

Number

지원자의 id

applicants[].applicantName

String

지원자의 이름

applicants[].createdAt

String

지원자의 지원날짜

applicants[].isRejected

Boolean

지원자의 불합격 여부

applicants[].evaluationCount

Number

지원자의 평가 개수

applicants[].averageScore

Number

지원자의 평가 평균 점수

6.3.2. 실패: 조건에 맞지 않는 프로세스 이름

HTTP request
PATCH /v1/processes/1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 57
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA

{
  "processName" : "",
  "description" : "description"
}
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/processes/{processId}
Parameter Description

processId

수정될 프로세스의 id

Request fields
Path Type Description

processName

String

조건에 맞지 않는 프로세스 이름

description

String

수정될 프로세스 설명

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:33 GMT
Connection: close
Content-Length: 184

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{name=수정할 프로세스 이름은 필수 값입니다.}",
  "instance" : "/v1/processes/1"
}

6.3.3. 실패: 존재하지 않는 프로세스

HTTP request
PATCH /v1/processes/-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 81
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA

{
  "processName" : "임시 과정",
  "description" : "수정된 프로세스"
}
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/processes/{processId}
Parameter Description

processId

수정될 프로세스의 id

Request fields
Path Type Description

processName

String

조건에 맞지 않는 프로세스 이름

description

String

수정될 프로세스 설명

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 160

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Process입니다.",
  "instance" : "/v1/processes/-1"
}

6.4. 프로세스 삭제

6.4.1. 성공

HTTP request
DELETE /v1/processes/1 HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/processes/{processId}
Parameter Description

processId

생성할 프로세스의 대시보드 id

HTTP response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive

6.4.2. 실패: 존재하지 않는 프로세스

HTTP request
DELETE /v1/processes/-1 HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/processes/{processId}
Parameter Description

processId

삭제할 프로세스의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 160

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Process입니다.",
  "instance" : "/v1/processes/-1"
}

6.4.3. 실패: 처음 혹은 마지막 프로세스

HTTP request
DELETE /v1/processes/1 HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/processes/{processId}
Parameter Description

processId

삭제할 프로세스의 id

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:33 GMT
Connection: close
Content-Length: 169

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "삭제가 불가능한 프로세스입니다.",
  "instance" : "/v1/processes/1"
}

6.4.4. 실패: 지원자가 존재하는 프로세스

HTTP request
DELETE /v1/processes/-1 HTTP/1.1
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/processes/{processId}
Parameter Description

processId

삭제할 프로세스의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 160

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Process입니다.",
  "instance" : "/v1/processes/-1"
}

7. 질문

7.1. 질문 변경

7.1.1. 성공

HTTP request
PATCH /v1/questions?applyformId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 221
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA

{
  "questions" : [ {
    "type" : "LONG_ANSWER",
    "question" : "new",
    "choices" : [ {
      "choice" : "좋아하는 음식은?",
      "orderIndex" : 0
    } ],
    "orderIndex" : 0,
    "required" : true
  } ]
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

applyformId

질문을 변경할 지원폼의 id

Request fields
Path Type Description

questions

Array

변경할 질문들

questions[].type

String

질문의 유형

questions[].question

String

질문 내용

questions[].choices

Array

질문의 선택지들

questions[].orderIndex

Number

질문의 순서

questions[].required

Boolean

질문의 필수 여부

questions[].choices[].choice

String

선택지의 내용

questions[].choices[].orderIndex

Number

선택지의 순서

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:33 GMT
Keep-Alive: timeout=60
Connection: keep-alive

7.1.2. 실패: 존재하지 않는 지원폼

HTTP request
PATCH /v1/questions?applyformId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 221
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEzMywiZXhwIjoxNzMwNTYxNzMzfQ.Gl2oXKK4XZTplOncdV38cArM6EJaUxipaikCzaMIeSA

{
  "questions" : [ {
    "type" : "LONG_ANSWER",
    "question" : "new",
    "choices" : [ {
      "choice" : "좋아하는 음식은?",
      "orderIndex" : 0
    } ],
    "orderIndex" : 0,
    "required" : true
  } ]
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

applyformId

질문을 변경할 지원폼의 id

Request fields
Path Type Description

questions

Array

변경할 질문들

questions[].type

String

질문의 유형

questions[].question

String

질문 내용

questions[].choices

Array

질문의 선택지들

questions[].orderIndex

Number

질문의 순서

questions[].required

Boolean

질문의 필수 여부

questions[].choices[].choice

String

선택지의 내용

questions[].choices[].orderIndex

Number

선택지의 순서

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:33 GMT
Keep-Alive: timeout=60
Connection: keep-alive

8. 지원폼

8.1. 지원폼 제출

8.1.1. 성공

HTTP request
POST /v1/applyform/1/submit HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 332

{
  "applicant" : {
    "name" : "초코칩",
    "email" : "dev.chocochip@gmail.com",
    "phone" : "01000000000"
  },
  "answers" : [ {
    "questionId" : 1,
    "replies" : [ "안녕하세요, 맛있는 초코칩입니다." ]
  }, {
    "questionId" : 2,
    "replies" : [ "온라인" ]
  } ],
  "personalDataCollection" : true
}
Path parameters
Table 1. /v1/applyform/{applyFormId}/submit
Parameter Description

applyFormId

지원폼의 id

Request fields
Path Type Description

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

answers

Array

지원폼에 대한 응답 모음

personalDataCollection

Boolean

개인정보 활용 동의 여부

answers[].questionId

Number

질문의 id

answers[].replies

Array

질문에 대한 응답

HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: /v1/applyform/1
Date: Sat, 19 Oct 2024 15:35:22 GMT
Keep-Alive: timeout=60
Connection: keep-alive

8.1.2. 실패: 개인정보 활용 거부

HTTP request
POST /v1/applyform/1/submit HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 333

{
  "applicant" : {
    "name" : "초코칩",
    "email" : "dev.chocochip@gmail.com",
    "phone" : "01000000000"
  },
  "answers" : [ {
    "questionId" : 1,
    "replies" : [ "안녕하세요, 맛있는 초코칩입니다." ]
  }, {
    "questionId" : 2,
    "replies" : [ "온라인" ]
  } ],
  "personalDataCollection" : false
}
Path parameters
Table 1. /v1/applyform/{applyFormId}/submit
Parameter Description

applyFormId

지원폼의 id

Request fields
Path Type Description

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

answers

Array

지원폼에 대한 응답 모음

personalDataCollection

Boolean

개인정보 활용 동의 거부

answers[].questionId

Number

질문의 id

answers[].replies

Array

질문에 대한 응답

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:22 GMT
Connection: close
Content-Length: 184

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "개인 정보 수집에 동의하지 않았습니다.",
  "instance" : "/v1/applyform/1/submit"
}

8.1.3. 실패: 잘못된 지원자 정보

HTTP request
POST /v1/applyform/1/submit HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 260

{
  "applicant" : {
    "name" : "초코칩",
    "email" : "dev.chocochip@gmail.com",
    "phone" : ""
  },
  "answers" : [ {
    "questionId" : 1,
    "replies" : [ "안녕하세요, 맛있는 초코칩입니다." ]
  } ],
  "personalDataCollection" : true
}
Path parameters
Table 1. /v1/applyform/{applyFormId}/submit
Parameter Description

applyFormId

지원폼의 id

Request fields
Path Type Description

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

answers

Array

지원폼에 대한 응답 모음

personalDataCollection

Boolean

개인정보 활용 동의 여부

answers[].questionId

Number

질문의 id

answers[].replies

Array

질문에 대한 응답

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:23 GMT
Connection: close
Content-Length: 198

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{applicantCreateRequest.phone=전화번호는 필수 값입니다.}",
  "instance" : "/v1/applyform/1/submit"
}

8.1.4. 실패: 잘못된 답변

HTTP request
POST /v1/applyform/1/submit HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 223

{
  "applicant" : {
    "name" : "초코칩",
    "email" : "dev.chocochip@gmail.com",
    "phone" : "01000000000"
  },
  "answers" : [ {
    "questionId" : 1,
    "replies" : null
  } ],
  "personalDataCollection" : true
}
Path parameters
Table 1. /v1/applyform/{applyFormId}/submit
Parameter Description

applyFormId

지원폼의 id

Request fields
Path Type Description

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

answers

Array

지원폼에 대한 응답 모음

personalDataCollection

Boolean

개인정보 활용 동의 여부

answers[].questionId

Number

질문의 id

answers[].replies

Null

질문에 대한 응답

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:22 GMT
Connection: close
Content-Length: 194

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{answerCreateRequest[0].replies=응답은 필수 값입니다.}",
  "instance" : "/v1/applyform/1/submit"
}

8.1.5. 실패: 대시보드 내에 제출 프로세스 존재하지 않을 경우

HTTP request
POST /v1/applyform/1/submit HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 234

{
  "applicant" : {
    "name" : "초코칩",
    "email" : "dev.chocochip@gmail.com",
    "phone" : "01000000000"
  },
  "answers" : [ {
    "questionId" : 1,
    "replies" : [ "온라인" ]
  } ],
  "personalDataCollection" : true
}
Path parameters
Table 1. /v1/applyform/{applyFormId}/submit
Parameter Description

applyFormId

지원폼의 id

Request fields
Path Type Description

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

answers

Array

지원폼에 대한 응답 모음

personalDataCollection

Boolean

개인정보 활용 동의 여부

answers[].questionId

Number

질문의 id

answers[].replies

Array

질문에 대한 응답

HTTP response
HTTP/1.1 500 Internal Server Error
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:22 GMT
Connection: close
Content-Length: 187

{
  "type" : "about:blank",
  "title" : "Internal Server Error",
  "status" : 500,
  "detail" : "서버 내부에 오류가 발생했습니다.",
  "instance" : "/v1/applyform/1/submit"
}

8.1.6. 실패: 모집 기간을 벗어난 제출

HTTP request
POST /v1/applyform/1/submit HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 234

{
  "applicant" : {
    "name" : "초코칩",
    "email" : "dev.chocochip@gmail.com",
    "phone" : "01000000000"
  },
  "answers" : [ {
    "questionId" : 1,
    "replies" : [ "온라인" ]
  } ],
  "personalDataCollection" : true
}
Path parameters
Table 1. /v1/applyform/{applyFormId}/submit
Parameter Description

applyFormId

지원폼의 id

Request fields
Path Type Description

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

answers

Array

지원폼에 대한 응답 모음

personalDataCollection

Boolean

개인정보 활용 동의 여부

answers[].questionId

Number

질문의 id

answers[].replies

Array

질문에 대한 응답

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:22 GMT
Connection: close
Content-Length: 161

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "접수 기간이 아닙니다.",
  "instance" : "/v1/applyform/1/submit"
}

8.1.7. 실패: 존재하지 않는 지원폼

HTTP request
POST /v1/applyform/-1/submit HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 234

{
  "applicant" : {
    "name" : "초코칩",
    "email" : "dev.chocochip@gmail.com",
    "phone" : "01000000000"
  },
  "answers" : [ {
    "questionId" : 1,
    "replies" : [ "온라인" ]
  } ],
  "personalDataCollection" : true
}
Path parameters
Table 1. /v1/applyform/{applyFormId}/submit
Parameter Description

applyFormId

존재하지 않는 지원폼의 id

Request fields
Path Type Description

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

answers

Array

지원폼에 대한 응답 모음

personalDataCollection

Boolean

개인정보 활용 동의 여부

answers[].questionId

Number

질문의 id

answers[].replies

Array

질문에 대한 응답

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:22 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 173

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 지원서 폼입니다.",
  "instance" : "/v1/applyform/-1/submit"
}

8.1.8. 실패: 존재하지 않는 질문

HTTP request
POST /v1/applyform/1/submit HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 235

{
  "applicant" : {
    "name" : "초코칩",
    "email" : "dev.chocochip@gmail.com",
    "phone" : "01000000000"
  },
  "answers" : [ {
    "questionId" : -1,
    "replies" : [ "온라인" ]
  } ],
  "personalDataCollection" : true
}
Path parameters
Table 1. /v1/applyform/{applyFormId}/submit
Parameter Description

applyFormId

지원폼의 id

Request fields
Path Type Description

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

answers

Array

지원폼에 대한 응답 모음

personalDataCollection

Boolean

개인정보 활용 동의 여부

answers[].questionId

Number

존재하지 않는 질문의 id

answers[].replies

Array

질문에 대한 응답

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:22 GMT
Connection: close
Content-Length: 215

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{answerCreateRequest[0].questionId=질문 식별자는 0 이상의 정수입니다.}",
  "instance" : "/v1/applyform/1/submit"
}

8.1.9. 실패: 필수 질문에 응답하지 않음

HTTP request
POST /v1/applyform/1/submit HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 174

{
  "applicant" : {
    "name" : "초코칩",
    "email" : "dev.chocochip@gmail.com",
    "phone" : "01000000000"
  },
  "answers" : [ ],
  "personalDataCollection" : true
}
Path parameters
Table 1. /v1/applyform/{applyFormId}/submit
Parameter Description

applyFormId

지원폼의 id

Request fields
Path Type Description

applicant.name

String

지원자의 이름

applicant.email

String

지원자의 이메일

applicant.phone

String

지원자의 전화번호

answers

Array

지원폼에 대한 응답 모음

personalDataCollection

Boolean

개인정보 활용 동의 여부

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:22 GMT
Connection: close
Content-Length: 184

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "응답하지 않은 필수 질문이 존재합니다.",
  "instance" : "/v1/applyform/1/submit"
}

8.2. 지원폼 조회

8.2.1. 성공

HTTP request
GET /v1/applyform/1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyMywiZXhwIjoxNzMwNTYxNzIzfQ.iz3OSM3b6E2cqtr_A8l9OwizMOHHuXPnmUSwNb607DE
Path parameters
Table 1. /v1/applyform/{applyFormId}
Parameter Description

applyFormId

지원폼의 id

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:22 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 945

{
  "postingContent" : "# 모집공고 설명1 ## 이렇게 지원하세요",
  "questions" : [ {
    "label" : "주관식 단답형",
    "choices" : [ ],
    "id" : 1,
    "type" : "SHORT_ANSWER",
    "orderIndex" : 1,
    "required" : false
  }, {
    "label" : "객관식 다중 선택",
    "choices" : [ {
      "label" : "1번 선택지",
      "id" : 1,
      "orderIndex" : 1
    }, {
      "label" : "2번 선택지",
      "id" : 2,
      "orderIndex" : 2
    }, {
      "label" : "3번 선택지",
      "id" : 3,
      "orderIndex" : 3
    }, {
      "label" : "4번 선택지",
      "id" : 4,
      "orderIndex" : 4
    }, {
      "label" : "5번 선택지",
      "id" : 5,
      "orderIndex" : 5
    } ],
    "id" : 2,
    "type" : "MULTIPLE_CHOICE",
    "orderIndex" : 4,
    "required" : false
  } ],
  "title" : "크루루 백엔드 모집 공고",
  "startDate" : "2024-07-31T02:00:00",
  "endDate" : "2024-08-08T02:00:00"
}
Response fields
Path Type Description

title

String

지원폼의 제목

postingContent

String

지원자의 내용(본문)

startDate

String

지원 가능 날짜

endDate

String

지원 마감 날짜

questions

Array

지원폼의 질문들

questions[].id

Number

질문의 id

questions[].type

String

질문 유형

questions[].label

String

질문의 내용

questions[].orderIndex

Number

질문 순서

questions[].choices

Array

질문의 선택지

questions[].required

Boolean

질문 필수여부

questions[].choices[].id

Number

선택지의 id

questions[].choices[].label

String

선택지의 내용

questions[].choices[].orderIndex

Number

선택지 순서

8.2.2. 실패: 존재하지 않는 지원폼

HTTP request
GET /v1/applyform/-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyMywiZXhwIjoxNzMwNTYxNzIzfQ.iz3OSM3b6E2cqtr_A8l9OwizMOHHuXPnmUSwNb607DE
Path parameters
Table 1. /v1/applyform/{applyFormId}
Parameter Description

applyFormId

존재하지 않는 지원폼의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:23 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 166

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 지원서 폼입니다.",
  "instance" : "/v1/applyform/-1"
}

8.3. 지원폼 수정

8.3.1. 성공

HTTP request
PATCH /v1/applyform/1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 178
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyMywiZXhwIjoxNzMwNTYxNzIzfQ.iz3OSM3b6E2cqtr_A8l9OwizMOHHuXPnmUSwNb607DE

{
  "title" : "크루루 백엔드 모집 공고~~",
  "postingContent" : "# 모집 공고 설명 #",
  "startDate" : "2024-08-02T02:00:00",
  "endDate" : "2024-08-08T02:00:00"
}
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/applyform/{applyFormId}
Parameter Description

applyFormId

지원폼의 id

Request fields
Path Type Description

title

String

지원폼 제목

postingContent

String

지원폼 내용(본문)

startDate

String

지원 시작 날짜

endDate

String

지원 마감 날짜

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:22 GMT
Keep-Alive: timeout=60
Connection: keep-alive

8.3.2. 실패: 존재하지 않는 지원폼

HTTP request
PATCH /v1/applyform/-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 178
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyMywiZXhwIjoxNzMwNTYxNzIzfQ.iz3OSM3b6E2cqtr_A8l9OwizMOHHuXPnmUSwNb607DE

{
  "title" : "크루루 백엔드 모집 공고~~",
  "postingContent" : "# 모집 공고 설명 #",
  "startDate" : "2024-08-02T02:00:00",
  "endDate" : "2024-08-08T02:00:00"
}
Path parameters
Table 1. /v1/applyform/{applyFormId}
Parameter Description

applyFormId

존재하지 않는 지원폼의 id

Request fields
Path Type Description

title

String

지원폼 제목

postingContent

String

지원폼 내용(본문)

startDate

String

지원 시작 날짜

endDate

String

지원 마감 날짜

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:22 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 162

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 ApplyForm입니다.",
  "instance" : "/v1/applyform/-1"
}

9. 평가

9.1. 평가 생성

9.1.1. 성공

HTTP request
POST /v1/evaluations?processId=1&applicantId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 64
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo

{
  "score" : 4,
  "content" : "서류가 인상적입니다."
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

processId

프로세스의 id

applicantId

지원자의 id

Request fields
Path Type Description

score

Number

평가 점수

content

String

평가 주관식 내용

HTTP response
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: /v1/evaluations?processId=1&applicantId=1
Date: Sat, 19 Oct 2024 15:35:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive

9.1.2. 실패: 존재하지 않는 지원자

HTTP request
POST /v1/evaluations?processId=1&applicantId=-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 64
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo

{
  "score" : 4,
  "content" : "서류가 인상적입니다."
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

processId

프로세스의 id

applicantId

존재하지 않는 지원자의 id

Request fields
Path Type Description

score

Number

평가 점수

content

String

평가 주관식 내용

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 161

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/evaluations"
}

9.1.3. 실패: 존재하지 않는 프로세스

HTTP request
POST /v1/evaluations?processId=-1&applicantId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 64
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExOCwiZXhwIjoxNzMwNTYxNzE4fQ.sfoH1KYV9nHrpy7NpeL83m2iQB9_8NFprF4ptc-0pYk

{
  "score" : 4,
  "content" : "서류가 인상적입니다."
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

processId

존재하지 않는 프로세스의 id

applicantId

지원자의 id

Request fields
Path Type Description

score

Number

평가 점수

content

String

평가 주관식 내용

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 159

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Process입니다.",
  "instance" : "/v1/evaluations"
}

9.1.4. 실패: 조건에 맞지 않는 평가 점수

HTTP request
POST /v1/evaluations?processId=1&applicantId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 65
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo

{
  "score" : -4,
  "content" : "서류가 인상적입니다."
}
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

processId

프로세스의 id

applicantId

지원자의 id

Request fields
Path Type Description

score

Number

적절하지 않은 평가 점수

content

String

평가 주관식 내용

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:16 GMT
Connection: close
Content-Length: 186

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{score=평가 점수는 1 이상 5 이하의 정수입니다.}",
  "instance" : "/v1/evaluations"
}

9.2. 평가 조회

9.2.1. 성공

HTTP request
GET /v1/evaluations?processId=1&applicantId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

processId

프로세스의 id

applicantId

지원자의 id

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 174

{
  "evaluations" : [ {
    "evaluationId" : 1,
    "score" : 5,
    "content" : "서류가 인상 깊었습니다.",
    "createdDate" : "2024-10-19T15:35:17.932486"
  } ]
}
Response fields
Path Type Description

evaluations

Array

평가 목록

evaluations[].evaluationId

Number

평가의 id

evaluations[].score

Number

평가 점수

evaluations[].content

String

평가 내용

evaluations[].createdDate

String

평가 생성 날짜

9.2.2. 실패: 존재하지 않는 지원자

HTTP request
GET /v1/evaluations?processId=1&applicantId=-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

processId

프로세스의 id

applicantId

지원자의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 161

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/evaluations"
}

9.2.3. 실패: 존재하지 않는 프로세스

HTTP request
GET /v1/evaluations?processId=-1&applicantId=1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo
Request cookies
Name Description

accessToken

사용자 토큰

Query parameters
Parameter Description

processId

프로세스의 id

applicantId

지원자의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 159

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Process입니다.",
  "instance" : "/v1/evaluations"
}

9.3. 평가 변경

9.3.1. 성공

HTTP request
PATCH /v1/evaluations/1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 64
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExNywiZXhwIjoxNzMwNTYxNzE3fQ.itN0tV1920_AOqwu4BLD9_9pAJFRTDvzKnkUuoGuOgo

{
  "score" : 2,
  "content" : "맞춤법이 틀렸습니다."
}
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/evaluations/{evaluationId}
Parameter Description

evaluationId

평가의 id

Request fields
Path Type Description

score

Number

평가 점수

content

String

평가 주관식 내용

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive

9.3.2. 실패: 존재하지 않는 평가

HTTP request
PATCH /v1/evaluations/-1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 64
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExOCwiZXhwIjoxNzMwNTYxNzE4fQ.sfoH1KYV9nHrpy7NpeL83m2iQB9_8NFprF4ptc-0pYk

{
  "score" : 2,
  "content" : "맞춤법이 틀렸습니다."
}
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/evaluations/{evaluationId}
Parameter Description

evaluationId

존재하지 않는 평가의 id

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 165

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Evaluation입니다.",
  "instance" : "/v1/evaluations/-1"
}

9.3.3. 실패: 조건에 맞지 않는 평가 점수

HTTP request
PATCH /v1/evaluations/1 HTTP/1.1
Content-Type: application/json
Host: localhost:36299
Content-Length: 65
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjExOCwiZXhwIjoxNzMwNTYxNzE4fQ.sfoH1KYV9nHrpy7NpeL83m2iQB9_8NFprF4ptc-0pYk

{
  "score" : -1,
  "content" : "맞춤법이 틀렸습니다."
}
Request cookies
Name Description

accessToken

사용자 토큰

Path parameters
Table 1. /v1/evaluations/{evaluationId}
Parameter Description

evaluationId

평가의 id

Request fields
Path Type Description

score

Number

적절하지 않은 평가 점수

content

String

평가 주관식 내용

HTTP response
HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:18 GMT
Connection: close
Content-Length: 188

{
  "type" : "about:blank",
  "title" : "Bad Request",
  "status" : 400,
  "detail" : "{score=평가 점수는 1 이상 5 이하의 정수입니다.}",
  "instance" : "/v1/evaluations/1"
}

10. 이메일

10.1. 이메일 발송 및 발송 내역 생성

10.1.1. 성공

HTTP request
POST /v1/emails/send HTTP/1.1
Content-Type: multipart/form-data; boundary="Jp1axk7YyW2n4hGsceo8L4qDuMZkbM7czRPfdaA"; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOSwiZXhwIjoxNzMwNTYxNzI5fQ.r2b883PixNP2qawjkcP4mMDHz3_ULpwBh1SzwPxGNpI

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=clubId; filename=file
Content-Type: text/plain

1
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=applicantIds; filename=file
Content-Type: text/plain

1
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=subject; filename=file
Content-Type: text/plain

[우아한테크코스] 7기 최종 심사 결과 안내
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=content; filename=file
Content-Type: text/plain

우아한테크코스 합격을 진심으로 축하합니다!
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=files; filename=email_test.txt
Content-Type: application/octet-stream

이메일 발송 테스트용 파일

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
Request cookies
Name Description

accessToken

사용자 토큰

Request parts
Part Description

clubId

발송 동아리 id

applicantIds

수신자 id 목록

subject

이메일 제목

content

이메일 본문

files

이메일 첨부 파일

HTTP response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Date: Sat, 19 Oct 2024 15:35:29 GMT
Keep-Alive: timeout=60
Connection: keep-alive

10.1.2. 실패: 이메일 형식이 올바르지 않은 이메일 형식

HTTP request
POST /v1/emails/send HTTP/1.1
Content-Type: multipart/form-data; boundary="pBAUPYHgQ630iDdVwg1kbUoZiCwZq72cbQqB"; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOSwiZXhwIjoxNzMwNTYxNzI5fQ.r2b883PixNP2qawjkcP4mMDHz3_ULpwBh1SzwPxGNpI

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=clubId; filename=file
Content-Type: text/plain

1
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=applicantIds; filename=file
Content-Type: text/plain

-1
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=subject; filename=file
Content-Type: text/plain

[우아한테크코스] 7기 최종 심사 결과 안내
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=content; filename=file
Content-Type: text/plain

우아한테크코스 합격을 진심으로 축하합니다!
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=files; filename=email_test.txt
Content-Type: application/octet-stream

이메일 발송 테스트용 파일

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
Request cookies
Name Description

accessToken

사용자 토큰

Request parts
Part Description

clubId

발송 동아리 id

applicantIds

적절하지 않은 수신자 id가 포함된 목록

subject

이메일 제목

content

이메일 본문

files

이메일 첨부 파일

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:29 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 161

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Applicant입니다.",
  "instance" : "/v1/emails/send"
}

10.1.3. 실패: 존재하지 않는 동아리

HTTP request
POST /v1/emails/send HTTP/1.1
Content-Type: multipart/form-data; boundary="72mcZe1xSzPQBUNjEQlnFTodzG0bT8gzjKCjmHg"; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:36299
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiQURNSU4iLCJlbWFpbCI6ImFkbWluQGVtYWlsLmNvbSIsImlhdCI6MTcyOTM1MjEyOSwiZXhwIjoxNzMwNTYxNzI5fQ.r2b883PixNP2qawjkcP4mMDHz3_ULpwBh1SzwPxGNpI

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=clubId; filename=file
Content-Type: text/plain

-1
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=applicantIds; filename=file
Content-Type: text/plain

1
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=subject; filename=file
Content-Type: text/plain

[우아한테크코스] 7기 최종 심사 결과 안내
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=content; filename=file
Content-Type: text/plain

우아한테크코스 합격을 진심으로 축하합니다!
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=files; filename=email_test.txt
Content-Type: application/octet-stream

이메일 발송 테스트용 파일

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
Request cookies
Name Description

accessToken

사용자 토큰

Request parts
Part Description

clubId

존재하지 않는 발송 동아리 id

applicantIds

수신자 id 목록

subject

이메일 제목

content

이메일 본문

files

이메일 첨부 파일

HTTP response
HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Sat, 19 Oct 2024 15:35:29 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 156

{
  "type" : "about:blank",
  "title" : "Not Found",
  "status" : 404,
  "detail" : "존재하지 않는 Club입니다.",
  "instance" : "/v1/emails/send"
}