1. API 목록

2. GET: 배정 목록 조회

교수/외부멘토 별 배정된 팀 리스트를 조회한다.

Table 1. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken} (관리자)

Table 2. /contests/{contestId}/staff
Parameter Description

contestId

대회 ID

Table 3. Query Parameters
Parameter Description

memberType

회원 유형 필터 (MemberRoleType: ROLE_교수, ROLE_외부멘토)

search

이름 또는 담당 팀 이름 검색어

HTTP Request
GET /contests/1/staff?memberType=ROLE_%EA%B5%90%EC%88%98&search=%EA%B0%9C%EB%B0%9C HTTP/1.1
Authorization: Bearer admin.access.token
Host: localhost:8080
HTTP Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 487

[ {
  "contestMemberId" : 1,
  "memberId" : 2,
  "name" : "홍길동",
  "email" : "gildong@example.com",
  "roleType" : "ROLE_교수",
  "teams" : [ {
    "teamId" : 10,
    "teamName" : "개발 1팀"
  }, {
    "teamId" : 12,
    "teamName" : "운영 기획팀"
  } ]
}, {
  "contestMemberId" : 2,
  "memberId" : 3,
  "name" : "이멘토",
  "email" : "mentor@example.com",
  "roleType" : "ROLE_외부멘토",
  "teams" : [ {
    "teamId" : 10,
    "teamName" : "개발 1팀"
  } ]
} ]
Table 4. Response Body’s Fields
Path Type Description

[]

Array

배정 목록

[].contestMemberId

Number

배정 ID

[].memberId

Number

회원 ID

[].name

String

이름

[].email

String

이메일

[].roleType

String

회원 유형 (MemberRoleType)

[].teams

Array

담당 팀 목록

[].teams[].teamId

Number

팀 ID

[].teams[].teamName

String

팀 이름

3. POST: 일괄 배정

여러 교수/외부멘토를 동일한 담당 팀 목록으로 한 번에 배정한다.

Table 5. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken} (관리자)

Table 6. /contests/{contestId}/staff/batch
Parameter Description

contestId

대회 ID

HTTP Request
POST /contests/1/staff/batch HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer admin.access.token
Content-Length: 54
Host: localhost:8080

{
  "memberIds" : [ 2, 3 ],
  "teamIds" : [ 10, 12 ]
}
Table 7. Request Fields
Path Type Description

memberIds

Array

배정할 회원 ID 목록

teamIds

Array

담당 팀 ID 목록

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

4. PATCH: 배정 팀 수정

배정된 담당 팀 목록을 추가/삭제하여 수정한다.

Table 8. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken} (관리자)

Table 9. /contests/{contestId}/staff/{contestMemberId}
Parameter Description

contestId

대회 ID

contestMemberId

배정 ID

HTTP Request
PATCH /contests/1/staff/2 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer admin.access.token
Content-Length: 55
Host: localhost:8080

{
  "addTeamIds" : [ 12 ],
  "deleteTeamIds" : [ 10 ]
}
Table 10. Request Fields
Path Type Description

addTeamIds

Array

추가할 팀 ID 목록

deleteTeamIds

Array

삭제할 팀 ID 목록

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

5. DELETE: 배정 삭제

해당 배정을 삭제하여 회원의 모든 담당 팀 배정을 제거한다.

Table 11. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken} (관리자)

Table 12. /contests/{contestId}/staff/{contestMemberId}
Parameter Description

contestId

대회 ID

contestMemberId

배정 ID

HTTP Request
DELETE /contests/1/staff/2 HTTP/1.1
Authorization: Bearer admin.access.token
Host: localhost:8080
HTTP Response
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers