1. API 목록
2. POST: 제출 항목 추가
제출물을 낼 수 있는 설정을 추가하는 API입니다.
| Name | Description |
|---|---|
|
Bearer {accessToken} (관리자) |
| Parameter | Description |
|---|---|
|
대회 ID |
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"
}
| Path | Type | Description |
|---|---|---|
|
|
제출물 종류 이름 |
|
|
대상 분과 ID (생략 시 전체 분과) |
|
|
설명 |
|
|
허용 파일 형식 목록 (SubmissionFileFormat) |
|
|
파일 크기 제한 (MB) |
|
|
파일 수 제한 |
|
|
시작일시 (ISO-8601) |
|
|
마감일시 (ISO-8601) |
|
|
지각 제출 허용 여부 |
|
|
공개 범위 (SubmissionVisibility) |
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 |
|---|---|---|
|
|
제출물 종류 이름 |
|
|
대상 분과 ID (생략 시 전체 분과) |
|
|
설명 |
|
|
허용 파일 형식 목록 (SubmissionFileFormat) |
|
|
파일 크기 제한 (MB) |
|
|
파일 수 제한 |
|
|
시작일시 (마감일시보다 이후) (ISO-8601) |
|
|
마감일시 (ISO-8601) |
|
|
지각 제출 허용 여부 |
|
|
공개 범위 (SubmissionVisibility) |
3. PATCH: 제출 항목 수정
저장된 제출 항목 설정을 수정하는 API입니다.
| Name | Description |
|---|---|
|
Bearer {accessToken} (관리자) |
| Parameter | Description |
|---|---|
|
대회 ID |
|
제출 항목 ID |
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"
}
| Path | Type | Description |
|---|---|---|
|
|
제출물 종류 이름 |
|
|
대상 분과 ID (생략 시 전체 분과) |
|
|
설명 |
|
|
허용 파일 형식 목록 (SubmissionFileFormat) |
|
|
파일 크기 제한 (MB) |
|
|
파일 수 제한 |
|
|
시작일시 (ISO-8601) |
|
|
마감일시 (ISO-8601) |
|
|
지각 제출 허용 여부 |
|
|
공개 범위 (SubmissionVisibility) |
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
4. DELETE: 제출 항목 삭제
저장된 제출 항목을 삭제하는 API입니다.
| Name | Description |
|---|---|
|
Bearer {accessToken} (관리자) |
| Parameter | Description |
|---|---|
|
대회 ID |
|
제출 항목 ID |
DELETE /contests/1/submission-items/1 HTTP/1.1
Authorization: Bearer admin.access.token
Host: localhost:8080
HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
5. GET: 제출 항목 목록 조회
제출 항목 목록을 조회하는 API입니다. 제출물이 설정된(수정) 기준 최신 순서대로 정렬합니다.
| Name | Description |
|---|---|
|
Bearer {accessToken} (관리자) |
| Parameter | Description |
|---|---|
|
대회 ID |
| Parameter | Description |
|---|---|
|
운영 상태 필터 (SCHEDULED, IN_PROGRESS, CLOSED) |
GET /contests/1/submission-items?status=IN_PROGRESS HTTP/1.1
Authorization: Bearer admin.access.token
Host: localhost:8080
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"
} ]
| Path | Type | Description |
|---|---|---|
|
|
제출 항목 목록 |
|
|
제출물 ID |
|
|
제출물 종류 이름 |
|
|
대상 분과명 (전체 분과면 null) |
|
|
시작일시 (ISO-8601) |
|
|
마감일시 (ISO-8601) |
|
|
지각 제출 허용 여부 |
|
|
공개 범위 (SubmissionVisibility) |
|
|
운영 상태 (SCHEDULED, IN_PROGRESS, CLOSED) |
6. GET: 제출 항목 설정값 조회
제출 항목 수정을 위해 저장된 설정값을 조회하는 API입니다.
| Name | Description |
|---|---|
|
Bearer {accessToken} (관리자 또는 해당 대회의 팀장/팀원) |
| Parameter | Description |
|---|---|
|
대회 ID |
|
제출 항목 ID |
GET /contests/1/submission-items/1 HTTP/1.1
Authorization: Bearer admin.access.token
Host: localhost:8080
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"
}
| Path | Type | Description |
|---|---|---|
|
|
제출물 종류 이름 |
|
|
대상 분과 ID (전체 분과면 null) |
|
|
설명 |
|
|
허용 파일 형식 목록 (SubmissionFileFormat) |
|
|
파일 크기 제한 (MB) |
|
|
파일 수 제한 |
|
|
시작일시 (ISO-8601) |
|
|
마감일시 (ISO-8601) |
|
|
지각 제출 허용 여부 |
|
|
공개 범위 (SubmissionVisibility) |