1. API 목록

2. POST: 제출 항목 추가

제출물을 낼 수 있는 설정을 추가하는 API입니다.

Table 1. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken} (관리자)

Table 2. /contests/{contestId}/submission-items
Parameter Description

contestId

대회 ID

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

{
  "name" : "발표자료",
  "contestTrackId" : 1,
  "description" : "PDF 형식의 발표자료를 제출하세요.",
  "allowedFileFormats" : [ "PDF", "ZIP" ],
  "maxFileSizeMb" : 50,
  "maxFileCount" : 3,
  "startAt" : "2026-07-01T00:00:00",
  "endAt" : "2026-07-31T23:59:00",
  "allowLateSubmission" : true,
  "visibility" : "PUBLIC"
}
Table 3. Request Fields
Path Type Description

name

String

제출물 종류 이름

contestTrackId

Number

대상 분과 ID (생략 시 전체 분과)

description

String

설명

allowedFileFormats

Array

허용 파일 형식 목록 (SubmissionFileFormat)

maxFileSizeMb

Number

파일 크기 제한 (MB)

maxFileCount

Number

파일 수 제한

startAt

String

시작일시 (ISO-8601)

endAt

String

마감일시 (ISO-8601)

allowLateSubmission

Boolean

지각 제출 허용 여부

visibility

String

공개 범위 (SubmissionVisibility)

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

2.1. ⚠️ 실패 케이스

❌ Case 1: 시작일시가 마감일시보다 이후
POST /contests/1/submission-items HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer admin.access.token
Content-Length: 344
Host: localhost:8080

{
  "name" : "발표자료",
  "contestTrackId" : null,
  "description" : "PDF 형식의 발표자료를 제출하세요.",
  "allowedFileFormats" : [ "PDF", "ZIP" ],
  "maxFileSizeMb" : 50,
  "maxFileCount" : 3,
  "startAt" : "2026-08-01T00:00:00",
  "endAt" : "2026-07-01T00:00:00",
  "allowLateSubmission" : true,
  "visibility" : "PUBLIC"
}
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
Content-Length: 78

{
  "message" : "마감일시는 시작일시보다 이후여야 합니다."
}
Path Type Description

name

String

제출물 종류 이름

contestTrackId

Number

대상 분과 ID (생략 시 전체 분과)

description

String

설명

allowedFileFormats

Array

허용 파일 형식 목록 (SubmissionFileFormat)

maxFileSizeMb

Number

파일 크기 제한 (MB)

maxFileCount

Number

파일 수 제한

startAt

String

시작일시 (마감일시보다 이후) (ISO-8601)

endAt

String

마감일시 (ISO-8601)

allowLateSubmission

Boolean

지각 제출 허용 여부

visibility

String

공개 범위 (SubmissionVisibility)

3. PATCH: 제출 항목 수정

저장된 제출 항목 설정을 수정하는 API입니다.

Table 4. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken} (관리자)

Table 5. /contests/{contestId}/submission-items/{submissionItemId}
Parameter Description

contestId

대회 ID

submissionItemId

제출 항목 ID

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

{
  "name" : "발표자료",
  "contestTrackId" : 1,
  "description" : "PDF 형식의 발표자료를 제출하세요.",
  "allowedFileFormats" : [ "PDF", "ZIP" ],
  "maxFileSizeMb" : 50,
  "maxFileCount" : 3,
  "startAt" : "2026-07-01T00:00:00",
  "endAt" : "2026-07-31T23:59:00",
  "allowLateSubmission" : true,
  "visibility" : "PUBLIC"
}
Table 6. Request Fields
Path Type Description

name

String

제출물 종류 이름

contestTrackId

Number

대상 분과 ID (생략 시 전체 분과)

description

String

설명

allowedFileFormats

Array

허용 파일 형식 목록 (SubmissionFileFormat)

maxFileSizeMb

Number

파일 크기 제한 (MB)

maxFileCount

Number

파일 수 제한

startAt

String

시작일시 (ISO-8601)

