Skip to Content
API v1.7.0 Released - Settlement order number query + partial shipment support
API ReferenceInventoryConfirm Inventory

재고 확인 및 공급가 사전 등록

주문 품목의 재고 상태를 확인하고, 선택적으로 공급가를 사전 등록합니다.

Playground에서 테스트


Endpoint

POST /vendor-api/inventory/confirm

요청 파라미터

필드타입필수설명
confirmationsarrayO확인 항목 배열 (최대 100건)
confirmations[].ord_prd_nostringO주문품목번호 (세트 구성품은 {주문품목번호}^s{n}, 공통 규격)
confirmations[].stock_availablebooleanO재고 가용 여부 (true: 출고 가능, false: 출고 불가)
confirmations[].unavailable_reasonstring조건부출고 불가 사유 (stock_available=false 시 필수)
confirmations[].memostring-메모 (최대 500자)
confirmations[].supply_priceobject-공급가 정보 (공통 스키마 참조)

unavailable_reason 허용값

값설명
out_of_stock재고 부족 (품절)
reserved다른 주문에 예약됨
damaged상품 파손
discontinued단종
other기타 사유

요청 예시

curl -X POST "https://brightmall-backend.certi.life/vendor-api/inventory/confirm" \ -H "Content-Type: application/json" \ -H "X-Vendor-Api-Key: <발급받은 API 키>" \ -H "X-Vendor-Id: 01KC51ST1WSTAET481SHPH3PSY" \ -d '{ "confirmations": [ { "ord_prd_no": "202601220157_000020196_[1]", "stock_available": true, "supply_price": { "unit_price": 75000, "quantity": 2, "total_amount": 150000 } }, { "ord_prd_no": "202601220157_000020196_[2]", "stock_available": false, "unavailable_reason": "out_of_stock", "memo": "재입고 예정일: 2026-02-15" } ] }'

응답 예시

{ "request_id": "req_mkp3inv_abc123", "timestamp": "2026-01-29T07:00:00.000Z", "success_count": 2, "failure_count": 0, "available_count": 1, "unavailable_count": 1, "results": [ { "ord_prd_no": "202601220157_000020196_[1]", "success": true, "stock_available": true, "previous_status": "pending", "new_status": "preparing", "supply_price_recorded": true, "message": "재고 확인 및 공급가 등록 완료" }, { "ord_prd_no": "202601220157_000020196_[2]", "success": true, "stock_available": false, "previous_status": "pending", "new_status": "cancel_requested", "supply_price_recorded": false, "message": "재고 부족 확인 (취소 요청 접수)" } ] }

응답 필드 설명

필드타입설명
success_countnumber처리 성공 건수
failure_countnumber처리 실패 건수
available_countnumber재고 가용 건수
unavailable_countnumber재고 불가 건수
results[].ord_prd_nostring보낸 주문품목번호 그대로
results[].base_ord_prd_nostring(v1.9.0) 세트 구성품 번호로 보낸 경우 몰 주문품목번호
results[].successboolean처리 성공 여부
results[].stock_availableboolean재고 가용 여부
results[].previous_statusstring변경 전 품목 상태
results[].new_statusstring변경된 품목 상태
results[].supply_price_recordedboolean공급가를 품목에 반영했는지 (구성품 번호로 보낸 공급가는 false — 검토용 기록만)
results[].quantity_mismatchobject(v1.9.0) supply_price.quantity 가 몰 주문 수량과 다를 때 { expected, received } — 거절 아님, 금액은 몰 수량 x 단가
results[].messagestring처리 결과 메시지
results[].error_codestring실패 사유. 실패한 항목은 처리되지 않으니 고쳐서 다시 보내 주세요


Endpoint

PUT /vendor-api/inventory/confirm

주문 한 건에 대해 이 요청이 그 주문의 내 품목 전체 상태라고 보내는 방식(snapshot)입니다.


요청 파라미터

필드타입필수설명
ord_nostringO주문번호
confirmationsarrayO확인 항목 배열 (최대 100건) — POST와 동일 스키마
confirmations[].ord_prd_nostringO주문품목번호 (세트 구성품은 {주문품목번호}^s{n})
confirmations[].stock_availablebooleanO재고 가용 여부
confirmations[].unavailable_reasonstring조건부출고 불가 사유 (stock_available=false 시 필수)
confirmations[].memostring-메모
confirmations[].supply_priceobject-공급가 정보 (공통 스키마)

