Admin APIAdmin Campaign API
POST /ai/admin/campaigns/final-submission/{applicationId}/submit
관리자 최종 제출물 제출 처리
최종 제출물 제출 처리 (관리자용)
관리자가 최종 제출물(FinalSubmission)을 제출 처리합니다. isSubmitted=true 설정 및 캠페인 상태 변경이 포함됩니다.
내용 수정과 제출을 동시에 수행할 수 있습니다. Request Body를 생략하면 기존 내용 그대로 제출 처리만 수행됩니다.
HTTP 요청
POST /ai/admin/campaigns/final-submission/{applicationId}/submit
Authorization: Bearer {access_token}
Content-Type: application/jsonPath Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
applicationId | long | 예 | 신청(CampaignApplication) ID |
Request Body (선택)
{
"contentLink": "https://www.instagram.com/reel/xxxxx",
"partnershipCode": "ABC123",
"cleanFilePath": "https://s3.../clean-cut.mp4",
"finalFilePath": "https://s3.../final-cut.mp4"
}Request Body는 선택입니다. 제출 처리만 하려면 body 없이 호출하세요. body가 있으면 null이 아닌 필드만 업데이트 후 제출 처리됩니다.
Request Body 필드 설명
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
contentLink | string | 아니오 | 업로드한 콘텐츠 링크 |
partnershipCode | string | 아니오 | 파트너십 코드 |
cleanFilePath | string | 아니오 | 클린본 파일 S3 URL |
finalFilePath | string | 아니오 | 최종본 파일 S3 URL |
제출 처리 시 동작
- 내용 업데이트 (Request Body가 있는 경우)
isSubmitted = true,submittedAt = 현재 시각설정- 해당 캠페인의 첫 제출인 경우 캠페인 상태를
RESULT_SUMMARY로 변경 - 캠페인 SELECTED 전원이 제출 완료한 경우
settlementReady = true마킹
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "최종 제출물이 제출 처리되었습니다.",
"data": {
"id": 1,
"applicationId": 123,
"contentLink": "https://www.instagram.com/reel/xxxxx",
"partnershipCode": "ABC123",
"cleanFilePath": "https://s3.../clean-cut.mp4",
"finalFilePath": "https://s3.../final-cut.mp4",
"isSubmitted": true,
"submittedAt": "2026-04-13T18:00:00",
"hasReRequest": false,
"reRequestTypes": null,
"reRequestedAt": null,
"uploadDateType": "OPTIMAL",
"uploadDate": "2026-04-15T10:00:00",
"candidateDates": null
}
}에러 응답 - 신청 건 없음 (404)
{
"status": 404,
"code": null,
"message": "신청 건을 찾을 수 없습니다. applicationId: 999",
"data": null
}해당 applicationId에 FinalSubmission 레코드가 없으면 자동으로 신규 생성 후 제출 처리됩니다.