SaaS API제출 링크 (매직 링크)
POST /submit-link/{token}/complete/review
1·2차 검수 제출 완료 콜백 (무인증)
1·2차 검수 제출 완료 콜백
GCS 직접 업로드가 끝난 뒤 호출하여 1차·2차 검수 제출을 처리합니다. 내부적으로 기존 일괄 제출 로직을 그대로 호출하므로, 상태변경·피드백 해결·알림이 인앱 제출과 동일하게 발생합니다.
처리 순서
- 토큰 검증 +
reviewId가 토큰의 신청에 속하는지 확인 (다른 신청 제출 방지) - 비디오 항목은 트랜스코딩 트리거 (인앱 업로드와 동일한 호출)
- 기존 일괄 제출(batchSubmit) 호출 → 저장 · 제출 · 피드백 해결 · 알림
- 제출 성공 → 토큰 1회용 소진 (재제출/2차는 새 링크 필요)
HTTP 요청
POST /submit-link/{token}/complete/review
Content-Type: application/jsonPath Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
token | string | 예 | 제출 링크 토큰 |
Request Body
{
"reviewId": 50,
"items": [
{
"itemId": 1,
"itemType": "VIDEO",
"filePath": "https://storage.googleapis.com/glowb-input/campaign/content/link/100/...mp4",
"comment": null
},
{
"itemId": 3,
"itemType": "CAPTION",
"editorState": {"root": {"children": []}}
}
]
}| 필드명 | 타입 | 필수 | 설명 |
|---|---|---|---|
reviewId | long | 예 | 제출할 검수 라운드 ID (컨텍스트에서 조회) |
items | array | 예 | 제출물 목록 (기존 일괄 제출과 동일 구조) |
items[].itemId | long | 조건부 | 제출물 ID (기존 항목 수정 시 필수) |
items[].itemType | string | 조건부 | 제출물 타입 (신규 시 필수) |
items[].filePath | string | 조건부 | GCS URL (publicUrl) — VIDEO/PHOTO 필수 |
items[].editorState | object | 아니오 | 에디터 상태 (SCRIPT/CAPTION/HASHTAG) |
items[].comment | string | 아니오 | 코멘트 |
응답
성공 응답 (200 OK) — 기존 일괄 제출과 동일한 BatchResponse
{
"status": 200,
"code": null,
"message": "일괄 제출 완료",
"data": {
"reviewId": 50,
"items": [ { "id": 1, "itemType": "VIDEO", "isSubmitted": true } ],
"resolvedFeedbackCount": 2
}
}에러 응답
| 상황 | 상태 코드 | 메시지 |
|---|---|---|
| 토큰 만료/사용됨 | 400 | 만료되었거나 사용할 수 없는 링크입니다. |
| 검수 라운드 없음 | 400 | 검수 라운드를 찾을 수 없습니다. |
| 다른 신청의 라운드 | 400 | 이 링크로 제출할 수 없는 검수 라운드입니다. |
| VIDEO/PHOTO 파일 없음 | 400 | 영상/사진 파일을 업로드해주세요. |