Glowb Dev Docs
Admin APIAdmin Campaign API

PATCH /ai/admin/campaigns/{campaignNo}

캠페인 생성

캠페인 생성

관리자가 새 캠페인을 생성합니다. 피그마 디자인 5단계 폼 전체를 담는 API입니다.

HTTP 요청

PATCH /ai/admin/campaigns/{campaignNo}
Authorization: Bearer {access_token}
Content-Type: application/json

Path Parameters

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

Request Body

{
  "guidelineVersion": 1,

  // === Step 1: 게시물 생성 (기본 정보) ===
  "businessId": "business123",
  "campaignType": "PRODUCT_SPONSORSHIP",
  "productName": "여름 뷰티 제품",
  "productUrl": "https://example.com/product",
  "etcNotes": "기타 메모 내용",
  "currency": "KRW",
  "differential": false,

  // === 수수료 정책 ===
  "feePolicyType": "COST_PLUS_FEE",
  "feeType": "PERCENT",
  "feeValue": 10,

  "averageUnitPrice": "100000",
  "person": "10",
  "imagePath": "https://s3.../thumbnail.jpg",
  "productImagePath": "https://s3.../image1.jpg,https://s3.../image2.jpg",
  "campaignContractType": "STANDARD",
  "campaignContractDescription": "계약 내용 설명",

  // === Step 2: 제출물 설정 ===
  "deliveryType": "DOMESTIC",
  "firstReviewTypes": ["SCRIPT", "HASHTAG"],
  "secondReviewTypes": ["VIDEO"],
  "finalSubmissionTypes": ["INSTAGRAM_REEL", "INSTAGRAM_POST"],

  // === Step 3: 대시보드 생성 ===
  "secondaryUsageMonths": 6,
  "secondaryUsageOption": "SNS_AD",

  // === Step 4: 일정 설정 ===
  "isAutoSchedule": false,
  "guidelineCompletedAt": "2024-01-15T11:50:41",
  "recruitmentStartDate": "2024-01-15T00:00:00",
  "recruitmentEndDate": "2024-01-31T23:59:59",
  "recruitmentDays": 4,
  "contentStartDate": "2024-02-01T00:00:00",
  "contentEndDate": "2024-02-28T23:59:59",
  "exclusionSelectionStartDate": "2024-02-01T00:00:00",
  "exclusionSelectionEndDate": "2024-02-05T23:59:59",
  "contractCreationStartDate": "2024-02-06T00:00:00",
  "contractCreationEndDate": "2024-02-10T23:59:59",
  "draftSubmissionStartDate": "2024-02-11T00:00:00",
  "draftSubmissionEndDate": "2024-02-15T23:59:59",
  "draftReviewStartDate": "2024-02-16T00:00:00",
  "draftReviewEndDate": "2024-02-18T23:59:59",
  "videoProductionStartDate": "2024-02-19T00:00:00",
  "videoProductionEndDate": "2024-02-25T23:59:59",
  "videoReviewStartDate": "2024-02-26T00:00:00",
  "videoReviewEndDate": "2024-02-28T23:59:59",
  "uploadStartDate": "2024-03-01T00:00:00",
  "uploadEndDate": "2024-03-05T23:59:59",
  "uploadApprovalStartDate": "2024-03-06T00:00:00",
  "uploadApprovalEndDate": "2024-03-10T23:59:59",
  "settlementStartDate": "2024-03-11T00:00:00",
  "settlementEndDate": "2024-03-15T23:59:59",

  // === Step 5: 주의사항 ===
  "caution": "제품 촬영 시 주의사항...",

  // === Step 6: 담당자 설정 (N:M, 동등) ===
  "managers": [
    { "managerNo": 30 },
    { "name": "홍길동", "phone": "010-1234-5678", "email": "manager@example.com" }
  ]
}

Request Body 필드 설명

가이드라인 버전

필드타입기본값설명
guidelineVersioninteger1가이드라인 버전. 1: v1 AI 가이드라인 생성, 2: v2 AI 가이드라인 생성 (appeal-points, concept, hooks)

Step 1: 게시물 생성 (기본 정보)

