Glowb Dev Docs
SaaS API콘텐츠 검수

GET /ai/influence/contents/review/{reviewId}

검수 라운드별 제출물 목록 조회

검수 라운드별 제출물 목록 조회

검수 라운드에서 제출해야 할 모든 타입 목록과 각 타입별 저장된 내용을 조회합니다.

복수 스크립트 지원

스크립트 타입(SCRIPT_VIDEO, SCRIPT_BLOG)은 하나의 검수 라운드에 여러 개를 등록할 수 있습니다.

  • items 필드: 해당 타입의 전체 스크립트 목록 (스크립트 타입은 복수, 비스크립트 타입은 단건 리스트)
  • item 필드: 하위호환용. 스크립트 타입은 첫 번째 스크립트, 비스크립트 타입은 기존과 동일
  • 각 스크립트는 scriptIndex (0, 1, 2...)로 구분됩니다.

HTTP 요청

GET /ai/influence/contents/review/{reviewId}
Authorization: Bearer {access_token}

Path Parameters

파라미터타입필수설명
reviewIdlong검수 라운드 ID

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "조회 성공",
  "data": {
    "reviewId": 88,
    "reviewRound": 1,
    "guidelineVersion": 2,
    "requiredHashtags": "#브랜드명 #협찬",
    "submissionItems": [
      {
        "itemType": "SCRIPT_VIDEO",
        "item": {
          "id": 1,
          "reviewId": 88,
          "itemType": "SCRIPT_VIDEO",
          "scriptIndex": 0,
          "editorState": {"root": {"children": []}},
          "status": "REVIEWING",
          "isSubmitted": true,
          "submittedAt": "2026-03-19T14:00:00",
          "currentVersion": 1,
          "feedbacks": []
        },
        "items": [
          {
            "id": 1,
            "reviewId": 88,
            "itemType": "SCRIPT_VIDEO",
            "scriptIndex": 0,
            "editorState": {"root": {"children": []}},
            "status": "REVIEWING",
            "isSubmitted": true,
            "submittedAt": "2026-03-19T14:00:00",
            "currentVersion": 1,
            "feedbacks": []
          },
          {
            "id": 2,
            "reviewId": 88,
            "itemType": "SCRIPT_VIDEO",
            "scriptIndex": 1,
            "editorState": {"root": {"children": []}},
            "status": "REVIEWING",
            "isSubmitted": true,
            "submittedAt": "2026-03-19T14:05:00",
            "currentVersion": 1,
            "feedbacks": [
              {
                "id": 10,
                "feedback": "나레이션 톤을 좀 더 밝게 수정해주세요.",
                "highlightedText": "나레이션 부분",
                "selection": null,
                "mediaList": [],
                "feedbackAuthor": { "id": "admin001" },
                "isResolved": false,
                "checkedByCreator": false,
                "feedbackType": "FREE",
                "createdAt": "2026-03-19T15:00:00",
                "isDraft": false
              }
            ]
          }
        ]
      },
      {
        "itemType": "HASHTAG",
        "item": null,
        "items": []
      }
    ],
    "unreflectedFeedbackIds": [10],
    "hasAdditionalReviewRequest": true,
    "needsResubmission": false
  }
}

Response Body 스키마

최상위

필드명타입설명
reviewIdlong검수 라운드 ID
reviewRoundint검수 라운드 (1: 1차, 2: 2차)
guidelineVersionint가이드라인 버전 (1: v1, 2: v2)
requiredHashtagsstring캠페인 필수 해시태그
submissionItemsarray제출물 타입별 목록
submissionItems[].itemTypestring제출물 타입
submissionItems[].itemobject | null저장된 제출물 (하위호환: 스크립트 타입은 첫번째 스크립트)
submissionItems[].itemsarray제출물 목록 (스크립트 타입: 복수 스크립트, 비스크립트: 단건 리스트)
unreflectedFeedbackIdsarray<long> | null반영되지 않은 피드백 ID 목록
hasAdditionalReviewRequestboolean추가 검수 요청 여부
needsResubmissionboolean크리에이터가 지금 수정/재제출해야 하는지 여부

제출물 (submissionItems[].item)

