Glowb Dev Docs
Admin API대리제출

POST /ai/admin/proxy-submission/applications/{applicationId}/signed-url

대리제출용 GCS 업로드 URL 발급

대리제출 업로드 URL 발급 (관리자용)

검수 대리제출에 첨부할 영상·이미지를 GCS에 직접 올리기 위한 Resumable 업로드 Signed URL을 발급합니다. 파일은 서버를 거치지 않고 브라우저에서 GCS로 바로 올라갑니다.

제출물이 CAPTION/HASHTAG/스크립트뿐이라면 이 API는 필요 없습니다. 업로드가 필요한 VIDEO/PHOTO 항목이 있을 때만 호출합니다.

HTTP 요청

POST /ai/admin/proxy-submission/applications/{applicationId}/signed-url
Authorization: Bearer {access_token}
Content-Type: application/json

Path Parameters

파라미터타입필수설명
applicationIdlong예대상 신청(CampaignApplication) ID

Request Body

{
  "filename": "nanako_final.mp4",
  "contentType": "video/mp4"
}
필드명타입필수설명
filenamestring예원본 파일명. 비어 있으면 upload 로 대체됩니다
contentTypestring예브라우저 file.type. 허용 형식만 통과합니다

허용 Content-Type

image/*, video/*, application/zip, application/x-tar, application/gzip, application/vnd.rar, application/x-7z-compressed

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "발급 완료",
  "data": {
    "uploadUrl": "https://storage.googleapis.com/glowb-input/campaign/content/admin/20652/1756...mp4?X-Goog-Algorithm=...",
    "publicUrl": "https://storage.googleapis.com/glowb-input/campaign/content/admin/20652/1756..._nanako_final.mp4"
  }
}
필드명타입설명
uploadUrlstringResumable 세션을 시작할 서명 URL
publicUrlstring업로드 완료 후 제출 요청의 filePath 에 넣을 GCS URL

업로드 절차

  1. uploadUrl 로 POST 합니다. 헤더는 x-goog-resumable: start 와 발급 때 사용한 Content-Type 을 그대로 보냅니다.
  2. 응답 Location 헤더가 세션 URI입니다. 이 URI로 파일 바이트를 PUT 합니다. 중간에 끊기면 Range 헤더로 재개할 수 있습니다.
  3. 업로드가 끝나면 publicUrl 을 검수 대리제출 요청의 items[].filePath 로 넘깁니다.

Resumable 방식은 서명이 Content-Type을 구속하지 않습니다. 발급 때 통과한 형식과 다른 형식으로 업로드해도 서버가 막지 못합니다(2026-08-19 test 실측). 프런트에서 올바른 Content-Type 을 보내야 합니다.

오브젝트 경로에 업로드 주체가 들어갑니다. 매직링크는 campaign/content/link/..., 대리제출은 campaign/content/admin/... 이라 경로만으로 구분됩니다.

에러 응답

에러도 HTTP 200으로 내려가고 실제 상태는 본문 status/code 에 담깁니다. 인증·인가 실패만 실제 401/403입니다.

상황본문 statuscode메시지
신청 없음404INVALID_DATA신청을 찾을 수 없습니다.
Content-Type 누락404INVALID_DATAContent-Type이 필요합니다.
지원하지 않는 형식400UNSUPPORTED_FILE_FORMAT지원하지 않는 파일 형식입니다: (전달한 값)
인증 실패HTTP 401—토큰이 만료되었습니다.
ADMIN 권한 아님HTTP 403—권한이 없는 요청 입니다.

API 테스트

On this page