SaaS API캠페인 제공 옵션 (V4)
크리에이터 옵션 선택 저장
크리에이터가 자신의 신청 건에 캠페인 제공 옵션 선택을 저장합니다 (PROPOSAL 상태에서만 허용).
크리에이터 옵션 선택 저장
크리에이터가 PROPOSAL(제안) 상태에서 색상/사이즈 등 옵션을 선택해 저장한다.
저장 즉시 광고주/관리자 대시보드의 selectedOptions 에 반영된다.
HTTP 요청
PUT /ai/application/{applicationId}/provided-options
Authorization: Bearer {access_token}
Content-Type: application/jsonPath Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
applicationId | Long | 예 | 신청 ID (TB_CAMPAIGN_APPLICATION.id) |
Request Body
{
"choiceIds": [11, 23]
}| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
choiceIds | Long[] | 예 | 선택한 choice id 목록. 그룹 무관 flat 리스트로 보냄. 중복은 자동 제거됨. 빈 배열이면 본인 선택을 전부 삭제 |
권한 / 상태 게이트
- 비-관리자: 본인의 신청 건만 저장 가능 (
influence.member.id == userDetails.username). 아니면UNAUTHORIZED_ACCESS(403) - 관리자: 모든 신청 건 저장 가능
selectionStatus가PROPOSAL이 아니면PROVIDED_OPTION_INVALID_STATE(400) — 다른 상태(WAITING/SELECTED/계약완료 등) 에서는 변경 불가
검증
- 모든
choiceIds가 해당 캠페인의 활성(soft-delete 제외) choice 인지 확인. 하나라도 다른 캠페인 / 비활성이면PROVIDED_OPTION_CHOICE_INVALID(400) - 그룹의
selectionType == SINGLE일 때 같은 옵션 그룹에서 2개 이상 선택하면PROVIDED_OPTION_CHOICE_INVALID(400)
저장 동작
- 기존 본인 선택(
TB_APPLICATION_PROVIDED_OPTION_SELECTION의 해당 application 행) 을 전부 삭제 후 재기록 (선택 변경 빈도가 낮고 단순함이 우선)
광고주가 가이드라인을 재저장해 옵션 정의가 바뀌어도, PROPOSAL 신청자가 1건이라도 있으면 sync 단계에서 거부된다. 즉, 크리에이터가 선택한 choice 의 의미가 바뀌는 상황은 발생하지 않는다.
응답
성공 응답 (200 OK)
저장 후의 현재 선택 상태를 반환.
{
"status": 200,
"code": null,
"message": "선택 저장 완료",
"data": {
"applicationId": 9001,
"groups": [
{
"optionId": 1,
"title": "색상",
"selected": [
{ "choiceId": 11, "value": "아이보리" }
]
},
{
"optionId": 2,
"title": "사이즈",
"selected": [
{ "choiceId": 23, "value": "M" }
]
}
]
}
}에러 응답
| 상태 코드 | 코드 | 설명 |
|---|---|---|
400 | PROVIDED_OPTION_INVALID_STATE | selectionStatus 가 PROPOSAL 이 아님 |
400 | PROVIDED_OPTION_CHOICE_INVALID | choice 가 캠페인 소속이 아니거나, SINGLE 그룹에 2개 이상 선택 |
401 | - | 인증 실패 |
403 | UNAUTHORIZED_ACCESS | 본인 신청 아님 + 관리자도 아님 |
404 | APPLICATION_NOT_FOUND | 존재하지 않는 신청 |