Glowb Dev Docs
Admin APIAdmin Business Pending Campaigns API

GET /review-campaigns — 검수 미진행 캠페인

크리에이터는 제출했는데 기업이 검수를 안 한 1·2차 검수 대기 캠페인을 마감 임박순으로 조회합니다.

검수 미진행 캠페인 목록

크리에이터가 제작물 제출을 완료(submissionItems 전부 isSubmitted=true)했는데 기업이 검수 처리를 안 한 상태의 캠페인을 조회합니다.

  • 1차 검수 미진행: round 1 (또는 1회검수의 경우 round 2) 의 ContentReview.status == PENDING
  • 2차 검수 미진행: 2회검수 캠페인 한정. round 1 이 APPROVED 이고 round 2 가 PENDING

1회검수 컨벤션: 1회검수 캠페인은 ContentReviewreviewRound=2 단일 행으로 저장됩니다. 응답의 round 필드는 1차 검수 미진행이면 1, 2차 검수 미진행이면 2 로 직접 표기되므로 호출자는 이 차이를 신경 쓸 필요가 없습니다.

정렬: 신청자별 가장 이른 검수 마감일(oldestDeadline) ASC. 마감이 임박한 캠페인이 위로 올라옵니다.

HTTP 요청

GET /ai/admin/pending/review-campaigns
Authorization: Bearer {access_token}

Query Parameters

파라미터타입필수기본값설명
campaignNosint[]아니오활성 캠페인 전체multi 지원 (?campaignNos=1&campaignNos=2). CAMPAIGN_COMPLETED 단계는 자동 제외.
businessIdstring아니오특정 기업(Member.id) 캠페인만 조회
pageint아니오0Spring Pageable
sizeint아니오20

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "검수 미진행 캠페인 조회 성공",
  "data": {
    "summary": {
      "totalCampaigns": 12,
      "totalApplicants": 47
    },
    "page": {
      "number": 0,
      "size": 20,
      "totalElements": 12,
      "totalPages": 1
    },
    "content": [
      {
        "campaignNo": 2350,
        "campaignTitle": "솔루션랩 2회 배송 캠페인",
        "businessId": "biz-member-id",
        "businessName": "솔루션랩",
        "managers": [
          { "managerNo": 1, "name": "홍길동", "email": "hong@example.com", "phone": "010-1234-5678", "isDefault": true }
        ],
        "registeredAt": "2026-04-10T10:00:00",
        "oldestDeadline": "2026-04-30T18:00:00",
        "pendingCount": 2,
        "pendingApplicants": [
          {
            "applicationId": 9001,
            "influenceId": 555,
            "nickname": "creator-a",
            "round": 1,
            "deadline": "2026-04-30T18:00:00"
          },
          {
            "applicationId": 9002,
            "influenceId": 556,
            "nickname": "creator-b",
            "round": 2,
            "deadline": "2026-05-02T18:00:00"
          }
        ]
      }
    ]
  }
}

응답 필드

캠페인 row

필드타입설명
campaignNo / campaignTitleInteger / string캠페인 식별자
businessId / businessNamestring / string?기업
managersarray캠페인 담당자 목록(N:M, 동등). 각 항목 { managerNo, name, email, phone, isDefault }. 미지정 시 빈 배열
registeredAtLocalDateTime?캠페인 등록일
oldestDeadlineLocalDateTime?pendingApplicants 중 가장 이른 deadline. 캠페인 정렬 기준.
pendingCountint검수 미진행 신청자 수
pendingApplicantsarray신청자 drill-down

pendingApplicants[]

필드타입설명
applicationIdLong신청 ID
influenceIdInteger인플루언서 ID (Influence.no)
nicknamestring닉네임
roundInteger1 = 1차 검수 미진행, 2 = 2차 검수 미진행
deadlineLocalDateTime?검수 마감일. 1차 hit 의 deadline 은 2회검수면 SCRIPT_REVIEW_DEADLINE, 1회검수면 CONTENT_REVIEW_DEADLINE. 2차 hit 은 항상 CONTENT_REVIEW_DEADLINE.

summary

필드설명
totalCampaigns검수 미진행이 있는 캠페인 총 개수 (필터 적용 후)
totalApplicants모든 캠페인의 pendingCount

예시

활성 캠페인 전체에서 검수 미진행 조회

GET /ai/admin/pending/review-campaigns

특정 기업 캠페인만

GET /ai/admin/pending/review-campaigns?businessId=biz-member-id

특정 캠페인 2개로 한정

GET /ai/admin/pending/review-campaigns?campaignNos=2350&campaignNos=2401

API 테스트

On this page