endAt

String

마감일시 (ISO-8601)

allowLateSubmission

Boolean

지각 제출 허용 여부

visibility

String

공개 범위 (SubmissionVisibility)

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

4. DELETE: 제출 항목 삭제

저장된 제출 항목을 삭제하는 API입니다.

Table 7. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken} (관리자)

Table 8. /contests/{contestId}/submission-items/{submissionItemId}
Parameter Description

contestId

대회 ID

submissionItemId

제출 항목 ID

HTTP Request
DELETE /contests/1/submission-items/1 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

5. GET: 제출 항목 목록 조회

제출 항목 목록을 조회하는 API입니다. 제출물이 설정된(수정) 기준 최신 순서대로 정렬합니다.

Table 9. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken} (관리자)

Table 10. /contests/{contestId}/submission-items
Parameter Description

contestId

대회 ID

Table 11. Query Parameters
Parameter Description

status

운영 상태 필터 (SCHEDULED, IN_PROGRESS, CLOSED)

HTTP Request
GET /contests/1/submission-items?status=IN_PROGRESS 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: 514

[ {
  "contestSubmissionItemId" : 1,
  "name" : "발표자료",
  "trackName" : "AI 분과",
  "startAt" : "2026-07-01T00:00:00",
  "endAt" : "2026-07-31T23:59:00",
  "allowLateSubmission" : true,
  "visibility" : "PUBLIC",
  "operationStatus" : "IN_PROGRESS"
}, {
  "contestSubmissionItemId" : 2,
  "name" : "포스터",
  "trackName" : null,
  "startAt" : "2026-08-01T00:00:00",
  "endAt" : "2026-08-31T23:59:00",
  "allowLateSubmission" : false,
  "visibility" : "PRIVATE",
  "operationStatus" : "SCHEDULED"
} ]
Table 12. Response Fields
Path Type Description

[]

Array

제출 항목 목록

[].contestSubmissionItemId

Number

제출물 ID

[].name

String

제출물 종류 이름

[].trackName

String

대상 분과명 (전체 분과면 null)

[].startAt

String

시작일시 (ISO-8601)

[].endAt

String

마감일시 (ISO-8601)

[].allowLateSubmission

Boolean

지각 제출 허용 여부

[].visibility

String

공개 범위 (SubmissionVisibility)

[].operationStatus

String

운영 상태 (SCHEDULED, IN_PROGRESS, CLOSED)

6. GET: 제출 항목 설정값 조회

제출 항목 수정을 위해 저장된 설정값을 조회하는 API입니다.

Table 13. HTTP Request Headers
Name Description

Authorization

Bearer {accessToken} (관리자 또는 해당 대회의 팀장/팀원)

Table 14. /contests/{contestId}/submission-items/{submissionItemId}
Parameter Description

contestId

대회 ID

submissionItemId

제출 항목 ID

HTTP Request
GET /contests/1/submission-items/1 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: 341

{
  "name" : "발표자료",
  "contestTrackId" : 1,
  "description" : "PDF 형식의 발표자료를 제출하세요.",
  "allowedFileFormats" : [ "PDF", "ZIP" ],
  "maxFileSizeMb" : 50,
  "maxFileCount" : 3,
  "startAt" : "2026-07-01T00:00:00",
  "endAt" : "2026-07-31T23:59:00",
  "allowLateSubmission" : true,
  "visibility" : "PUBLIC"
}
Table 15. Response Fields
Path Type Description

name

String

제출물 종류 이름

contestTrackId

Number

대상 분과 ID (전체 분과면 null)

description

String

설명

allowedFileFormats

Array

허용 파일 형식 목록 (SubmissionFileFormat)

maxFileSizeMb

Number

파일 크기 제한 (MB)

maxFileCount

Number

파일 수 제한

startAt

String

시작일시 (ISO-8601)

endAt

String

마감일시 (ISO-8601)

allowLateSubmission

Boolean

지각 제출 허용 여부

visibility

String

공개 범위 (SubmissionVisibility)