Glowb Dev Docs
SaaS API캠페인 일정

크리에이터 개별 일정 조회 API

GET /ai/campaign-schedules/applications/{applicationId} — 신청자별 일정 (제출/검수/피드백 마감)

크리에이터 개별 일정 조회 API

신청 ID로 해당 크리에이터의 개별 일정 목록을 조회합니다. 플로우 진행에 따라 일정이 동적으로 추가/갱신됩니다.

HTTP 요청

GET /ai/campaign-schedules/applications/{applicationId}
Authorization: Bearer {access_token}

Path Parameters

파라미터타입필수설명
applicationIdlong크리에이터 신청 ID

응답

성공 응답 (200 OK) - 1회검수 캠페인 (전체 플로우 완료 시)

{
  "status": 200,
  "code": null,
  "message": "크리에이터 개별 일정 조회가 성공하였습니다.",
  "data": {
    "schedules": [
      {
        "id": 1,
        "phase": "CONTENT_SUBMISSION_DEADLINE",
        "phaseDescription": "제작물 제출 마감",
        "deadline": "2026-04-05T14:00:00",
        "originalDeadline": "2026-04-05T14:00:00",
        "triggerType": "TRIGGER_1A_DELIVERY_INPUT",
        "triggeredAt": "2026-04-01T14:00:00",
        "triggerFired": true,
        "createdAt": "2026-04-01T14:00:00",
        "updatedAt": null
      },
      {
        "id": 2,
        "phase": "CONTENT_REVIEW_DEADLINE",
        "phaseDescription": "제작물 검수 마감",
        "deadline": "2026-04-09T10:00:00",
        "originalDeadline": "2026-04-09T10:00:00",
        "triggerType": "TRIGGER_VIDEO_SUBMITTED",
        "triggeredAt": "2026-04-04T10:00:00",
        "triggerFired": true,
        "createdAt": "2026-04-04T10:00:00",
        "updatedAt": null
      },
      {
        "id": 3,
        "phase": "FEEDBACK_DEADLINE",
        "phaseDescription": "피드백 반영 마감",
        "deadline": "2026-04-13T15:00:00",
        "originalDeadline": "2026-04-13T15:00:00",
        "triggerType": "TRIGGER_VIDEO_SUBMITTED",
        "triggeredAt": "2026-04-09T15:00:00",
        "triggerFired": true,
        "createdAt": "2026-04-09T15:00:00",
        "updatedAt": null
      },
      {
        "id": 4,
        "phase": "UPLOAD_ALLOWED_DATE",
        "phaseDescription": "업로드 허용일",
        "deadline": "2026-04-20T00:00:00",
        "originalDeadline": "2026-04-20T00:00:00",
        "triggerType": "TRIGGER_3_VIDEO_REVIEW_DONE",
        "triggeredAt": "2026-04-14T10:00:00",
        "triggerFired": true,
        "createdAt": "2026-04-14T10:00:00",
        "updatedAt": null
      }
    ],
    "applicationId": 100,
    "guidelineCompletedAt": "2026-04-01T10:00:00",
    "expectedCompletedAt": "2026-04-22T10:00:00"
  }
}

성공 응답 (200 OK) - 2회검수 캠페인 (전체 플로우 완료 시)

