Glowb Dev Docs
SaaS API기업용 콘텐츠 검수

PUT /ai/business/contents/guideline/{collabNo}

가이드라인 저장/생성 (Upsert)

가이드라인 저장/생성 (Upsert)

가이드라인 데이터를 저장합니다. 없으면 생성, 있으면 병합합니다.

수정 제한 조건

  • 가이드라인이 이미 존재하는 경우, 모집 시작 전에만 수정 가능합니다.
  • 모집이 시작된 이후(CREATOR_RECRUIT 단계 이후)에는 수정이 불가능합니다.
  • 수정 가능 단계: CAMPAIGN_REVIEW, CAMPAIGN_PAYMENT, CAMPAIGN_GUIDELINE

임시저장 vs 초안 검수 vs 완성본 저장

  • isModify=true: 임시저장 모드. MongoDB에 내용만 저장하고, 가이드라인 상태/캠페인 단계 변경 없음
  • isFirst=true: 초안 검수 모드. 가이드라인 상태가 DRAFT로 설정되며, hasGuideline=false 유지
  • isFirst=false (기본값): 완성본 저장 모드. 가이드라인 상태가 COMPLETED로 설정되며, hasGuideline=true
  • 완성본 저장 시에만 캠페인 단계가 CREATOR_RECRUIT로 변경됩니다 (모집 시작)

HTTP 요청

PUT /ai/business/contents/guideline/{collabNo}?isFirst=false&isModify=false
Authorization: Bearer {access_token}
Content-Type: application/json

Path Parameters

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

Query Parameters

파라미터타입필수기본값설명
isFirstboolean아니오falsetrue: 초안 검수 (DRAFT), false: 완성본 저장 (COMPLETED)
isModifyboolean아니오falsetrue: 임시저장 (내용만 저장, 상태/단계 변경 없음)

Request Body

가이드라인은 4단계 Wizard 구조로 되어 있습니다. 각 단계별로 부분 저장이 가능하며, 기존 데이터와 병합됩니다.

{
  "contentTypes": ["VIDEO", "CAPTION", "HASHTAG"],
  "basicInfo": {
    "productUrl": "https://example.com/product",
    "contentConcepts": [
      {
        "code": "STORY_TELLING",
        "referenceUrl": "https://instagram.com/reel/xxx",
        "referenceDescription": "이 영상처럼 자연스러운 썰풀기 스타일로"
      }
    ],
    "keywords": [
      { "text": "여름선크림", "isRequired": true }
    ],
    "titleExample": "여름 필수템! 촉촉한 선크림 추천"
  },
  "contentDetailInfo": {
    "categoryCode": "BEAUTY",
    "basicShots": [
      {
        "code": "TEXTURE_SHOT",
        "appealPoint": "크리미한 제형과 빠른 흡수력을 보여주세요",
        "subOption": null
      }
    ],
    "additionalOptions": [
      { "code": "BEFORE_AFTER", "additionalPrice": 50000, "inputText": null }
    ],
    "etcOptions": []
  },
  "marketingInfo": {
    "requiredPoints": ["SPF50+ PA++++ 자외선 차단", "촉촉한 수분감"],
    "optionalPoints": ["비건 인증"],
    "videoMarketingOptions": {
      "promotion": {
        "referenceUrl": "https://example.com/promo",
        "description": "6월 한정 20% 할인 진행 중"
      },
      "brandAccountTag": {
        "accountName": "@glowb_beauty",
        "tagMethods": ["PERSON_TAG", "CAPTION_TAG"],
        "saveAsDefault": true
      },
      "sponsorLabel": {
        "accountName": "@glowb_official"
      },
      "collaborator": {
        "accountName": "@glowb_collab",
        "tagMethods": null,
        "saveAsDefault": false
      },
      "useAutoDm": false,
      "productLinkShare": {
        "enabled": true,
        "shareMethods": ["dm", "profileLink"],
        "shareLink": "https://example.com/product",
        "shareDuration": 2,
        "shareDurationUnit": "week",
        "priceIncrease": 50000
      }
    },
    "hashtags": ["#글로브뷰티", "#여름선크림"]
  },
  "detailPageInfo": {
    "brandLogo": {
      "imageUrls": ["https://s3.../brand-logo-black.png", "https://s3.../brand-logo-white.png"],
      "saveAsDefault": true
    },
    "thumbnailUrl": "https://s3.../thumbnail.jpg",
    "detailImageUrls": ["https://s3.../detail-1.jpg", "https://s3.../detail-2.jpg"]
  }
}

Request Body 필드 상세 설명

전체 필드 상세는 가이드라인 조회 API 문서를 참고하세요.

응답

성공 응답 (200 OK) - 완성본 저장 (isFirst=false)

{
  "status": 200,
  "code": null,
  "message": "가이드라인이 저장되었습니다.",
  "data": {
    "collabNo": 123,
    "isFirst": false,
    "guidelineStatus": "COMPLETED",
    "message": "가이드라인이 저장되었습니다."
  }
}

성공 응답 (200 OK) - 초안 검수 (isFirst=true)

{
  "status": 200,
  "code": null,
  "message": "가이드라인이 저장되었습니다.",
  "data": {
    "collabNo": 123,
    "isFirst": true,
    "guidelineStatus": "DRAFT",
    "message": "가이드라인이 저장되었습니다."
  }
}

성공 응답 (200 OK) - 임시저장 (isModify=true)

{
  "status": 200,
  "code": null,
  "message": "가이드라인이 임시저장되었습니다.",
  "data": {
    "collabNo": 123,
    "isModify": true,
    "guidelineStatus": "COMPLETED",
    "message": "가이드라인이 임시저장되었습니다."
  }
}

임시저장 시 guidelineStatus는 현재 상태를 그대로 반환합니다. (기존 상태가 COMPLETEDCOMPLETED, DRAFTDRAFT)

Response 스키마

필드타입설명
collabNoint캠페인 번호
isFirstboolean초안 검수 여부 (임시저장 시 없음)
isModifyboolean임시저장 여부 (임시저장 시에만 포함)
guidelineStatusstring가이드라인 상태 (REQUESTED: 요청됨, DRAFT: 초안, COMPLETED: 완성). 임시저장 시 현재 상태 그대로 반환
messagestring결과 메시지

에러 응답

에러 응답 (400 Bad Request) - 모집 시작 후 수정 시도

{
  "status": 400,
  "code": "GUIDELINE_MODIFICATION_NOT_ALLOWED",
  "message": "모집이 시작된 이후에는 가이드라인을 수정할 수 없습니다.",
  "data": null
}

API 테스트

On this page