GET /ai/influence/campaigns/applications
캠페인 신청 목록 조회
캠페인 신청 목록 조회
인플루언서가 신청한 캠페인 목록을 조회합니다. 선정 대기, 선정, 미선정 7일 이내 건을 포함합니다.
HTTP 요청
GET /ai/influence/campaigns/applications
Authorization: Bearer {access_token}응답 구조 — 가이드라인 버전별 폴리모픽
applications 리스트는 두 종류의 항목이 섞여 내려옵니다. 항목의 guidelineVersion 으로 분기하세요.
| guidelineVersion | 항목 형태 | 일정 필드 |
|---|---|---|
| v1~v3 | flat (기존 구조 그대로) | top-level 에 feedbackDeadline / contentSubmissionDeadline / scriptReviewDeadline / contentReviewDeadline / uploadDeadline / uploadApprovalDeadline |
| v4 이상 | nested (영역별 그룹핑) | schedule 블록 (카드 표시값 + 원시 마감일) |
[TASK-071] v4 항목은 카드 UI 영역별로 campaign / contract / negotiation / review / finalSubmission / delivery / schedule 블록으로 정리됩니다. v1~v3 항목은 수정 이전의 flat 구조를 그대로 유지합니다. 한 크리에이터가 v3·v4 캠페인을 동시에 보유하면 두 형태가 한 응답에 섞입니다.
@JsonInclude(NON_NULL) 적용 — v4 항목은 현재 단계에 해당 없는 블록/필드가 응답에서 생략됩니다 (예: 신청/계약 단계엔 review / finalSubmission 없음).
응답 (200 OK)
{
"status": 200,
"code": null,
"message": "성공",
"data": {
"totalBalance": 2500000,
"applications": [
// ── v1~v3 항목 (flat) ──
{
"applicationId": 1,
"collabId": 123,
"thumbnailImage": "https://...",
"platform": "INSTAGRAM",
"contentFormat": "REEL",
"campaignName": "여름 뷰티 캠페인",
"selectionStatus": "SELECTED",
"selectionStatusDisplay": "선정됨",
"isContractRead": false,
"contractId": 42,
"contractStatus": "SIGNED",
"hasAllDocuments": false,
"missingDocumentTypes": ["IDENTIFICATION", "BANK_ACCOUNT_COPY"],
"appliedAt": "2024-01-15T10:00:00",
"contractDeadline": "2024-01-20T23:59:59",
"totalReviewCount": 2,
"phase": "FIRST_REVIEW",
"guidelineVersion": 2,
"deliveryType": "DELIVERY",
"hasDeliveryAddress": true,
"shippingDelayed": true,
"providedOptions": [
{
"optionId": 1,
"title": "색상",
"selectionType": "SINGLE",
"sortOrder": 0,
"choices": [
{ "choiceId": 11, "value": "아이보리", "sortOrder": 0, "selected": true },
{ "choiceId": 12, "value": "그레이", "sortOrder": 1, "selected": false }
]
}
],
"reviewId": 101,
"previousReviewId": null,
"reviewRound": 1,
"hasNewFeedback": true,
"isSubmitted": false,
"needsResubmission": true,
"hasAdditionalReviewRequest": false,
"approvedWithFeedback": false,
"feedbackDeadline": "2024-01-25T23:59:59",
"contentSubmissionDeadline": "2024-01-22T23:59:59",
"scriptReviewDeadline": "2024-01-24T23:59:59",
"contentReviewDeadline": null,
"uploadDeadline": null,
"uploadApprovalDeadline": null,
"priceNegotiationId": 501,
"proposedPrice": 450000,
"negotiationOrder": 2,
"negotiationStatus": "ACCEPT",
"latestNegotiationStatus": "ACCEPT"
},
// ── v4 항목 (nested) ──
{
"applicationId": 2,
"appliedAt": "2024-01-10T10:00:00",
"selectionStatus": "SELECTED",
"selectionStatusDisplay": "선정됨",
"phase": "FIRST_REVIEW",
"guidelineVersion": 4,
"campaign": {
"collabId": 456,
"thumbnailImage": "https://...",
"platform": "INSTAGRAM",
"contentFormat": "REEL",
"campaignName": "겨울 패션 캠페인"
},
"contract": {
"isContractRead": true,
"contractId": 55,
"contractStatus": "SIGNED",
"contractDeadline": "2024-01-15T23:59:59",
"hasAllDocuments": true,
"missingDocumentTypes": null
},
"negotiation": {
"priceNegotiationId": 601,
"proposedPrice": 500000,
"negotiationOrder": 1,
"negotiationStatus": "ACCEPT",
"latestNegotiationStatus": "ACCEPT"
},
"review": {
"reviewId": 202,
"previousReviewId": null,
"reviewRound": 1,
"totalReviewCount": 2,
"hasNewFeedback": false,
"isSubmitted": true,
"needsResubmission": false,
"hasAdditionalReviewRequest": false,
"approvedWithFeedback": false
},
"delivery": {
"deliveryType": "DELIVERY",
"hasDeliveryAddress": true,
"shippingDelayed": false,
"providedOptions": []
},
"schedule": {
"activePhase": "SCRIPT_REVIEW_DEADLINE",
"label": "검수일정",
"displayType": "REVIEW_ESTIMATE",
"placeholderText": null,
"estimateText": "스크립트 제출 후 약 2영업일 소요(예상)",
"deadline": null,
"dDay": null,
"triggerFired": true,
"triggerType": "TRIGGER_SCRIPT_SUBMITTED",
"triggeredAt": "2024-01-18T09:00:00",
"reviewing": true,
"reviewDelayed": false,
"feedbackDeadline": "2024-01-22T23:59:59",
"contentSubmissionDeadline": null,
"scriptReviewDeadline": "2024-01-20T23:59:59",
"contentReviewDeadline": null,
"uploadDeadline": null,
"uploadApprovalDeadline": null
}
}
]
}
}최상위 응답 (data)
| 필드 | 타입 | 설명 |
|---|---|---|
totalBalance | long | 총 정산금 (해당 인플루언서의 정산 잔액 합계) |
applications | array | 신청 항목 목록 (v1~v3 flat / v4 nested 혼재) |
v1~v3 항목 필드 (flat)
기존 구조 그대로입니다. 주요 필드:
| 필드 | 타입 | 설명 |
|---|---|---|
applicationId | long | 신청 ID |
collabId | int | 캠페인 ID |
thumbnailImage / platform / contentFormat / campaignName | string | 캠페인 기본 정보 |
selectionStatus / selectionStatusDisplay | string | 선정 상태 (WAITING/SELECTED/RESERVED/REJECTED/ELIMINATED/PROPOSAL) + 표시명 |
isContractRead | boolean | 계약서 읽음 여부 |
contractId / contractStatus | long / string | 전자계약서 ID / 상태 (DRAFT~SIGNED). 미발송 시 null |
hasAllDocuments / missingDocumentTypes | boolean / string[] | 필수 서류 첨부 여부 / 미첨부 타입 (SIGNED에서만) |
appliedAt / contractDeadline | datetime | 신청일 / 계약서 작성 마감일 |
totalReviewCount | int | 총 검수 횟수 (1: 1회검수, 2: 2회검수) |
phase | string | 현재 단계 (APPLICATION_CONTRACT, FIRST_REVIEW, SECOND_REVIEW, UPLOAD_SETTLEMENT) |
guidelineVersion | int | 분기 키. v1~v3 이면 이 flat 구조 |
deliveryType | string | 캠페인 배송 유형 (DELIVERY / NO_DELIVERY / VISIT_REQUIRED) |
hasDeliveryAddress / shippingDelayed / providedOptions | — | 배송지 매핑 / 배송 지연(캠페인 단위) / 제공 옵션 |
reviewId / previousReviewId / reviewRound | long / int | 검수 라운드 정보 |
hasNewFeedback / isSubmitted / needsResubmission / hasAdditionalReviewRequest / approvedWithFeedback | boolean | 검수 상태 플래그 |
feedbackDeadline / contentSubmissionDeadline / scriptReviewDeadline / contentReviewDeadline / uploadDeadline / uploadApprovalDeadline | datetime | flat 마감일 (v4는 schedule 블록으로 이전) |
reRequestTypes / finalSubmittedAt / isFinalSubmitted / contentLink / partnershipCode / cleanFilePath / finalFilePath | — | 업로드/정산 단계 필드 |
priceNegotiationId / proposedPrice / negotiationOrder / negotiationStatus / latestNegotiationStatus | — | 가격 협상 정보 |
v4 항목 필드 (nested)
top-level 에는 식별/상태/분기 키만 두고, 나머지는 영역별 블록으로 묶습니다.
top-level
| 필드 | 타입 | 설명 |
|---|---|---|
applicationId | long | 신청 ID |
appliedAt | datetime | 신청일 |
selectionStatus / selectionStatusDisplay | string | 선정 상태 + 표시명 |
phase | string | 현재 단계 |
guidelineVersion | int | 분기 키. v4 이상이면 이 nested 구조 |
campaign — 캠페인 기본 정보
| 필드 | 설명 |
|---|---|
collabId / thumbnailImage / platform / contentFormat / campaignName | 캠페인 ID / 썸네일 / 플랫폼 / 게시물 종류 / 캠페인명 |
contract — 계약 정보 + 서류
| 필드 | 설명 |
|---|---|
isContractRead / contractId / contractStatus / contractDeadline | 계약서 읽음 / ID / 상태 / 작성 마감일 |
hasAllDocuments / missingDocumentTypes | 필수 서류 첨부 여부 / 미첨부 타입 (SIGNED에서만) |
negotiation — 가격 협상
| 필드 | 설명 |
|---|---|
priceNegotiationId / proposedPrice / negotiationOrder | 협상 ID / 제안 가격 / 순서 |
negotiationStatus / latestNegotiationStatus | 협상 상태 (PENDING/ACCEPT) / 최신 상태 |
review — 검수 정보 (제작 단계)
| 필드 | 설명 |
|---|---|
reviewId / previousReviewId / reviewRound / totalReviewCount | 검수 라운드 정보 |
hasNewFeedback / isSubmitted / needsResubmission / hasAdditionalReviewRequest / approvedWithFeedback | 검수 상태 플래그 |
finalSubmission — 최종 제출/업로드 (UPLOAD_SETTLEMENT 단계)
| 필드 | 설명 |
|---|---|
reRequestTypes | 재요청 항목 JSON 배열 문자열 |
finalSubmittedAt / isFinalSubmitted | 최종제출 일시 / 여부 |
contentLink / partnershipCode / cleanFilePath / finalFilePath | 콘텐츠 링크 / 파트너십 코드 / 클린본·최종본 경로 |
delivery — 배송 정보 + 제공 옵션
| 필드 | 설명 |
|---|---|
deliveryType / hasDeliveryAddress / shippingDelayed | 배송 유형(DELIVERY / NO_DELIVERY / VISIT_REQUIRED) / 배송지 매핑 / 배송 지연(캠페인 단위) |
providedOptions | 캠페인 제공 옵션 (정의 + 본인 선택). 제공 옵션 개요 참고 |
schedule 블록 (v4 전용)
[TASK-071] 카드 일정 영역. 서버가 카드 표시값(라벨/표시타입/문구/D-day/검수상태)까지 계산해 내려줍니다.
| 필드 | 타입 | 설명 |
|---|---|---|
activePhase | string | 카드가 현재 가리키는 마감 단계 |
label | string | 라벨 (스크립트 제출 마감일 / 제작물 제출 마감일 / 검수일정) |
displayType | string | RELATIVE_PLACEHOLDER(트리거 전 회색 상대문구) / ABSOLUTE_DATE(실제 일자+D-day) / REVIEW_ESTIMATE(검수 예상) |
placeholderText | string | RELATIVE_PLACEHOLDER 문구. 예: 배송완료 후 3일 이내(배송형) / 계약 완료 후 4일 이내(비배송형) |
estimateText | string | REVIEW_ESTIMATE 문구. 예: 스크립트 제출 후 약 2영업일 소요(예상) |
deadline | datetime | ABSOLUTE_DATE 일 때 확정 마감일 |
dDay | int | ABSOLUTE_DATE 일 때 D-day (오늘=0, 지났으면 음수) |
triggerFired | boolean | 마감이 트리거로 확정됐는지 (회색 placeholder → 실제 일자 전환) |
triggerType | string | 이 마감을 확정시킨 트리거 종류 (예: TRIGGER_1A_DELIVERY_INPUT). 미발동 시 null |
triggeredAt | datetime | 트리거 발동 시각 (미발동 시 null) |
reviewing | boolean | 검수중 여부 (제출 완료 후 검수 대기) |
reviewDelayed | boolean | 검수 지연 여부 (검수 마감 경과). 카드에 "브랜드는 아직 검수중! 조금 더 기다려주세요" 노출 |
feedbackDeadline / contentSubmissionDeadline / scriptReviewDeadline / contentReviewDeadline / uploadDeadline / uploadApprovalDeadline | datetime | 원시 마감일 (상세/모달용) |
카드 일정 영역 렌더링 (Figma 2026.05.26):
displayType=RELATIVE_PLACEHOLDER→placeholderText(회색). 배송형은 운송장 입력(Trigger 1-A) 전, 비배송형은 계약 서명완료(Trigger 1-B) 전.displayType=ABSOLUTE_DATE→label+deadline(mm월 dd일) +(D-{dDay}).displayType=REVIEW_ESTIMATE→검수일정+estimateText.reviewDelayed=true면 지연 안내 추가.triggerType전체 값은 개별 일정 API 참고.
보조 로직 (Callout)
필수 서류 판단 (SIGNED 상태): 신분증(IDENTIFICATION) 또는 사업자등록증(BUSINESS_REGISTRATION) 1개 이상 + 통장사본(BANK_ACCOUNT_COPY) 1개 이상. hasAllDocuments=false면 서류 보완 UI 표시. 업로드는 PUT /ai/contract/{contractId}/documents?type={type}.
가격 협상 CTA: negotiationStatus=PENDING → 수락/거절 버튼, ACCEPT → "최종 선정 대기중", null → 표시 안 함.
reRequestTypes(또는 finalSubmission.reRequestTypes)가 있으면 인플루언서는 해당 항목을 재제출해야 합니다.