錯誤碼
錯誤碼
錯誤回應的形狀,以及完整的錯誤代碼對照表
兩種錯誤形狀
絕大多數的錯誤——驗證失敗、找不到資料、簽章或憑證問題——都是同一個形狀:
error 是 snake_case 字串,依代碼判斷失敗原因。極少數沒有被個別端點攔截、真正非預期的伺服器錯誤,會改用另一個形狀:
遇到這個形狀代表發生了未被歸類的例外,通常是 OrderUp 端的問題,不是請求本身有錯——請聯繫 OrderUp,並附上發生的時間,方便查證。
完整對照表
401:驗證失敗
401 一律代表簽章、時間戳記或 nonce 其中一項驗證沒有通過,從呼叫端角度完全無法區分是哪一項——回應本身不會說明原因,避免洩漏線索給攻擊者。完整的逐項排查清單見「驗證與簽章」最後一節,這裡不重複。
403:憑證未開通此項操作
簽章驗證通過,但你的憑證未開通此項操作。請聯繫 OrderUp 開通。
404:id 不存在,或屬於其他租戶
GET 單筆端點與庫存查詢的 404 一律是 { "error": "not_found" }。
判斷「找不到」請只看 HTTP 狀態碼,不要比對 error 字串本身。更新客戶/商品/規格(PUT /v1/customers/{id}、PUT /v1/products/{id}、PUT /v1/skus/{id})如果 id 不存在或屬於其他租戶,回傳的 404 body 帶的是該資源專屬的簡短說明文字(例如「查無客戶資料」),不是固定的 not_found 代碼;後台使用者的更新端點則一律回傳 not_found。不論哪一種,狀態碼都是 404,依狀態碼判斷比依 error 字串判斷可靠。
409:狀態衝突(僅後台使用者)
409 last_active_admin 是這份文件目前唯一的 409,只會出現在 PUT /v1/internal-users/{id}。請求本身格式正確,衝突的是系統目前的狀態:這個使用者是租戶目前唯一還能登入的系統管理員,若這次寫入把他改成非管理員角色、或把狀態設為 Inactive,租戶會失去所有可登入的系統管理員——這支端點會拒絕該次寫入,而不是靜默放行。