상품

상품 수정

등록된 상품 정보를 수정해요. 숫자 필드를 빼면 0 으로 저장돼요.

v1 API 상세: 상품

등록된 상품 정보를 수정해요.

API 엔드포인트

PUThttps://api.bootapi.com/v1/products/:product_idBasic Auth

필요 권한: user:product_update

요청 파라미터

파라미터 타입 필수 설명
product_id String 필수 상품 ID (URL 경로)
name String 선택 상품명
desc String 선택 상품 요약 설명
content String 선택 상품 상세 설명 (HTML 지원)
category_id String 선택 카테고리 ID (키를 보내고 값을 비우면 해제)
display_price Integer 선택 판매가
tax_free_price Integer 선택 비과세 가격
use_stock Boolean 선택 재고 관리 사용 여부
stock Integer 선택 재고 수량
use_discount Boolean 선택 할인 사용 여부
discount_price Integer 선택 할인 금액 또는 할인율. 판매가에서 이만큼 빼요 (discount_price_type 참고)
discount_price_type Integer 선택 할인 단위 — 1 퍼센트 / 2 정액
use_subscription Boolean 선택 구독 상품 여부
subscription_setting_id String 선택 구독 설정 템플릿 ID (save_by: 3 필요)
status_display Boolean 선택 쇼핑몰 노출 여부
status_sale Boolean 선택 판매 상태
save_by Integer 선택 저장 방식 (1 시스템 임시저장 / 2 사용자 임시저장 / 3 사용자 저장). 구독 설정 연결·검증은 3 일 때만 동작
카테고리를 비우려면 키를 보내요

문자열·Boolean 필드와 category_id 는 보내지 않으면 기존 값을 유지해요. category_id 는 키를 보내고 값을 비우면 '카테고리 해제' 로 처리되니, 바꿀 생각이 없으면 키 자체를 빼고 보내요. 숫자 필드는 아래 예외를 확인해요.

구독 설정(subscription_setting_id)을 바꿀 때는 save_by: 3 을 함께 보내야 반영돼요.

알려진 문제 — 보내지 않은 숫자 필드가 0 으로 저장돼요

지금은 숫자 필드를 빼고 보내면 기존 값이 아니라 0 으로 저장돼요. 해당 필드는 display_price·stock·stock_safe·discount_price·discount_price_type·tax_free_price·tax_type·accumulation_point·accumulation_point_type·setup_fee_value·setup_fee_type·time_sale_discount_percent·type 이에요. 검색 태그는 비워지고, 심사 상태(status_review)는 자동 승인으로 바뀌어요. 일반 상품에서 display_price 를 빼면 SERVER_ERROR(HTTP 500)로 실패해요.

수정할 때는 상품 상세로 현재 값을 읽어 위 숫자 필드를 모두 함께 보내요. 상세 응답에서 type·tax_type·discount_price_type 은 문자열로 오니 숫자 값(discount_price_type 은 위 표, 나머지는 커머스 Enum)으로 바꿔 보내요. 상세에 나오지 않는 accumulation_point·accumulation_point_type·time_sale_discount_percent 는 설정했던 값을 다시 보내요.

코드 예제

const { BootpayCommerce } = require('@bootpay/backend-js')

const commerce = new BootpayCommerce({
    client_key: 'your-commerce-client-key',
    secret_key: 'your-commerce-secret-key',
    mode: 'production'
})

const response = await commerce.product.update('67c95e64d01640bb9859c629', {
    name: 'Enterprise 플랜',
    display_price: 59900,
    desc: '기업용 구독 서비스'
})
console.log(response)javascript

응답

성공 응답

{
  "product_id": "67c95e64d01640bb9859c629",
  "save_by": 3
}json

수정된 전체 값이 필요하면 상품 상세를 다시 불러요.

에러 코드

공통 에러

인증·권한 관련 에러는 에러 코드표를 참고해요.

코드 메시지 대처 방법
PRODUCT_NOT_FOUND 존재하지 않는 상품이에요 product_id를 확인해요
PRODUCT_FROZEN 판매금지된 상품은 편집/저장 안돼요. 관리자에게 문의해요 관리자에게 문의해요

문자열·Boolean 필드는 변경할 값만 보내도 돼요. 숫자 필드는 위 초기화 동작을 확인해요.