Glowb Dev Docs
SaaS APIProgress Table

PUT /ai/progress-table/items/bulk/user/matching-status

사용자 대량 매칭 상태 업데이트

대량 매칭 상태 업데이트 (사용자)

여러 항목의 매칭 상태를 한번에 업데이트합니다.

CREATOR_MATCHING 단계 전환 조건

  • 비즈니스/관리자 모두 초기 결제금액의 80% 이상 예산이 사용된 경우에만 CREATOR_MATCHING(협업 상세 협의)으로 전환
  • 80% 미달 시 매칭 상태 변경 자체는 정상 처리되나 단계 전환은 보류
  • 응답의 budgetWarning: true이면 80% 미달 상태
  • 관리자가 단계를 강제 전환하려면 PATCH /ai/admin/dashboard/{campaignNo}/substep 사용

데모(목업) 후보도 이 API 로 예비·제외·대기를 설정합니다. itemIdsdummyItems[].id(1억 오프셋)를 실제 신청 ID 와 섞어 보내도 됩니다 — 서버가 갈라냅니다.

데모는 상태를 표시용으로만 기록합니다 — 매칭·배송 테이블 생성이나 예산 UNLOCK 같은 부수효과가 없습니다. 참고로 선정(matched)은 이 API 가 아니라 proposal-with-charge 담당입니다. 자세한 내용은 데모(목업) 후보 연동 가이드를 참고하세요.

제외(eliminated) 시 예비(reserved) 자동 승계

선정 인원의 계약이 불발되어 eliminated(제외)로 처리하면, 모집인원(Collab.person) 대비 빈자리만큼 예비(reserved)를 금액 높은순으로 자동 승계합니다 — 예비를 제안(proposal)으로 전환하고 계약서를 발송합니다.

  • 캠페인 예산이 부족한 예비는 건너뛰고 다음 금액순 예비로 넘어갑니다(기업 글로벌 크레딧은 사용하지 않음).
  • 캠페인 결과 취합(RESULT_SUMMARY) 단계부터는 승계하지 않으며, 이 단계 진입 시 남은 예비는 미선정(rejected)으로 정리됩니다.
  • 전원 서명이 완료되기 전까지 예비는 미선정 처리되지 않고 유지됩니다.

노출 후보(exposureCandidate) — 관리자 전용 상태

관리자가 기업에 노출하기 전에 후보를 찍어두는 상태입니다. 그동안 이 용도로 예비(reserved)를 쓰면서 기업쪽 예비와 혼동되던 것을 갈라내려고 만든 값입니다.

  • 관리자만 설정할 수 있습니다. 기업이 보내면 거부됩니다.
  • 레거시 캠페인은 지원하지 않습니다.
  • 이미 노출된 신청은 건너뜁니다. 노출 후보는 노출 전에만 쓰는 표시라 노출된 시점에 역할이 끝나기 때문입니다. 해당 건은 기존 상태를 그대로 유지하고 응답 updatedItemIds 에서 빠지며, skippedItemIds 에 담기고 message 에도 사유가 표시됩니다 (배치 전체가 실패하지는 않습니다).
  • 기업·크리에이터 응답에는 대기(waiting)로 마스킹되어 나갑니다.
  • 실제로 노출되면 대기로 자동 전환됩니다 — 리스트 관리 벌크 업데이트 참고.

노출 변경과 같이 저장해도 됩니다 — 단, 리스트 관리 API 를 먼저 호출해야 합니다.

어드민 저장은 리스트 관리 API(노출)가 먼저, 이 API(매칭 상태)가 나중에 나갑니다. 이 순서에서는 노출 후보 지정을 노출 변경과 한 번에 보내도 결과가 의도대로 나옵니다.

  • 후보 지정 + 노출 켜기: 노출이 켜진 뒤 후보 지정은 건너뛰어 노출됨 + 대기가 됩니다. 후보 지정을 먼저 했더라도 노출 시 대기로 자동 전환되므로 결과는 같습니다. (애초에 "노출된 노출 후보"는 성립하지 않습니다.)
  • 후보 지정 + 노출 끄기: 노출이 먼저 꺼지므로 후보 지정이 정상 반영되어 미노출 + 노출 후보가 됩니다.

두 API 의 호출 순서를 뒤집으면 후자가 깨집니다(노출을 끄기 전에 후보 지정이 들어와 건너뛰어짐). 리스트 관리 API 를 먼저 호출하는 현재 순서를 유지하세요.

HTTP 요청

PUT /ai/progress-table/items/bulk/user/matching-status
Authorization: Bearer {access_token}
Content-Type: application/json

Request Body

{
  "collabId": 123,
  "itemIds": [1, 2, 3, 4, 5],
  "matchingStatus": "proposal"
}

matchingStatus 허용값

의미권한
waiting대기기업·관리자
matched선정기업·관리자
proposal제안기업·관리자
reserved예비기업·관리자
eliminated제외기업·관리자
exposureCandidate노출 후보관리자만 (비레거시 캠페인 한정)

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "대량 매칭 상태 업데이트가 완료되었습니다.",
  "data": {
    "success": true,
    "updatedItemIds": [1, 2, 3, 4, 5],
    "budgetWarning": false,
    "budgetUsagePercentage": 85.0
  }
}

Response Body 스키마

필드명타입설명
successboolean처리 성공 여부
updatedItemIdsarray<long>업데이트된 항목 ID 목록
skippedItemIdsarray<long>조건이 맞지 않아 건너뛴 항목 ID 목록. 현재는 "이미 노출되어 노출 후보로 지정할 수 없는 신청"이 담긴다. 비어있지 않으면 화면에 사유를 알려야 한다successtrue 이므로 그냥 두면 아무것도 안 바뀐 요청이 성공으로만 보인다
budgetWarningboolean예산 80% 미달 경고 (true면 CREATOR_MATCHING 전환 보류)
budgetUsagePercentagedouble현재 예산 사용률 (%)

API 테스트

On this page