{
  "status": 200,
  "code": null,
  "message": "크리에이터 개별 일정 조회가 성공하였습니다.",
  "data": {
    "schedules": [
      {
        "id": 1,
        "phase": "SCRIPT_SUBMISSION_DEADLINE",
        "phaseDescription": "스크립트 제출 마감",
        "deadline": "2026-04-12T00:00:00",
        "originalDeadline": "2026-04-12T00:00:00",
        "triggerType": "TRIGGER_1B_CONTRACT_GUIDELINE",
        "triggeredAt": "2026-04-10T00:00:00",
        "triggerFired": true,
        "createdAt": "2026-04-10T00:00:00",
        "updatedAt": null
      },
      {
        "id": 2,
        "phase": "SCRIPT_REVIEW_DEADLINE",
        "phaseDescription": "스크립트 검수 마감",
        "deadline": "2026-04-16T09:00:00",
        "originalDeadline": "2026-04-16T09:00:00",
        "triggerType": "TRIGGER_SCRIPT_SUBMITTED",
        "triggeredAt": "2026-04-12T09:00:00",
        "triggerFired": true,
        "createdAt": "2026-04-12T09:00:00",
        "updatedAt": null
      },
      {
        "id": 3,
        "phase": "CONTENT_SUBMISSION_DEADLINE",
        "phaseDescription": "제작물 제출 마감",
        "deadline": "2026-04-20T15:00:00",
        "originalDeadline": "2026-04-20T15:00:00",
        "triggerType": "TRIGGER_2_SCRIPT_REVIEW_DONE",
        "triggeredAt": "2026-04-16T15:00:00",
        "triggerFired": true,
        "createdAt": "2026-04-16T15:00:00",
        "updatedAt": null
      },
      {
        "id": 4,
        "phase": "CONTENT_REVIEW_DEADLINE",
        "phaseDescription": "제작물 검수 마감",
        "deadline": "2026-04-28T10:00:00",
        "originalDeadline": "2026-04-28T10:00:00",
        "triggerType": "TRIGGER_VIDEO_SUBMITTED",
        "triggeredAt": "2026-04-24T10:00:00",
        "triggerFired": true,
        "createdAt": "2026-04-24T10:00:00",
        "updatedAt": null
      },
      {
        "id": 5,
        "phase": "FEEDBACK_DEADLINE",
        "phaseDescription": "피드백 반영 마감",
        "deadline": "2026-05-02T14:00:00",
        "originalDeadline": "2026-05-02T14:00:00",
        "triggerType": "TRIGGER_VIDEO_SUBMITTED",
        "triggeredAt": "2026-04-28T14:00:00",
        "triggerFired": true,
        "createdAt": "2026-04-28T14:00:00",
        "updatedAt": null
      },
      {
        "id": 6,
        "phase": "UPLOAD_ALLOWED_DATE",
        "phaseDescription": "업로드 허용일",
        "deadline": "2026-05-10T00:00:00",
        "originalDeadline": "2026-05-10T00:00:00",
        "triggerType": "TRIGGER_3_VIDEO_REVIEW_DONE",
        "triggeredAt": "2026-05-03T10:00:00",
        "triggerFired": true,
        "createdAt": "2026-05-03T10:00:00",
        "updatedAt": null
      }
    ],
    "applicationId": 200,
    "guidelineCompletedAt": "2026-04-10T09:00:00",
    "expectedCompletedAt": "2026-05-12T09:00:00"
  }
}

일정은 한 번에 전부 생성되지 않습니다. 플로우 단계마다 해당 일정만 추가됩니다.

  • 선정 시: 제출 마감만 생성 (1회검수: CONTENT_SUBMISSION_DEADLINE, 2회검수: SCRIPT_SUBMISSION_DEADLINE)
  • 제출 시: 검수 마감 추가
  • 피드백 시: 피드백 마감 추가
  • 업로드일 설정 시: 업로드 허용일 추가
  • 같은 phase는 새 row가 생기지 않고 기존 deadline이 갱신됩니다.

Response 스키마 (ListResponse)

필드명타입설명
schedulesApplicationScheduleResponseDto[]일정 목록
applicationIdlong신청 ID
guidelineCompletedAtdatetime[TASK-071] 가이드라인 완성일. 출처: MongoDB GuidelineDocument.completedAt → fallback Collab.recruitment_start_date. 가이드 미완성(DRAFT) 캠페인은 null. 운영자는 admin PUT 으로 정정 가능.
expectedCompletedAtdatetime[TASK-071 Jay 2026-05-26] 캠페인 예상 완료일 (백엔드 계산). 국내만 산정 (해외 null). 영업일 기준 guidelineCompletedAt + baseDays + (recruitmentDays - 4). 자세한 산정 규칙은 캠페인 일정 조회 API 참고.

ApplicationScheduleResponseDto