필드명타입설명
idlong제출물 ID
reviewIdlong검수 라운드 ID
itemTypestring제출물 타입 (VIDEO, CAPTION, HASHTAG, SCRIPT_VIDEO 등)
scriptIndexint | null스크립트 순서 인덱스 (스크립트 타입: 0, 1, 2..., 비스크립트: null)
filePathstring | null파일 URL (VIDEO, PHOTO)
editorStatestring | null에디터 상태 JSON (SCRIPT, CAPTION, HASHTAG)
commentstring | null코멘트
statusstring상태 (REVIEWING, APPROVED, REJECTED)
isSubmittedboolean제출 완료 여부
submittedAtdatetime | null제출 시간
uploadedAtdatetime | null업로드 시간
createdAtdatetime생성 시간
currentVersionint현재 버전
requiredHashtagsstring | null필수 해시태그 (HASHTAG 타입일 때만)
feedbacksarray피드백 목록 (isDraft=true인 임시저장 피드백은 제외)

피드백 (feedbacks[])

필드명타입설명
idlong피드백 ID
feedbackstring피드백 내용
highlightedTextstring | null하이라이트된 텍스트 (피드백 대상)
selectionstring | nullLexical 텍스트 선택 범위 (JSON)
mediaListarray첨부 미디어 목록
feedbackAuthorobject작성자 정보 ({ "id": "..." })
isResolvedboolean해결 완료 여부
checkedByCreatorboolean크리에이터가 체크한 상태 (임시 저장용)
feedbackTypestring피드백 유형
feedbackCategorystring | null피드백 카테고리 (가이드라인 섹션명)
feedbackItemstring | null피드백 항목 (가이드라인 항목명)
createdAtdatetime작성 시간
resolvedAtdatetime | null해결 시간
isDraftboolean임시저장 여부 (크리에이터 조회 시 항상 false)

피드백 유형 (feedbackType)

설명
FREE자유 피드백
GUIDELINE_UNREFLECTED가이드라인 미반영 (가이드라인에 명시된 내용이 반영되지 않음)
GUIDELINE_EXTRA가이드라인 외 요청 (가이드라인에 없는 추가 요청)

피드백 미디어 (feedbacks[].mediaList[])

필드명타입설명
idlong미디어 ID
mediaTypestring미디어 타입 (IMAGE / VIDEO)
mediaUrlstringS3 URL
startTimedouble | null영상 시작 시간 (초, VIDEO만)
endTimedouble | null영상 끝 시간 (초, VIDEO만)
commentstring | null미디어별 코멘트

임시저장 피드백 필터링

크리에이터 조회 시 isDraft=true인 피드백은 자동으로 제외됩니다. 기업이 아직 임시저장만 한 피드백은 크리에이터에게 노출되지 않으며, 기업이 정식 제출한 피드백만 보입니다.

피드백 유형 (feedbackType)

피드백은 3가지 유형으로 구분됩니다:

  • FREE: 자유 피드백 (기본값)
  • GUIDELINE_UNREFLECTED: 가이드라인에 명시된 내용이 반영되지 않은 경우
  • GUIDELINE_EXTRA: 가이드라인에 없는 추가 요청

GUIDELINE_UNREFLECTEDGUIDELINE_EXTRA 유형인 경우 feedbackCategory(가이드라인 섹션명)와 feedbackItem(가이드라인 항목명) 필드에 값이 포함될 수 있습니다.

unreflectedFeedbackIds 필드

기업이 "피드백 미반영" 검수 추가 요청 시 지정한 피드백 ID 목록입니다.

  • 값이 있으면: 해당 피드백들을 하이라이트 표시하여 크리에이터가 재반영해야 함을 안내
  • 값이 null이면: 일반 피드백 목록으로 표시

hasAdditionalReviewRequest 필드

기업이 추가 검수 요청을 했는지 여부를 나타냅니다.

  • true: 기업이 검수 추가 요청을 한 상태 (maxFeedbackCount > 1)
  • false: 일반 검수 진행 중 (maxFeedbackCount = 1)

이 값이 true이면 크리에이터에게 추가 검수 요청이 있음을 안내할 수 있습니다.

needsResubmission 필드

크리에이터가 현재 제출물을 수정하거나 재제출해야 하는지를 나타냅니다.

  • true: 재제출 필요 (제출물이 REJECTED 상태이거나 미제출)
  • false: 제출 완료, 기업 검수 대기 중 또는 승인 완료 (REVIEWING/APPROVED)

프론트엔드 활성화 조건: needsResubmission === true일 때만 편집/제출 버튼 활성화

API 테스트

On this page