SaaS API제출 링크 (매직 링크)
POST /ai/submit-link/{token}/complete/final
최종제출물 완료 콜백 (무인증)
최종제출물 완료 콜백
GCS 직접 업로드가 끝난 뒤 호출하여 최종제출물(클린본/최종본/콘텐츠 링크/파트너십 코드)을 제출합니다. 내부적으로 기존 최종제출 로직을 그대로 호출하므로 상태변경·알림(알리고 등)이 인앱과 동일하게 발생합니다.
처리 순서
- 토큰 검증 → 신청 소유자
memberId해석 (최종제출 소유권 검증에 사용) - 클린본/최종본이 비디오면 트랜스코딩 트리거
isResubmit값에 따라 분기false(기본): 최종 제출true: 재요청 건 재제출 (제출 이력이 있어야 함)
- 제출 성공 → 토큰 1회용 소진
HTTP 요청
POST /ai/submit-link/{token}/complete/final
Content-Type: application/jsonPath Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
token | string | 예 | 제출 링크 토큰 |
Request Body
{
"contentLink": "https://www.instagram.com/p/...",
"partnershipCode": "PARTNER-123",
"cleanFilePath": "https://storage.googleapis.com/glowb-input/.../clean.mp4",
"finalFilePath": "https://storage.googleapis.com/glowb-input/.../final.mp4",
"isResubmit": false
}| 필드명 | 타입 | 필수 | 설명 |
|---|---|---|---|
contentLink | string | 아니오 | 업로드한 콘텐츠 링크 |
partnershipCode | string | 아니오 | 파트너십 코드 |
cleanFilePath | string | 아니오 | 클린본 파일 GCS URL (publicUrl) |
finalFilePath | string | 아니오 | 최종본 파일 GCS URL (publicUrl) |
isResubmit | boolean | 아니오 | 재요청 대기 중(reRequestPending) 재제출이면 true (기본 false) |
재제출해도 재요청 기록은 지워지지 않습니다. isResubmit 값과 무관하게 reRequestTypes·reRequestedAt은 이력으로 남고,
제출 시각이 갱신되어 컨텍스트의 reRequestPending이 false가 됩니다. 정식 크리에이터 앱 재제출과 같은 결과이며
어드민 진행 상태는 「수정완료」로 표시됩니다.
재요청받은 칸만 보내면 됩니다 — 보내지 않은(null) 필드는 기존 제출값이 유지됩니다.
어떤 칸을 열지는 링크 컨텍스트 조회의 재요청 사유 → 입력 칸 변환표를 따르세요.
응답
성공 응답 (200 OK) — 기존 최종제출과 동일한 FinalSubmission 응답
{
"status": 200,
"code": null,
"message": "최종 제작물 제출 완료",
"data": {
"id": 10,
"applicationId": 100,
"contentLink": "https://www.instagram.com/p/...",
"partnershipCode": "PARTNER-123"
}
}에러 응답
| 상황 | 상태 코드 | 메시지 |
|---|---|---|
| 토큰 만료/사용됨 | 400 | 만료되었거나 사용할 수 없는 링크입니다. |
| 신청 없음 | 400 | 캠페인 신청을 찾을 수 없습니다. |
| 소유자 확인 불가 | 400 | 신청 소유자를 확인할 수 없습니다. |