更新規格

View as Markdown
依 id 更新規格,路徑上的 id 永遠優先於 body 帶的 id,即使 body 另外指定了別的 id 也一律以路徑為準。更新是部分合併,只送有異動的欄位;省略的欄位維持原值,不會被清空,省略 productId 會保留規格目前所屬的商品,帶新值則會把規格移到另一個商品底下。id 不存在或屬於其他租戶時回傳 404;組合品(Bundle)型別的規格一律無法透過本端點更新,回傳 400 bundle SKU cannot be updated through this API。

Authentication

X-Signaturestring

每個 /v1 請求都必須帶 X-Client-Id、X-Timestamp、X-Nonce 與 X-Signature 四個標頭。X-Signature 是以 client secret 對 canonical string 做 HMAC-SHA256 後的 Base64。canonical string 的組成、可複製的簽章範例與 401 排查步驟,請參閱「驗證與簽章」。

Path parameters

idlongRequired

要更新的規格序號。這個值永遠優先於 body 裡的 id,兩者不一致時一律以路徑為準。不存在或屬於其他租戶時,回傳 404;error 是該資源的簡短說明,而非 not_found。

Request

This endpoint expects an object.
idlong or nullOptional

規格序號。帶 id 時一律視為更新該筆規格,不會再比對 outerSysCode;省略時改依 productId 與 outerSysCode 判斷新增或更新。PUT /v1/skus/{id} 會忽略這裡的值,一律以路徑上的 id 為準。

productIdlong or nullOptional

對應的商品序號,必須指向既有商品。新增時為必填,省略或帶入非正整數回傳 400 productId is required to create a SKU;更新時省略會保留規格目前所屬的商品,帶新值則會把規格改到另一個商品底下。outerSysCode 的去重比對也是以這個欄位限定範圍,同一組 outerSysCode 換一個 productId 視為完全不同的比對對象。

outerSysCodestring or nullOptional

ERP 端的規格代碼,用來在同一個 productId 底下與既有規格比對、去重,不同商品下的相同代碼不會互相匹配。新增時為必填,省略回傳 400 outerSysCode is required to create a SKU;更新時省略保留現有值。長度上限 50 字元,超過回傳 400 outer_sys_code_too_long。

namestring or nullOptional

名稱。新增時省略視為空字串;更新時省略保留現有值。長度上限 100 字元,超過回傳 400 name_too_long。

barcodestring or nullOptional

條碼。查詢時是精確比對,與 outerSysCode、name 的子字串比對不同,詳見 listSkus 端點說明。新增時省略視為空字串;更新時省略保留現有值。長度上限 50 字元,超過回傳 400 barcode_too_long。

warehousestring or nullOptional

倉別。新增時省略視為空字串;更新時省略保留現有值。長度上限 50 字元,超過回傳 400 warehouse_too_long。

unitstring or nullOptional

商品單位。新增時省略視為空字串;更新時省略保留現有值。長度上限 50 字元,超過回傳 400 unit_too_long。

specstring or nullOptional

規格內容(例如「12入」「500g」)。新增時省略視為空字串;更新時省略保留現有值。長度上限 50 字元,超過回傳 400 spec_too_long。

pricedouble or nullOptional

價格。新增時省略視為 0;更新時省略保留現有值。

sellPricedouble or nullOptional

賣價。新增時省略視為 0;更新時省略保留現有值。

quantityPrecisioninteger or nullOptional

數量精度(0 為整數,1 至 4 為小數位數)。新增時省略視為 0;更新時省略保留現有值。

Response

OK
idlongOptional

新增或更新成功後,該筆資料的 id。

Errors

401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
500
Internal Server Error