필드타입설명
businessIdstring기업 회원 ID
campaignTypeCampaignType캠페인 제공종류 (제품협찬, 유료광고 등)
productNamestring상품명
productUrlstring상품 URL
etcNotesstring기타 메모
currencystring화폐단위
differentialboolean차등지급 여부 (개별가/단일가)
feePolicyTypeFeePolicyType수수료 정책 타입 (ACTUAL_COST: 실비, COST_PLUS_FEE: 실비+수수료, TOTAL_AMOUNT: 총액)
feeTypeFeeType수수료 유형 (PERCENT: %, FIXED: 원)
feeValueinteger수수료 값
averageUnitPricestring개별 단가
personstring모집인원
imagePathstring썸네일 이미지 경로
productImagePathstring제품 이미지 경로 (콤마 구분)
campaignContractTypestring계약 형식
campaignContractDescriptionstring계약 내용

Step 2: 제출물 설정

필드타입설명
deliveryTypeDeliveryType배송 여부
firstReviewTypesSet<SubmissionItemType>1차 검수 필수 제출물 타입
secondReviewTypesSet<SubmissionItemType>2차 검수 필수 제출물 타입
finalSubmissionTypesSet<FinalSubmissionType>최종 제출물 타입

Step 3: 대시보드 생성

필드타입설명
secondaryUsageMonthsinteger2차 활용 기간 (개월). -1 = 영구활용
secondaryUsageOptionstring2차 활용 옵션

Step 4: 일정 설정

필드타입설명
isAutoScheduleboolean자동 날짜 설정 유무
guidelineCompletedAtdatetime[TASK-071] 가이드라인 완성일 (MongoDB GuidelineDocument.completedAt 에 저장). 미전송 시 가이드 publish 시점 자동 set. 가이드 완성/미완성 상관 없이 값 변경됨 (Sam 2026-05-26). mongo doc 자체가 없으면(가이드 시작 전) skip.
recruitmentStartDatedatetime모집 시작일
recruitmentEndDatedatetime모집 종료일
recruitmentDaysinteger[TASK-071 Phase 3] 모집 영업일 (1-10, 기본 4). T0 트리거가 가이드 완성 + N영업일로 모집 종료일 산정. 미전송 시 기본 4
contentStartDatedatetime콘텐츠 등록 시작일
contentEndDatedatetime콘텐츠 등록 종료일
exclusionSelectionStartDatedatetime제외인원 선택 시작일
exclusionSelectionEndDatedatetime제외인원 선택 종료일
contractCreationStartDatedatetime계약서 작성 시작일
contractCreationEndDatedatetime계약서 작성 종료일
draftSubmissionStartDatedatetime제품 배송 시작일
draftSubmissionEndDatedatetime제품 배송 종료일
scriptSubmissionStartDatedatetime스크립트 제출 시작일 (2회 검수 전용)
scriptSubmissionEndDatedatetime스크립트 제출 종료일 (2회 검수 전용)
scriptReviewStartDatedatetime스크립트 검수 및 제작 허용 시작일 (2회 검수 전용)
scriptReviewEndDatedatetime스크립트 검수 및 제작 허용 종료일 (2회 검수 전용)
draftReviewStartDatedatetime제작물 제출 시작일
draftReviewEndDatedatetime제작물 제출 종료일
videoProductionStartDatedatetime제작물 검수 및 업로드 허용 시작일
videoProductionEndDatedatetime제작물 검수 및 업로드 허용 종료일
videoReviewStartDatedatetime재제출 or 업로드 시작일
videoReviewEndDatedatetime재제출 or 업로드 종료일
uploadStartDatedatetime최종 업로드 허용 시작일
uploadEndDatedatetime최종 업로드 허용 종료일
uploadApprovalStartDatedatetime최종업로드 시작일
uploadApprovalEndDatedatetime최종업로드 종료일
settlementStartDatedatetime정산 시작일
settlementEndDatedatetime정산 종료일

Step 5: 주의사항

필드타입설명
cautionstring주의사항

Step 6: 담당자 설정 (N:M, 동등)

필드타입설명
managersarray담당자 목록. 각 항목 { managerNo?, name, phone, email }. managerNo 제공 시 기존 담당자 정보 갱신, 없으면 신규 생성

담당자는 한 캠페인에 여러 명 연결할 수 있다(N:M, 모두 동등 — 대표 개념 없음). managers[] 로 캠페인 담당자를 전체 교체한다. Slack 알림·영업팀 메일은 담당자 전원을 나열한다. (기업 단위 기본 담당자 isDefault 는 별개 개념으로 유지된다.)

응답

성공 응답 (201 Created)

{
  "status": 201,
  "code": null,
  "message": "캠페인이 생성되었습니다.",
  "data": null
}

API 테스트

On this page