Admin APIAdmin Campaign API
GET /ai/admin/campaigns/{campaignNo}
캠페인 상세 조회
캠페인 상세 조회
캠페인 상세 정보를 조회합니다.
HTTP 요청
GET /ai/admin/campaigns/{campaignNo}
Authorization: Bearer {access_token}응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "캠페인 상세 조회 성공",
"data": {
"no": 123,
"businessId": "business123",
"businessName": "(주)글로우비",
"title": "여름 뷰티 캠페인",
"category": "BEAUTY",
"sns": "instagram",
"snsContentFormat": "REEL",
"campaignType": "PRODUCT_SPONSORSHIP",
"productName": "여름 뷰티 제품",
"productUrl": "https://example.com/product",
"nation": "KR",
"isVisitRequired": "false",
"averageUnitPrice": "100000",
"person": "10",
"charge": "1000000",
"feePolicyType": "COST_PLUS_FEE",
"feeType": "PERCENT",
"feeValue": 10,
"priceRoundUp": true,
"deliveryType": "배송",
"firstReviewTypes": ["SCRIPT", "HASHTAG"],
"secondReviewTypes": ["VIDEO"],
"finalSubmissionTypes": ["INSTAGRAM_REEL", "INSTAGRAM_POST"],
"secondaryUsageMonths": 6,
"secondaryUsageOption": "SNS_AD",
"showPrice": true,
"listMode": "EXCLUDE",
"modelType": "STANDARD",
"guidelineVersion": 2,
"campaignSubStep": "CREATOR_RECRUIT",
"guidelineStatus": "COMPLETED",
"campaignContractType": "STANDARD",
"campaignContractDescription": "계약 내용",
"caution": "제품 촬영 시 주의사항",
"managers": [
{ "managerNo": 1, "name": "홍길동", "phone": "010-1234-5678", "email": "manager@example.com", "isDefault": true }
],
"guidelineCompletedAt": "2026-05-26T11:50:41",
"recruitmentDays": 4,
"schedules": [...],
"deficitLock": {
"engaged": true,
"amount": 300000,
"status": "LOCKED",
"threshold": 800000,
"sumLockedNormal": 500000,
"policyEnabled": true
}
}
}응답 필드 설명
| 필드 | 타입 | 설명 |
|---|---|---|
no | integer | 캠페인 번호 |
businessId | string | 기업 회원 ID |
businessName | string | 기업명 |
title | string | 캠페인 제목 |
category | string | 카테고리 코드 |
sns | string | SNS 플랫폼 |
snsContentFormat | SnsContentFormat | 콘텐츠 포맷 (REEL, FEED, STORY 등) |
campaignType | CampaignType | 캠페인 제공종류 |
productName | string | 상품명 |
productUrl | string | 상품 URL |
nation | string | 국가 (예: KR) |
isVisitRequired | string | 방문 필요 여부 |
person | string | 모집인원 |
charge | string | 비용 |
feePolicyType | FeePolicyType | 수수료 정책 타입 (ACTUAL_COST: 실비, COST_PLUS_FEE: 실비+수수료, TOTAL_AMOUNT: 총액) |
feeType | FeeType | 수수료 유형 (PERCENT: %, FIXED: 원) |
feeValue | integer | 수수료 값 |
priceRoundUp | boolean | 가격 만원 단위 올림 여부 |
deliveryType | string | 배송 여부 (한국어 설명, DeliveryType.getDescription()) |
firstReviewTypes | Set<SubmissionItemType> | 1차 검수 필수 제출물 타입 |
secondReviewTypes | Set<SubmissionItemType> | 2차 검수 필수 제출물 타입 |
finalSubmissionTypes | Set<FinalSubmissionType> | 최종 제출물 타입 |
secondaryUsageMonths | integer | 2차 활용 기간 (개월). -1 = 영구활용 |
secondaryUsageOption | string | 2차 활용 옵션 |
showPrice | boolean | 가격 노출 여부 |
listMode | string | 리스트 모드 (SELECT / EXCLUDE) |
modelType | CampaignModelType | 캠페인 모델 타입 (STANDARD / SECONDARY_USAGE / PERFORMANCE) |
guidelineVersion | integer | 가이드라인 버전 (1: v1, 2: v2) |
campaignSubStep | CampaignSubStep | 캠페인 진행 상태 |
guidelineStatus | GuidelineStatus | 가이드라인 상태 (REQUESTED: 요청됨, DRAFT: 초안, COMPLETED: 완성) |
campaignContractType | string | 계약 형식 |
campaignContractDescription | string | 계약 내용 |
caution | string | 주의사항 |
managers | array | 캠페인 담당자 목록(N:M, 동등). 각 항목 { managerNo, name, phone, email, isDefault }. 담당자 미지정 시 빈 배열 |
guidelineCompletedAt | datetime | [TASK-071] 가이드라인 완성일. 출처: MongoDB GuidelineDocument.completedAt → fallback Collab.recruitment_start_date (legacy). 가이드 미완성(DRAFT) 캠페인은 null. 운영자는 PUT API 의 같은 필드로 정정 가능. |
recruitmentDays | integer | [TASK-071 Phase 3] 모집 영업일 (1-10, 기본 4). 관리자 수정 페이지에서 표시·수정 |
deficitLock | object | 80% 부족분 lock 스냅샷. 상세는 부족분 lock 조회 참조. SaaS 이전 캠페인은 engaged=false, policyEnabled=false로 고정 |