동작

품목처리
요청에 있는 품목POST 와 같은 처리
요청에 없는 내 품목 (상태 없음·pending·preparing)상태는 그대로 두고 입고 대기 표시(confirm_excluded_at)
배송 이후(shipped·delivered)·취소 요청 품목변경 없음

입고 대기 표시가 있는 품목은 「결제완료」 주문 조회에 다시 나오지 않고(같은 품목을 두 번 수집하지 않도록) 거래명세서에서 빠집니다. 입고 후 다음 PUT 또는 POST 재고 확인에 넣으면 확인 처리되고 표시가 지워집니다. 취소되지 않습니다 — 예전(v0.2.0)의 cancel_requested 자동 전환·recovered 회복은 없어졌습니다. 응답 필드 이름 omitted_and_cancelled 는 호환을 위해 그대로입니다.

세트 구성품 번호(^s{n})는 몰 주문품목번호로 셉니다. 구성품이 하나라도 요청에 있으면 그 몰 품목은 빠진 품목이 아닙니다.

빠진 품목 표시를 하지 않는 경우 (v1.9.0)

요청 항목 중 하나라도 아래 코드로 실패하면 이 요청이 주문 전체를 나타낸다고 볼 수 없으므로 빠진 품목 표시를 하지 않습니다(omitted_count: 0, omission_skipped_reason 에 이유). 정상 항목은 그대로 처리됩니다. 실패한 항목을 고쳐 PUT 을 다시 보내 주세요.

코드뜻
INVALID_ORD_PRD_NO번호를 읽을 수 없음 ({ord_no}_[n] 또는 {ord_no}_[n]^s{m} 이 아님). v1.9.0 전에는 ORD_PRD_NO_MISMATCH 로 왔습니다
ORD_PRD_NO_MISMATCH다른 주문(ord_no 와 다른 주문번호)의 품목번호
LINE_ITEM_NOT_FOUND이 주문에 없는 품목번호
UNAUTHORIZED다른 입점사 품목
ORDER_NOT_FOUND주문을 찾지 못함

그 밖의 실패(INVALID_SUPPLY_PRICE·INVALID_INVENTORY_STATUS·SUB_ITEM_CONFLICT 등)는 품목은 찾은 경우라 요청에 없는 품목만 표시합니다. 실패한 그 품목은 요청에 있었으므로 표시하지 않고, 바뀌지도 않습니다.

unavailable_reason 허용값

값설명
out_of_stock재고 부족 (품절)
reserved다른 주문에 예약됨
damaged상품 파손
discontinued단종
other기타 사유

요청 예시 — 세트 구성품 2개 + 일반 품목 1개 (품목 [3] 은 입고 대기)

curl -X PUT "https://brightmall-backend.certi.life/vendor-api/inventory/confirm" \ -H "Content-Type: application/json" \ -H "X-Vendor-Api-Key: $API_KEY" \ -H "X-Vendor-Id: $VENDOR_ID" \ -d '{ "ord_no": "202610301742_000028212", "confirmations": [ { "ord_prd_no": "202610301742_000028212_[1]^s1", "stock_available": true, "supply_price": { "unit_price": 1100, "quantity": 12, "total_amount": 13200 } }, { "ord_prd_no": "202610301742_000028212_[1]^s2", "stock_available": true, "supply_price": { "unit_price": 1100, "quantity": 12, "total_amount": 13200 } }, { "ord_prd_no": "202610301742_000028212_[2]", "stock_available": true, "supply_price": { "unit_price": 7000, "quantity": 3, "total_amount": 21000 } } ] }'

응답 예시