필드명타입설명
idlong일정 ID
phasestring일정 단계 enum
phaseDescriptionstring단계 한글 설명
deadlinedatetime현재 마감일 (재계산에 따라 갱신)
originalDeadlinedatetime원본 마감일 (최초 생성 시 1회 세팅, 불변)
triggerTypestring[TASK-071] 이 마감일을 확정시킨 트리거 종류 (enum name). null이면 아직 트리거 미발동(임시 마감) → 화면에 회색 상대 문구로 노출. 전체 값은 아래 ScheduleTriggerType 표 참고.
triggeredAtdatetime[TASK-071] 트리거 발동 시각 (미발동 시 null)
triggerFiredboolean[TASK-071] 트리거 발동 여부 (triggerType != null). true면 실제 일자로 확정됨 → 회색 placeholder가 실제 일자로 전환
delaysScheduleDelayInfo[]본인 차원 사유 + 캠페인 차원 사유(선정/배송) mirror 합본
createdAtdatetime생성일
updatedAtdatetime수정일

ApplicationSchedulePhase (개별 일정 단계)

Phase설명비고
SCRIPT_SUBMISSION_DEADLINE스크립트 제출 마감2회검수만
SCRIPT_REVIEW_DEADLINE스크립트 검수 마감2회검수만
CONTENT_SUBMISSION_DEADLINE제작물 제출 마감
CONTENT_REVIEW_DEADLINE제작물 검수 마감
FEEDBACK_DEADLINE피드백 반영 마감
UPLOAD_ALLOWED_DATE업로드 허용일
FINAL_RESUBMISSION_DEADLINE최종제출물 재제출 마감재요청 시
SETTLEMENT_DEADLINE정산 마감

ScheduleTriggerType (트리거 종류)

각 일정 row 의 triggerType 에 들어가는 값. 어떤 트리거가 해당 마감일을 확정했는지 나타낸다. null 이면 아직 미발동(임시 마감).

triggerType발화 시점시트 명세
TRIGGER_1A_DELIVERY_INPUT배송지/운송장 입력 (배송형)Trigger 1-A
TRIGGER_1B_CONTRACT_GUIDELINE계약 서명완료 + 가이드라인 발송 (비배송형)Trigger 1-B
TRIGGER_2_SCRIPT_REVIEW_DONE스크립트 검수 완료 — 광고주 승인 (2회검수)Trigger 2
TRIGGER_3_VIDEO_REVIEW_DONE영상 검수 완료 — 광고주 승인Trigger 3
TRIGGER_4_FINAL_UPLOAD_DONE최종 제출물 업로드 완료Trigger 4
TRIGGER_SCRIPT_SUBMITTED크리에이터 스크립트 제출/재제출 → 검수 마감 산정검수 = 제출일 + 2영업일
TRIGGER_VIDEO_SUBMITTED크리에이터 영상 제출/재제출 → 검수 마감 산정검수 = 재제출일 + 2영업일
TRIGGER_2R_SCRIPT_RESUBMIT_REQUEST광고주 스크립트 재제출 요청 (2회검수)재제출 = 요청일 + 1일
TRIGGER_3R_VIDEO_RESUBMIT_REQUEST광고주 영상 재제출 요청재제출 = 요청일 + 2일(첫)/+3일(재)
TRIGGER_4R_FINAL_RESUBMIT_REQUEST광고주 최종제출물 재요청재제출 = 요청일 + 1일 (검수 없음)

일정 계산 규칙

1회검수 (비배송)

단계기준계산
제작물 제출 마감선정 시선정일 + 4일
제작물 검수 마감크리에이터 제출 시제출일 + 영업일 2일
피드백 반영 마감기업 피드백 시피드백일 + 4일
업로드 허용일기업 설정 시기업 입력값

1회검수 (배송) — 제작물 제출 마감만 다름: 배송마감예상일 + 4일

2회검수 (비배송)

단계기준계산
스크립트 제출 마감선정 시선정일 + 2일
스크립트 검수 마감크리에이터 제출 시제출일 + 영업일 2일
제작물 제출 마감스크립트 승인 시승인일 + 4일
제작물 검수 마감크리에이터 제출 시제출일 + 영업일 2일
피드백 반영 마감기업 피드백 시피드백일 + 4일
업로드 허용일기업 설정 시기업 입력값

2회검수 (배송) — 스크립트 제출 마감만 다름: 배송마감예상일 + 2일

영업일 = 토/일 제외 (공휴일 미포함). 배송마감예상일 = 캠페인 일정의 DRAFT_SUBMISSION phase endDate.


API 테스트


캠페인 단위 전체 일정 조회는 캠페인 일정 조회 API 페이지 참고. 트리거 발화 흐름은 트리거 기반 일정 재설계 페이지 참고.

On this page