Glowb Dev Docs
SaaS API콘텐츠 검수

POST /ai/influence/contents/feedbacks

관리자 피드백 추가

관리자 피드백 추가

관리자 권한으로 제출물에 피드백 1건을 즉시 추가합니다. 관리자 피드백 내용 수정·관리자 피드백 삭제와 짝을 이루는 API입니다.

검수의 검수(관리자 승인 대기) 화면에서 관리자가 새 피드백을 쓸 때 사용합니다. 임시저장(POST /ai/v4/feedback/review/:reviewId/submit, isDraft=true)으로 저장한 피드백은 draft로 남아 승인해도 크리에이터에게 전달되지 않으므로, 관리자가 쓴 피드백은 이 API로 한 건씩 바로 저장해야 합니다.

관리자 전용 API입니다. ROLE_ADMIN 권한이 없으면 FEEDBACK_CREATE_FORBIDDEN(403, 관리자만 피드백을 추가할 수 있습니다.)이 발생합니다. 관리자 수정·삭제 API의 FEEDBACK_EDIT_FORBIDDEN 과 짝입니다. 권한 확인을 통과한 뒤의 입력 오류는 여전히 INVALID_DATA(404)입니다.

동작

  • 정식 피드백으로 저장됩니다 — isDraft=false, businessResponse=NONE.
  • 승인 상태(adminDecision)는 라운드가 이미 크리에이터에게 나갔는지로 갈립니다.
시점라운드 상태adminDecision
검수의 검수 (승인 대기·반려)게이트 PENDING / CHANGES_REQUESTEDPENDING
기업 검수 중 (아직 크리에이터에게 안 나감)게이트 NONE·APPROVED + 라운드 PENDING/REVIEWINGPENDING
크리에이터 수정 중·라운드 승인 후awaitingRevision=true 또는 라운드 REJECTED/APPROVEDAPPROVED
  • PENDING으로 저장된 피드백은 기업 피드백과 같이 관리자 승인(decide)을 거쳐 함께 전달됩니다.
  • 이미 크리에이터에게 나간 라운드는 더 거칠 승인 단계가 없어 APPROVED로 저장합니다. PENDING으로 두면 그 피드백은 전달될 기회가 없습니다.
  • 수정 차수(revisionNo)는 라운드의 현재 차수로 기록됩니다.
  • 광고주가 피드백 포함 승인으로 올린 라운드면 추가된 피드백도 즉시 해결(isResolved=true) 처리됩니다.
  • 라운드 상태·검수의 검수 게이트·알림은 바꾸지 않습니다. 이미 크리에이터에게 전달된 라운드에 추가하면 크리에이터 화면에 곧바로 보이며, 알림은 발송되지 않습니다.

추가 이력 추적

서버 로그에 [ADMIN_FEEDBACK_CREATE] 태그로 피드백 ID·관리자 ID·라운드 ID·라운드 상태·저장된 adminDecision·내용이 기록됩니다.

HTTP 요청

POST /ai/influence/contents/feedbacks
Authorization: Bearer {access_token}
Content-Type: application/json

Request Body

v4 제출(submit) 요청의 items[] 한 건과 같은 형식입니다. id는 무시되며 항상 새 피드백이 생성됩니다.

{
  "itemId": 4237,
  "feedback": "자막의 과장 표현을 수정해 주세요.",
  "highlightedText": null,
  "selection": null,
  "feedbackType": "FREE",
  "feedbackCategory": null,
  "feedbackItem": "자막",
  "billingType": "FREE",
  "paidScope": null,
  "mediaList": [
    {
      "mediaType": "IMAGE",
      "startTime": 3.5,
      "endTime": null,
      "comment": null,
      "mediaUrl": "https://storage.googleapis.com/glowb-input/feedback/4237/example.png"
    }
  ]
}

Request Body 스키마

필드명타입필수설명
itemIdlong예피드백을 달 제출물 ID
feedbackstring조건부피드백 내용. feedback과 mediaList 중 하나는 있어야 함
highlightedTextstring아니오캡션·해시태그 드래그 피드백의 대상 텍스트
selectionstring아니오선택 위치 JSON 문자열(AI 항목 피드백은 aiItemKey)
feedbackTypestring아니오FREE(기본) / GUIDELINE_UNREFLECTED / GUIDELINE_EXTRA
feedbackCategorystring아니오피드백 카테고리
feedbackItemstring아니오하위 카테고리(예: 자막, 편집효과, 재녹음)
translatedFeedbackstring아니오크리에이터 언어 번역문(선택). 해외 캠페인에서만 저장되고 한국 캠페인에서는 무시됩니다. 언어 코드는 서버가 캠페인으로 정합니다. 번역문은 피드백 번역 API로 만들 수 있습니다.
billingTypestring아니오FREE(기본) / PAID
paidScopestring아니오유료 검수 범위 PARTIAL / FULL. billingType=PAID일 때만 저장
mediaListarray조건부첨부 미디어. 파일은 먼저 POST /ai/v4/feedback/media로 업로드한 뒤 받은 mediaUrl을 넣음
idlong아니오무시됨

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "피드백이 추가되었습니다.",
  "data": {
    "id": 7190,
    "feedback": "자막의 과장 표현을 수정해 주세요.",
    "highlightedText": null,
    "selection": null,
    "mediaList": [],
    "feedbackAuthor": {
      "id": "byaht"
    },
    "isResolved": false,
    "checkedByCreator": false,
    "feedbackType": "FREE",
    "billingType": "FREE",
    "paidScope": null,
    "revisionNo": 1,
    "feedbackCategory": null,
    "feedbackItem": "자막",
    "createdAt": "2026-09-22T20:45:00",
    "resolvedAt": null,
    "isDraft": false,
    "releasedToCreator": false,
    "translatedFeedback": "字幕の誇張表現を修正してください。",
    "translatedLanguage": "jp"
  }
}

응답 필드 (번역 관련)

필드타입설명
translatedFeedbackstring | null저장된 번역문. 요청에 없었거나 한국 캠페인이면 null
translatedLanguagestring | null번역문 언어 코드(jp / en). 번역문이 없으면 null

에러 응답

상태 코드설명
403관리자 권한 없음 (FEEDBACK_CREATE_FORBIDDEN)
404itemId 누락
404feedback과 mediaList가 모두 비어있음
404제출물을 찾을 수 없음 / 제출물에 검수 라운드가 없음

API 테스트

On this page