{ "request_id": "req_put_abc123", "timestamp": "2026-10-30T10:00:00.000Z", "success_count": 3, "failure_count": 0, "available_count": 3, "unavailable_count": 0, "results": [ { "ord_prd_no": "202610301742_000028212_[1]^s1", "base_ord_prd_no": "202610301742_000028212_[1]", "success": true, "stock_available": true, "previous_status": "pending", "new_status": "preparing", "supply_price_recorded": false, "message": "재고 확인 완료 (세트 구성품 2건을 주문품목 202610301742_000028212_[1] 한 줄로 처리 — 구성품 공급가는 검토용으로만 기록, 몰 공급가 유지)" }, { "ord_prd_no": "202610301742_000028212_[1]^s2", "base_ord_prd_no": "202610301742_000028212_[1]", "success": true, "stock_available": true, "previous_status": "pending", "new_status": "preparing", "supply_price_recorded": false, "message": "재고 확인 완료 (세트 구성품 2건을 주문품목 202610301742_000028212_[1] 한 줄로 처리 — 구성품 공급가는 검토용으로만 기록, 몰 공급가 유지)" }, { "ord_prd_no": "202610301742_000028212_[2]", "success": true, "stock_available": true, "previous_status": "pending", "new_status": "preparing", "supply_price_recorded": true, "message": "재고 확인 및 공급가 등록 완료" } ], "omitted_count": 1, "omitted_and_cancelled": [ { "ord_prd_no": "202610301742_000028212_[3]", "previous_status": "pending", "new_status": "pending", "message": "Item omitted from PUT confirmations (status kept, marked confirm_excluded_at; include it in a later PUT/POST confirm when stock arrives)" } ] }

응답 예시 — 읽을 수 없는 번호 (HTTP 400, 아무 품목도 바뀌지 않음)

{ "success_count": 0, "failure_count": 1, "results": [ { "ord_prd_no": "202610301742_000028212_[1]-3", "success": false, "stock_available": true, "message": "Invalid ord_prd_no format: 202610301742_000028212_[1]-3 (expected {ord_no}_[n], or {ord_no}_[n]^s{m} for a set sub-item)", "error_code": "INVALID_ORD_PRD_NO" } ], "omitted_count": 0, "omitted_and_cancelled": [], "omission_skipped_reason": "Omitted lines were NOT marked because some items could not be matched to this vendor's lines on order 202610301742_000028212: 202610301742_000028212_[1]-3(INVALID_ORD_PRD_NO). Fix those items and resend the PUT. ..." }

응답 필드 설명 (PUT 추가분)

필드타입설명
omitted_countnumber이번 PUT 에 없어서 입고 대기로 표시된 품목 수
omitted_and_cancelled[]array그 품목 목록 (이름은 호환용 — 취소되지 않음)
omitted_and_cancelled[].ord_prd_nostring주문품목번호
omitted_and_cancelled[].previous_statusstring상태
omitted_and_cancelled[].new_statusstringprevious_status 와 같음 (상태 유지)
omitted_and_cancelled[].messagestring메시지
omission_skipped_reasonstring(v1.9.0) 빠진 품목 표시를 하지 않았을 때 이유. 표시했으면 없음

에러

코드상태설명
ORDER_NOT_FOUND_OR_NO_VENDOR_ITEMS404이 주문에 처리 전(상태 없음·pending·preparing) 내 품목이 없음
INVALID_ORD_PRD_NO400/207 (항목)번호를 읽을 수 없음 — 빠진 품목 표시 안 함
ORD_PRD_NO_MISMATCH400/207 (항목)confirmations 의 ord_prd_no 가 ord_no 에 속하지 않음 — 빠진 품목 표시 안 함
SUB_ITEM_CONFLICT400/207 (항목)같은 품목의 세트 구성품끼리 stock_available 이 다름 — 그 품목은 처리 안 됨

주의사항

  • 공급가를 입력하면 메타데이터만 저장되며, 정산 생성은 배송 등록/수정 시점에서 발생합니다
  • shipped/delivered 품목은 PUT 누락이어도 무변경입니다 (post-shipment 가드)
  • 다른 vendor 품목, 자사몰(DNTM) 품목, order/order_item/결제 정보는 절대 손대지 않습니다

참고사항

  • 이 API는 선택사항이지만, 공급가를 사전에 등록하면 거래명세서를 미리 확인할 수 있습니다.
  • POST: 멱등성 지원. 동일한 공급가와 수량이면 기존 상태 유지, 변경되면 메타데이터 업데이트.
  • PUT: Snapshot replace. confirmations에 명시한 품목만 처리, 누락된 상태 없음·pending·preparing 품목은 상태 그대로 입고 대기 표시(취소 아님). 주문 품목으로 찾지 못한 항목이 있으면 표시하지 않음.
  • 출고 불가(stock_available: false)로 등록한 품목은 번복할 수 없습니다. 취소 프로세스가 즉시 시작되므로, 재고 유무를 전송하기 전에 반드시 실재고를 확인해주세요.
Last updated on