SaaS API인플루언서 SaaS
GET /ai/influence/campaigns/applications
캠페인 신청 목록 조회
캠페인 신청 목록 조회
인플루언서가 신청한 캠페인 목록을 조회합니다. 선정 대기, 선정, 미선정 7일 이내 건을 포함합니다.
HTTP 요청
GET /ai/influence/campaigns/applications
Authorization: Bearer {access_token}응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "성공",
"data": {
"totalSettlement": 2500000,
"applications": [
{
"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",
"reviewId": 101,
"previousReviewId": null,
"reviewRound": 1,
"feedbackDeadline": "2024-01-25T23:59:59",
"contentSubmissionDeadline": "2024-01-22T23:59:59",
"hasNewFeedback": true,
"isSubmitted": false,
"needsResubmission": true,
"hasAdditionalReviewRequest": false,
"approvedWithFeedback": false,
"priceNegotiationId": 501,
"proposedPrice": 450000,
"negotiationOrder": 2,
"negotiationStatus": "ACCEPT"
},
{
"applicationId": 2,
"collabId": 456,
"thumbnailImage": "https://...",
"platform": "YOUTUBE",
"contentFormat": "SHORTS",
"campaignName": "겨울 패션 캠페인",
"selectionStatus": "SELECTED",
"selectionStatusDisplay": "선정됨",
"isContractRead": true,
"contractId": 55,
"contractStatus": "SIGNED",
"hasAllDocuments": true,
"missingDocumentTypes": null,
"appliedAt": "2024-01-10T10:00:00",
"contractDeadline": "2024-01-15T23:59:59",
"totalReviewCount": 2,
"phase": "UPLOAD_SETTLEMENT",
"reviewId": 202,
"previousReviewId": 101,
"reviewRound": 2,
"finalSubmittedAt": "2024-01-28T14:30:00",
"isFinalSubmitted": true,
"contentLink": "https://www.instagram.com/reel/xxxxx",
"partnershipCode": "PARTNER-123",
"cleanFilePath": "https://d3mp6eqt0w2808.cloudfront.net/clean/file.mp4",
"finalFilePath": "https://d3mp6eqt0w2808.cloudfront.net/final/file.mp4",
"reRequestTypes": "[\"CONTENT_LINK\", \"CLEAN_FILE\"]",
"uploadDeadline": "2024-02-01T23:59:59",
"uploadApprovalDeadline": "2024-02-05T23:59:59"
}
]
}
}응답 필드 설명
공통 필드:
| 필드 | 타입 | 설명 |
|---|---|---|
applicationId | long | 신청 ID |
collabId | int | 캠페인 ID |
thumbnailImage | string | 캠페인 썸네일 이미지 |
platform | string | 플랫폼 (SNS) |
contentFormat | string | 게시물 종류 (릴스, 숏츠 등) |
campaignName | string | 캠페인명 |
selectionStatus | string | 선정 상태 (WAITING, SELECTED, REJECTED, PROPOSAL 등) |
selectionStatusDisplay | string | 선정 상태 표시명 |
isContractRead | boolean | 계약서 읽음 여부 |
contractId | long | 전자계약서 ID (계약서 미발송 시 null) |
contractStatus | string | 전자계약 상태 (DRAFT, SENT, OPENED, FILLED, OTP_VERIFIED, SIGNED). 계약서 미발송 시 null |
hasAllDocuments | boolean | 필수 서류 모두 첨부 여부. SIGNED 상태에서만 값이 설정됨. 그 외 null |
missingDocumentTypes | string[] | 미첨부 서류 타입 목록 (IDENTIFICATION, BANK_ACCOUNT_COPY 등). 모두 첨부 시 null |
appliedAt | datetime | 신청일 |
contractDeadline | datetime | 계약서 작성 마감일 |
totalReviewCount | int | 총 검수 단계 횟수 (1: 1회검수, 2: 2회검수) |
phase | string | 현재 단계 (APPLIED, CONTRACT, FIRST_REVIEW, SECOND_REVIEW, UPLOAD_SETTLEMENT, COMPLETED) |
콘텐츠 제작 단계 필드 (FIRST_REVIEW, SECOND_REVIEW):
| 필드 | 타입 | 설명 |
|---|---|---|
reviewId | long | 현재 검수 라운드 ID |
previousReviewId | long | 이전 검수 라운드 ID (SECOND_REVIEW 시 1차 review ID, FIRST_REVIEW 시 null) |
reviewRound | int | 검수 라운드 (1차 또는 2차) |
feedbackDeadline | datetime | 피드백 반영 마감일 |
contentSubmissionDeadline | datetime | 콘텐츠 제출 마감일 (DRAFT_REVIEW 마감일) |
hasNewFeedback | boolean | 새로운 피드백 유무 |
isSubmitted | boolean | 제출물 제출 여부 |
needsResubmission | boolean | 크리에이터가 지금 수정/재제출해야 하는지 여부. true: 재제출 필요, false: 기업 검수 대기 중 |
hasAdditionalReviewRequest | boolean | 추가 검수 요청이 있었는지 여부. true: 추가 검수 요청 있음 (maxFeedbackCount > 1) |
approvedWithFeedback | boolean | 피드백 포함 승인 여부. true: 피드백을 남기되 반려 없이 바로 승인 처리된 경우, false: 정상 플로우 |
업로드/정산 단계 필드 (UPLOAD_SETTLEMENT):
| 필드 | 타입 | 설명 |
|---|---|---|
reviewId | long | 가장 최근 검수 라운드 ID (보통 2차 검수) |
previousReviewId | long | 이전 검수 라운드 ID (1차 review ID) |
reviewRound | int | 가장 최근 검수 라운드 (1 또는 2) |
approvedWithFeedback | boolean | 2차 검수가 피드백 포함 승인으로 처리됐는지 여부 |
finalSubmittedAt | datetime | 최종제출물 제출일시 |
isFinalSubmitted | boolean | 최종제출물 제출 여부 |
contentLink | string | 업로드한 콘텐츠 링크 |
partnershipCode | string | 파트너십 코드 |
cleanFilePath | string | 클린본 파일 경로 (S3 URL) |
finalFilePath | string | 최종본 파일 경로 (S3 URL) |
reRequestTypes | string | 재요청 항목 목록 (JSON 배열 문자열). 예: ["CONTENT_LINK", "CLEAN_FILE", "FINAL_FILE", "PARTNERSHIP_CODE"] |
uploadDeadline | datetime | 최종 업로드 허용 마감일 (UPLOAD 단계 마감일) |
uploadApprovalDeadline | datetime | 최종 업로드 승인 마감일 (UPLOAD_APPROVAL 단계 마감일) |
reRequestTypes가 있는 경우, 인플루언서는 해당 항목을 재제출해야 합니다.
계약서 서류 첨부 필드 (SIGNED 상태에서만 유효):
| 필드 | 타입 | 설명 |
|---|---|---|
hasAllDocuments | boolean | 필수 서류가 모두 첨부되었는지. SIGNED가 아니면 null |
missingDocumentTypes | string[] | 미첨부 서류 타입 목록. 모두 첨부 시 null |
필수 서류 판단 로직:
- 신분증(
IDENTIFICATION) 또는 사업자등록증(BUSINESS_REGISTRATION) 중 1개 이상 - 통장사본(
BANK_ACCOUNT_COPY) 1개 이상
hasAllDocuments가 false인 경우, 프론트에서 서류 보완 요청 UI를 표시합니다.
서류 업로드는 PUT /ai/contract/{contractId}/documents?type={type} API를 사용합니다.
가격 협상 필드 (신청/계약 단계):
| 필드 | 타입 | 설명 |
|---|---|---|
priceNegotiationId | long | 가격 협상 ID |
proposedPrice | long | 제안 가격 |
negotiationOrder | int | 협상 순서 (1: 첫 번째 제안, 2: 두 번째 제안 등) |
negotiationStatus | string | 협상 상태 (PENDING: 대기중, ACCEPT: 수락) |
CTA 표시 로직:
negotiationStatus가PENDING인 경우: 수락/거절 버튼 표시negotiationStatus가ACCEPT인 경우: "최종 선정 대기중" 표시negotiationStatus가null인 경우: 협상 정보 없음 (표시하지 않음)