跳到內容

錯誤

了解 BoxHero API 傳回的錯誤封包,以及如何在程式碼中處理錯誤。

請求失敗時,BoxHero API 會傳回 HTTP 錯誤狀態碼與單一 JSON 錯誤封包:

{
"id": "ex_8f5c0c8e0e0a4a3c9b3f4f2c4f6c8d2a",
"type": "/errors/not-found",
"title": "No item with id 12345 found in this team.",
"correlationID": "rq_01abf3c2b8e44a59be2a9c0f1e7d6a40",
"instance": "/items/12345"
}
欄位說明
id錯誤的唯一 ID:ex_ 後接 32 個小寫十六進位字元。聯絡支援團隊時請附上此 ID。
type穩定且機器可讀的錯誤代碼。請在程式碼中依此欄位而非 title 進行分支處理。
title供人閱讀的英文摘要。措辭可能會變更。
correlationID請求的 ID:rq_ 後接 32 個小寫十六進位字元,與 X-Correlation-Id 回應標頭相同。我們會用它在記錄中尋找您的請求。
instance失敗的資源,例如 /items/12345。路徑不含 /v1 前綴。
code錯誤的細部原因,例如 tx-modify-revision-mismatch。不一定會出現。請先依 type 分支,再依 code 進行更細緻的處理。
errors欄位層級的詳細資訊,會出現在 /errors/invalid-request(400)回應中。每個項目都有一個指出無效欄位位置的 path,以及一則供人閱讀的 message。

部分錯誤還會以額外的頂層欄位傳回相關資源的 id,例如 item_id 或 order_id。

狀態碼意義處理方式
400請求無效,或團隊模式不支援此端點修正請求——errors 中列出了無效欄位。請勿原封不動地重試。
401API 權杖缺少或無效檢查 Authorization 標頭。請參閱驗證。
403BoxHero 拒絕了此變更,例如違反了庫存規則,或您傳送的 revision 已過時查看 code 了解原因。重試前請修正請求或取得最新資料。
404該資源在此團隊中不存在或已被刪除檢查 id。請勿原封不動地重試。
429請求過多等待後重試。請參閱速率限制。

各端點可能傳回的錯誤類型列於 API 參考中對應的端點下。

若要更新或刪除庫存記錄,請傳送您看到的最新 revision。若在此期間有其他人變更了該庫存記錄,API 會以 403 拒絕請求,並將 code 設為 tx-modify-revision-mismatch。請依 code 分支處理:重新取得庫存記錄,確認變更內容,然後使用新的 revision 重試。

const res = await fetch(`https://rest.boxhero-app.com/v1/transactions/${id}`, {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.BOXHERO_API_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ revision, memo: "Recounted" }),
});
if (res.status === 403) {
const error = await res.json();
if (error.code === "tx-modify-revision-mismatch") {
// Fetch the transaction again, check the change, then retry with its new revision.
}
}