Glowb Dev Docs
Admin APIAdmin Finance API

PATCH /ai/admin/finance/budget/{budgetId}/amount

캠페인 LOCK 예산 금액 수정 (audit row 생성)

캠페인 LOCK 예산 금액 수정

크리에이터 제안별로 LOCK 된 CampaignBudget.amount 를 직접 변경합니다. 글로벌 잔액(Business.remainCredit) 은 동기화하지 않으며, 변경 diff 는 CreditTransaction(transactionType=BUDGET_ADJUST) audit row 로 남습니다.

글로벌 잔액 동기화가 필요하면 관리자가 별도로 POST /ai/admin/finance/collab/{collabNo}/credit 또는 다른 차감 흐름으로 보정해야 합니다.

HTTP 요청

PATCH /ai/admin/finance/budget/{budgetId}/amount?adminId={adminId}
Authorization: Bearer {access_token}
Content-Type: application/json

Path / Query Parameters

파라미터위치타입필수설명
budgetIdpathLongCampaignBudget.id
adminIdqueryString아니오처리자 ID

Request Body

{
  "amount": 250000,
  "reason": "RESHOOT_ADDITIONAL",
  "memo": "재촬영 1회 추가로 5만원 감액"
}
필드타입필수설명
amountInteger새 LOCK 금액 (0 이상)
reasonCreditTransactionReason사유
memoString조건부reason=ETC 일 때 필수

동작

oldAmount = budget.amount
diff      = newAmount - oldAmount     // (양수: 증액 / 음수: 감액)

budget.amount = newAmount             // 직접 mutate (status / unlock 시각 변경 없음)
save budget

audit = CreditTransaction(
    transactionType = BUDGET_ADJUST,
    amount          = diff,            // 음수면 감액, 양수면 증액
    balanceAfter    = business.remainCredit,  // 변동 없음 → 스냅샷
    collabNo        = budget.collabNo,
    description     = "CampaignBudget#{id} 금액 oldAmount → newAmount",
    reason, memo, createdBy
)

응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "예산 금액 수정 완료",
  "data": {
    "id": 2120,
    "transactionType": "BUDGET_ADJUST",
    "amount": -50000,
    "balanceAfter": 1500000,
    "collabNo": 482,
    "candyPaymentId": null,
    "description": "CampaignBudget#88 금액 300000 → 250000",
    "reason": "RESHOOT_ADDITIONAL",
    "memo": "재촬영 1회 추가로 5만원 감액",
    "reverseOfTxId": null,
    "createdAt": "2026-05-28T14:00:00",
    "createdBy": "admin01"
  }
}

에러

상태조건
400amount < 0, reason 누락, ETC + memo 누락
404예산 없음

API 테스트

On this page