Glowb Dev Docs
Admin APIAdmin Campaign API

POST /ai/admin/campaigns/{campaignNo}/recruitment/close

캠페인 모집 즉시 종료 (관리자 전용)

모집 종료

진행 중인 캠페인의 모집을 즉시 마감합니다. 모집 종료일이 호출 시각으로 당겨지며, 이후 크리에이터의 신규 신청은 거부됩니다.

본 API는 관리자 전용입니다. 모집 이후 단계(선정·계약·제작) 일정과 캠페인 진행 단계(campaignSubStep)는 변경되지 않습니다. 모집을 일찍 닫는 것과 이후 일정을 앞당기는 것은 별개 결정이기 때문입니다.

HTTP 요청

POST /ai/admin/campaigns/{campaignNo}/recruitment/close
Authorization: Bearer {access_token}

요청 본문은 없습니다.

Path Parameters

파라미터타입필수설명
campaignNoInteger예캠페인 번호

처리 흐름

  1. 캠페인 조회 — 없으면 CAMPAIGN_NOT_FOUND
  2. 이미 마감 여부 판정 — recruitmentEndDate <= 현재 시각이면 아무것도 변경하지 않고 alreadyClosed: true로 응답 (멱등)
  3. 캠페인 모집 종료일 갱신 — TB_COLLAB.recruitment_end_date = 현재 시각
  4. 모집 단계 일정 갱신 — TB_CAMPAIGN_SCHEDULE의 phase = RECRUITMENT 행만 end_date = 현재 시각, updated_at 갱신

왜 두 곳을 함께 닫는가

모집 마감일은 두 군데에 나뉘어 저장됩니다.

저장 위치쓰이는 곳
TB_COLLAB.recruitment_end_date크리에이터에게 노출되는 캠페인 목록 필터, 신청 API의 마감 판정
TB_CAMPAIGN_SCHEDULE (phase = RECRUITMENT)의 end_date광고주·관리자 일정 화면의 모집 단계 종료일

한쪽만 닫으면 목록에서는 사라졌는데 일정 화면에는 모집 중으로 남는 식으로 어긋나므로, 두 값을 함께 갱신합니다.

original_end_date(가이드라인 완성 시 1회 세팅 후 불변)는 변경하지 않습니다. 지연 일수 계산이 이 값을 기준으로 하므로, 조기 마감이 "일정을 당긴 것"으로 집계되면 안 되기 때문입니다.

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "모집이 마감되었습니다.",
  "data": {
    "campaignNo": 2485,
    "recruitmentEndDate": "2026-08-18T14:32:10",
    "alreadyClosed": false
  }
}

이미 마감된 캠페인이면 메시지가 "이미 모집이 마감된 캠페인입니다."로 내려가고 alreadyClosed가 true가 됩니다. 이때 recruitmentEndDate는 기존 종료일이며 새로 밀리지 않습니다.

응답 필드

필드타입설명
campaignNoInteger캠페인 번호
recruitmentEndDateLocalDateTime적용된 모집 종료일. 이번 호출로 마감했다면 처리 시각, 이미 마감이었다면 기존 종료일
alreadyClosedBoolean호출 시점에 이미 마감 상태였는지 여부. true면 이번 호출로 바뀐 값은 없음

에러 응답

상태 코드code사례
404CAMPAIGN_NOT_FOUND캠페인 없음
401—인증 실패

마감 후 신청 차단

모집이 마감되면 크리에이터 신청 API가 신청을 거부합니다.

POST /ai/influence/campaign/application
{
  "status": 409,
  "code": "CAMPAIGN_RECRUITMENT_CLOSED",
  "message": "모집이 마감된 캠페인입니다.",
  "data": null
}

이 차단은 본 API로 닫은 캠페인뿐 아니라 모집 기간이 자연 만료된 모든 캠페인에 적용됩니다. 캠페인 목록 API는 원래부터 recruitmentEndDate >= now 조건으로 마감 캠페인을 제외해 왔으나, 신청 API 자체에는 검증이 없어 목록에서 사라진 뒤에도 직접 호출하면 신청이 저장됐습니다.

판정 기준은 Collab.recruitmentEndDate 단일 값입니다.

  • recruitmentEndDate가 null인 레거시 캠페인은 차단되지 않습니다.
  • 관리자가 유저 풀에서 리스트에 담아둔 행(ADMIN_ADDED)을 크리에이터가 이어받아 신청하는 경로도 동일하게 차단됩니다. 관리자가 리스트에 담는 행위 자체는 별도 API라 영향을 받지 않으므로, 마감 후에 담은 크리에이터는 본인 신청을 완료할 수 없습니다.

관련 API

  • 모집 마감 취소 — POST /ai/admin/campaigns/{campaignNo}/recruitment/reopen. 마감을 되돌리고 새 모집 종료일을 지정합니다.
  • 자동 모집 종료 — 선정 인원 전원이 계약 서명을 마치면 어드민이 누르지 않아도 모집이 자동으로 마감됩니다. 판정 기준과 트리거 지점은 마감 취소 문서에 정리돼 있습니다.

API 테스트

On this page