端點和身份驗證
此鏈中的請求都使用相同的端點。您在標題中傳入的內容取決於您的設定 — 選擇您的標籤。
URL:
https://api.zonos.com/graphql
標題:
您在自己的已驗證帳戶下運送自己的訂單。以自己的身份進行身份驗證 — 無需帳戶金鑰。
credentialToken: {{YOUR_API_TOKEN}}
尋找位置: Zonos 儀表板 → 設定 → 整合 → 帳戶金鑰部分。複製API 金鑰行上的權杖;那就是您的 credentialToken。
範例請求
一個完整的 CreateDeclarationShipment 請求,您可以複製和調整 — 變異、其變數和回應 — 針對運送至美國的單個日本郵政包裹 DDP。下方逐步部分會逐項分析每個輸入。
mutation CreateDeclarationShipment($partyInput: [PartyCreateWorkflowInput!]!$itemInput: [ItemCreateWorkflowInput!]!$cartonInput: [CartonCreateWorkflowInput!]!$shipmentRatingInput: ShipmentRatingCreateWorkflowInput!$landedCostInput: LandedCostWorkFlowInput!$shipmentInput: ShipmentCreateWorkflowInput!) { partyCreateWorkflow(input: $partyInput) { id type location { line1 locality postalCode countryCode } } itemCreateWorkflow(input: $itemInput) { id name sku amount currencyCode hsCode } cartonsCreateWorkflow(input: $cartonInput) { id length width height dimensionalUnit weight weightUnit } shipmentRatingCreateWorkflow(input: $shipmentRatingInput) { id amount } landedCostCalculateWorkflow(input: $landedCostInput) { id method currencyCode amountSubtotals { duties taxes fees shipping landedCostTotal } } shipmentCreateWorkflow(input: $shipmentInput) { id trackingDetails { number } shipmentCartons { label { url } } }}逐步說明
下方每個表格上的狀態欄使用這些術語:
- 必需 — 無需請求將失敗。
- 標籤必需 — GraphQL 架構中為選擇性,但產生有效的日本郵政美國標籤所需。
- 條件式 — 取決於另一個欄位而需要(內聯註明)。
- 建議 — 選擇性,但能推動準確的關稅和稅項。
- 選擇性 — 不需要。
1. partyCreateWorkflow
建立涉及寄件的方 — 至少 ORIGIN(寄件從哪裡寄出)和 DESTINATION(買家 / 收件人)。
| 欄位↕ | 狀態↕ | 註記↕ |
|---|---|---|
type | 必需 | ORIGIN、DESTINATION、RETURN 等。 |
location.countryCode | 必需 | ISO-2 國家代碼。 |
location.line1、locality、administrativeAreaCode、postalCode | 標籤必需 | 有效標籤所需的地址欄位。 |
person.firstName、lastName、phone | 標籤必需 | 有效標籤所需的聯繫詳情。 |
person.companyName、email | 選擇性 |
範例負載:
[
{ "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} },
{ "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} }
]
回應會傳回已建立的 Party ID 和已解決的地址欄位。
2. itemCreateWorkflow
建立組成寄件的商品明細項。這些是將出現在商業發票上且會推動已登陸成本計算的 SKU。
| 欄位↕ | 狀態↕ | 註記↕ |
|---|---|---|
currencyCode | 必需 | 單位價格的貨幣。 |
quantity | 必需 | 此商品的單位數量。 |
amount | 條件式 | 單位價格(非總計)。除非提供 totalAmount,否則必需。 |
totalAmount | 選擇性 | amount 的替代品;amount 源自 totalAmount / quantity。 |
hsCode | 建議 | 協調制度關稅代碼。推動關稅率。 |
countryOfOrigin | 建議 | 製造商品的 ISO-2 代碼。推動關稅 / FTA。 |
name、description | 建議 | 面向客戶的產品名稱 + 說明。 |
customsDescription | 選擇性 | 海關說明覆蓋。 |
sku、productId | 選擇性 | 您的內部識別碼。 |
measurements | 選擇性 | 每單位重量 / 尺寸。 |
HS 代碼、原產地國和金額是在步驟 5 中影響關稅/稅項結果最多的三個欄位。
3. cartonsCreateWorkflow
建立實物包裝 — 將容納商品的盒子、聚酯膜或信封。
| 欄位↕ | 狀態↕ | 註記↕ |
|---|---|---|
dimensionalUnit | 必需 | INCH 或 CENTIMETER。 |
weight、weightUnit | 標籤必需 | 日本郵政需要包裝重量。 |
length、width、height | 選擇性 | 外部尺寸。 |
type | 選擇性 | 包裝風格(盒子、聚酯膜、信封)。預設為 PACKAGE。 |
每個紙箱在步驟 6 的運輸商標籤上變成一個包裹。多個紙箱 → 多件寄件,每個紙箱有一個追蹤號碼。
4. shipmentRatingCreateWorkflow
記錄商家向買家收取的費率報價。
| 欄位↕ | 狀態↕ | 註記↕ |
|---|---|---|
amount | 必需 | 買家支付的運送費用。如免運費傳入 0。 |
currencyCode | 必需 | amount 的貨幣。 |
serviceLevelCode | 必需 | 運輸商服務代碼(例如 japan_post.air.parcel)。 |
displayName | 選擇性 | 收據 / 發票的好看名稱。 |
這是買家在結帳時被報價的費率。它作為「運送」小計流入已登陸成本計算,以便針對正確的 CIF 值計算關稅和稅項。
5. landedCostCalculateWorkflow
運行目的地國家的關稅、稅項和費用計算。使用先前步驟中的商品、方和運送成本。
| 欄位↕ | 狀態↕ | 註記↕ |
|---|---|---|
endUse | 必需 | NOT_FOR_RESALE 或 FOR_RESALE。某些目的地針對商業相對於個人最終使用適用不同的費率。 |
tariffRate | 必需 | 如果省略,預設為 ZONOS_PREFERRED。告訴 Zonos 要應用哪個關稅來源/方法。 |
calculationMethod | 建議 | DDP(買家預付)或 DDU(買家在門口支付)。使用 DDP 進行預付。推動 LandedCost.amountSubtotals 是否包含關稅/稅項。 |
currencyCode | 選擇性 | 已登陸成本小計傳回的貨幣。 |
arrivalDate | 選擇性 | 如果提供,FX 費率和關稅時間表會釘在此日期。 |
回應包括 amountSubtotals(duties、taxes、fees、shipping、landedCostTotal) — 這些是您在結帳時向買家顯示的數字,以及在商業發票上列印的數字。
6. shipmentCreateWorkflow
終端步驟 — 建立**Shipment** 實體,產生運輸商標籤,以及(選擇性)商業發票 / 包裝單。
對於日本郵政已驗證帳戶,這也是 Zonos 代表您呼叫日本郵政標籤 API(代碼 52)、注入您的延期支付號碼、建立聲明 ID,並將聲明 ID 連結到日本郵政傳回的追蹤號碼的地方。
關鍵欄位:
| 欄位↕ | 狀態↕ | 註記↕ |
|---|---|---|
serviceLevel | 標籤必需 | 要運送的日本郵政服務(例如 japan_post.air.ems_merchandise)。必須是 japan_post.* 服務級別。 |
generateLabel | 選擇性 | 預設為 true;必須為 true 以傳回標籤。 |
contentsType | 建議 | SALE_OF_GOODS、GIFT、DOCUMENTS、SAMPLE 等。推動海關處理。 |
nonDelivery | 選擇性 | 如果交付失敗,運輸商應執行的操作:RETURN、ABANDON、FORWARD。 |
references | 選擇性 | 商家提供的參考號碼,列印在標籤和商業發票上。請參閱下文。 |
declaredValue / isDeclaredValue | 選擇性 | 寄件的保險價值。 |
shipmentConsolidationId | 選擇性 | 當此寄件是批次分派的一部分時使用。 |
references 子輸入
這些欄位列印在運輸商標籤和/或商業發票上。使用它們來顯示收件人或海關當局需要看到的 PO 號、許可號和自由文字備註。
| 欄位↕ | 狀態↕ | 註記↕ | 長度↕ |
|---|---|---|---|
invoiceNumber | 選擇性 | 商家發票號。 | — |
purchaseOrderNumber | 選擇性 | 商家 PO 號。 | — |
licenseNumber | 選擇性 | 出口/進口許可號。 | — |
certificateNumber | 選擇性 | 海關證書號。 | — |
paymentConditions | 選擇性 | 商業發票上顯示的免費文字支付條款。 | 限制為 200 個字符 — 較長的值會在列印發票上溢出。 |
customsRemarks | 選擇性 | 自由文字海關備註。 | — |
taxCode | 選擇性 | 列印在標籤上的自訂稅代碼。 | — |
回應
傳回的 Shipment 上有趣的欄位是:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}
}
}
trackingDetails.number 是日本郵政追蹤號碼。
label 物件可以用兩種方式傳回標籤 — 請求任一方式符合您的工作流程(或兩者都要):
| 欄位↕ | 傳回↕ | 使用時機↕ |
|---|---|---|
url | 一個到已呈現標籤檔案 (PDF) 的託管連結,準備好下載或列印。 | 您想交付一個連結 — 開啟它、透過電郵發送或稍後取回檔案,無需在負載中保留它。 |
labelImage | Base64 編碼的標籤影像 (PNG/PDF/ZPL),內聯於回應中。 | 您想直接在回應中獲得標籤位元組,以附加到履行工作流程或儲存到您的 WMS。 |
僅選擇您需要的欄位。請求 url 可保持回應較小;請求 labelImage 會內聯傳回完整標籤,因此您無需第二次往返來取回它。上方範例請求 url。
錯誤處理
- 驗證錯誤(遺漏的必需欄位、無效的國家代碼等)會進入標準 GraphQL
errors陣列並中止鏈的其餘部分。 - 日本郵政錯誤(標籤產生失敗、無效地址等)出現為
shipmentCreateWorkflow上的 GraphQL 錯誤。如果需要重試,請聯繫支援 — 建議的路徑是使用已更正的輸入重新提交完整變異。
權限
每個步驟都獨立保護。您的 API 金鑰必須擁有鏈中每個實體的寫入範圍(ITEM_WRITE、CARTON_WRITE、SHIPMENT_RATING_WRITE、LANDED_COST_WRITE、SHIPMENT_WRITE)。已驗證帳戶上的標準商家角色可授予所有這些。
建立單份寄件
CreateDeclarationShipmentGraphQL 工作流在一次往返中將日本郵政寄件從原始輸入轉換為可列印的標籤。CreateDeclarationShipment將六個*Workflow變異鏈接到單個 GraphQL 請求中。每一步都基於前面步驟提供的資料,所有步驟一起提交,以便在一次往返中建立完整的寄件:Workflow變異的設計可連鎖:您無需將 ID 從一個步驟引入下一個步驟,也無需為每個步驟發送單獨的請求。提交整份文件,取回最終的Shipment。當最終步驟上的
serviceLevel是日本郵政服務級別(japan_post.*)時,Zonos 代表您使用已驗證帳戶的延期支付號碼呼叫日本郵政標籤 API(代碼 52),產生標籤和追蹤號碼,建立聲明 ID,並將它們連結 — 全部在最終shipmentCreateWorkflow步驟中進行。