partyCreateWorkflow → describe origin + destination parties
itemCreateWorkflow → describe the line items
cartonsCreateWorkflow → describe the physical packaging
shipmentRatingCreateWorkflow → record the carrier rate quote
landedCostCalculateWorkflow → calculate duties / taxes / fees
shipmentCreateWorkflow → create the shipment + label
Workflow mutation は 連鎖する ように設計されています。ステップ間で ID を受け渡す必要はなく、ステップごとに個別のリクエストを送信する必要もありません。ドキュメント全体を送信すれば、最終的な Shipment が返されます。
最終ステップの serviceLevel が Japan Post のサービスレベル(japan_post.*)である場合、Zonos はお客様の Verified Account の Later Pay Number を使用して代わりに Japan Post Label API(コード 52)を呼び出し、ラベルとトラッキング番号を生成し、Declaration ID を作成してそれらを紐付けます — これらはすべて最終の shipmentCreateWorkflow ステップ内で行われます。
Japan Post の Verified Account の場合、このステップで Zonos が代わりに Japan Post Label API(コード 52)を呼び出し、Later Pay Number を挿入し、Declaration ID を作成して、Japan Post から返されるトラッキング番号に Declaration ID を紐付けます。
主なフィールド:
Field↕
Status↕
Notes↕
serviceLevel
ラベルに必須
発送に使用する Japan Post のサービスです(例: japan_post.air.ems_merchandise)。japan_post.* のサービスレベルである必要があります。
小型包装物 と 国際航空パケット の比較。 どちらも上限は 2 kg です。japan_post.air.packet は Japan Post の追跡可能な小型包装物サービスです。japan_post.air.small_packet は追跡なしの同等サービスです。軽量な荷物で追跡が必要な場合は japan_post.air.packet を使用してください。
単一出荷の作成
単一出荷の作成
CreateDeclarationShipmentGraphQL ワークフローは、Japan Post の出荷を生データから印刷可能なラベルまで、1 回のラウンドトリップで処理します。CreateDeclarationShipmentは、6 つの*Workflowmutation を 1 つの GraphQL リクエストに連結します。各ステップは前のステップで提供されたデータを基に構築され、すべてがまとめて送信されることで、1 回のラウンドトリップで完全な出荷を作成できます。Workflowmutation は 連鎖する ように設計されています。ステップ間で ID を受け渡す必要はなく、ステップごとに個別のリクエストを送信する必要もありません。ドキュメント全体を送信すれば、最終的なShipmentが返されます。最終ステップの
serviceLevelが Japan Post のサービスレベル(japan_post.*)である場合、Zonos はお客様の Verified Account の Later Pay Number を使用して代わりに Japan Post Label API(コード 52)を呼び出し、ラベルとトラッキング番号を生成し、Declaration ID を作成してそれらを紐付けます — これらはすべて最終のshipmentCreateWorkflowステップ内で行われます。エンドポイントと認証
このチェーンのリクエストはすべて同じエンドポイントを使用します。ヘッダーに渡す内容はセットアップによって異なります — 該当するタブを選択してください。
URL:
ヘッダー:
自社の Verified Account で自社の注文を発送します。自分自身として認証してください — account key は不要です。
確認場所: Zonos Dashboard → Settings → Integrations → Account Key セクション。API key の行にあるトークンをコピーしてください。それがあなたの
credentialTokenです。リクエスト例
コピーして調整できる、完全な
CreateDeclarationShipmentリクエストです — mutation、その variables、および response を、米国向けに DDP で発送する単一の Japan Post 荷物の例として示します。各入力の詳細は、以下のステップごとの解説セクションで説明します。mutation CreateDeclarationShipment($partyInput: [PartyCreateWorkflowInput!]!$itemInput: [ItemCreateWorkflowInput!]!$cartonInput: [CartonCreateWorkflowInput!]!$shipmentRatingInput: ShipmentRatingCreateWorkflowInput!$landedCostInput: LandedCostWorkFlowInput!$shipmentInput: ShipmentCreateWorkflowInput!) {partyCreateWorkflow(input: $partyInput) {idtypelocation {line1localitypostalCodecountryCode}}itemCreateWorkflow(input: $itemInput) {idnameskuamountcurrencyCodehsCode}cartonsCreateWorkflow(input: $cartonInput) {idlengthwidthheightdimensionalUnitweightweightUnit}shipmentRatingCreateWorkflow(input: $shipmentRatingInput) {idamount}landedCostCalculateWorkflow(input: $landedCostInput) {idmethodcurrencyCodeamountSubtotals {dutiestaxesfeesshippinglandedCostTotal}}shipmentCreateWorkflow(input: $shipmentInput) {idtrackingDetails {number}shipmentCartons {label {url}}}}ステップごとの解説
以下の各テーブルの
Status列では、次の用語を使用しています:1.
partyCreateWorkflow出荷に関わる パーティ を作成します — 最低限、
ORIGIN(出荷元)とDESTINATION(購入者 / consignee)が必要です。typeORIGINとDESTINATIONの 2 つです。他にも(CONSIGNEE、EXPORTER、IMPORTER_OF_RECORD、PAYORなど)が存在しますが、ここでは使用しません。location.countryCodelocation.line1,locality,administrativeAreaCode,postalCodeperson.firstName,lastName,phoneperson.companyName,emailペイロードの例:
[ { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} }, { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} } ]レスポンスには、作成された
Partyの ID と解決済みの address フィールドが返されます。2.
itemCreateWorkflow出荷を構成する line item(品目) を作成します。これらは commercial invoice に記載され、landed cost の計算に使用される SKU です。
currencyCodequantityamounttotalAmountが指定されない限り必須です。totalAmountamountの代わりに使用できます。amountはtotalAmount / quantityから算出されます。hsCodecountryOfOriginname,descriptioncustomsDescriptionsku,productIdmeasurementsHS code、country of origin、amount の 3 つが、ステップ 5 の関税・税金の算出結果に最も大きく影響するフィールドです。
3.
cartonsCreateWorkflow物理的な包装 — 品目を収める箱、ポリバッグ、または封筒を作成します。
dimensionalUnitINCHまたはCENTIMETERです。weight,weightUnitlength,width,heighttypePACKAGEです。各 carton は、ステップ 6 の配送業者ラベル上で 1 つの荷物になります。carton が複数ある場合 → carton ごとに 1 つのトラッキング番号を持つ複数個口の出荷になります。
4.
shipmentRatingCreateWorkflowマーチャントが購入者に請求する配送料の レート見積もり を記録します。
amount0を渡してください。currencyCodeamountの通貨です。serviceLevelCodejapan_post.air.parcel)。全リストは Japan Post サービスレベル を参照してください。displayNameこれは、チェックアウト時に購入者に提示されたレートです。この値は landed cost の計算における「shipping」小計として使用され、正しい CIF 価格に基づいて関税と税金が算出されます。
5.
landedCostCalculateWorkflow関税・税金・手数料の計算 を配送先の国に対して実行します。直前のステップで作成した items、parties、配送料を使用します。
endUseNOT_FOR_RESALEまたはFOR_RESALEです。配送先によっては、商用と個人利用で異なるレートが適用される場合があります。tariffRateZONOS_PREFERREDがデフォルトになります。Zonos に適用すべき関税ソース/算出方法を指示します。calculationMethodDDP(購入者が事前払い)またはDDU(購入者が受け取り時に支払う)です。前払いの場合はDDPを使用してください。LandedCost.amountSubtotalsに関税・税金が含まれるかどうかに影響します。currencyCodearrivalDateレスポンスには
amountSubtotals(duties、taxes、fees、shipping、landedCostTotal)が含まれます — これらはチェックアウト時に購入者へ表示し、commercial invoice に印刷する数値です。6.
shipmentCreateWorkflow最終ステップです —
Shipmentエンティティを作成し、配送業者ラベル を生成し、(任意で)commercial invoice / packing slip も生成します。Japan Post の Verified Account の場合、このステップで Zonos が代わりに Japan Post Label API(コード 52)を呼び出し、Later Pay Number を挿入し、Declaration ID を作成して、Japan Post から返されるトラッキング番号に Declaration ID を紐付けます。
主なフィールド:
serviceLeveljapan_post.air.ems_merchandise)。japan_post.*のサービスレベルである必要があります。generateLabeltrueです。ラベルを返すにはtrueである必要があります。contentsTypeSALE_OF_GOODS、ECOMMERCE_GOODS、COMMERCIAL_GOODS、COMMERCIAL_SAMPLE、RETURNED_GOODS、GIFT、DOCUMENTS、OTHERのいずれかです。nonDeliveryreferencesdeclaredValue/isDeclaredValueshipmentConsolidationIdcontentsTypeについては、Verified Account のトラフィックで最も一般的な値はECOMMERCE_GOODS(消費者への販売、BtoC)とCOMMERCIAL_GOODS(企業間の販売、BtoB)の 2 つです。これらは、Zonos が Japan Post のラベル呼び出しで送信するpkgTypeを決定するため、この選択はラベルだけでなく customs declaration に印刷される内容も変わります。nonDeliveryサブ入力荷物を配達できない場合(consignee による受取拒否、国境での拒否、宛先不明による配達不能など)に Japan Post が取るべき対応を指定します。
optionは、これら 4 つの値のみを受け付けます。RETURNという値は存在しません — 荷物が いつ 返送されるかはRETURN_AFTER_RETENTIONまたはRETURN_IMMEDIATELYで指定します。option↕RETURN_AFTER_RETENTIONRETURN_IMMEDIATELYFORWARDABANDONAPI では 2 つの return バリアントを個別に公開していますが、Dashboard の Return オプションは両方をカバーします。
transportMethodはAIRまたはMOST_ECONOMICALを受け付け、返送される荷物の輸送方法を設定します。これは 2 つのRETURN_*オプションにのみ適用されます — Dashboard では、Return が選択されている場合にのみ対応する Return method フィールドが表示されます。{ "nonDelivery": { "option": "RETURN_AFTER_RETENTION", "transportMethod": "MOST_ECONOMICAL" } }Dashboard の Create label ダイアログにある If undeliverable ピッカーも同じフィールドに書き込むため、Dashboard で作成したラベルと API 経由で作成したラベルは同じ挙動になります。
referencesサブ入力これらのフィールドは、配送業者ラベルや commercial invoice に印刷されます。consignee や税関当局が確認する必要のある PO 番号、license 番号、自由記述の remarks を表示するために使用します。
invoiceNumberpurchaseOrderNumberlicenseNumbercertificateNumberpaymentConditionscustomsRemarkstaxCodeレスポンス
返される
Shipmentの中で注目すべきフィールドは次のとおりです:{ id trackingDetails { number } shipmentCartons { label { url labelImage } } }trackingDetails.numberは Japan Post のトラッキング番号です。labelオブジェクトは、ラベルを 2 つの方法で返すことができます — ワークフローに合う方(または両方)をリクエストしてください:urllabelImage必要なフィールドのみを選択してください。
urlをリクエストするとレスポンスを小さく保てます。labelImageをリクエストすると、ラベル全体がインラインで返されるため、取得のための 2 回目のラウンドトリップが不要になります。上記の例ではurlをリクエストしています。Japan Post サービスレベル
これらのコードのいずれかを、
shipmentRatingCreateWorkflowのserviceLevelCodeとして渡します。サービスレベルコードはアンダースコアではなく ドット を使用します。エラーメッセージや内部的な参照ではアンダースコア形式(
japan_post_air_parcel)を見かけることがありますが、これは有効な入力ではありません。航空便
japan_post.air.ems_documents1-0japan_post.air.ems_merchandise1-1japan_post.air.parcel1-5japan_post.air.packet1-8japan_post.air.small_packet1-9japan_post.air.printed_matter_registered1-Ajapan_post.air.printed_matter1-Bjapan_post.air.letter_registered1-Cjapan_post.air.letter1-D船便
japan_post.surface.parcel2-5japan_post.surface.small_packet2-9japan_post.surface.printed_matter2-Bjapan_post.surface.letter2-D類似サービスの選び方
小型包装物 と 国際航空パケット の比較。 どちらも上限は 2 kg です。
japan_post.air.packetは Japan Post の追跡可能な小型包装物サービスです。japan_post.air.small_packetは追跡なしの同等サービスです。軽量な荷物で追跡が必要な場合はjapan_post.air.packetを使用してください。書留バリアント。 書状と印刷物については、書留(registered)版のサービスによって追跡機能が追加されます。
japan_post.air.printed_matterとjapan_post.air.letterは、それ自体には追跡機能を含みません。非推奨のコード
japan_post.air.epacket_lightは、以前の International e-Packet Light です。Japan Post は 2026 年 6 月 1 日に、このサービスを 国際航空パケット に改称し、対象を全ての国・地域に拡大しました。サービス自体に変更はありません。旧コードは今も解決されるため、既存の連携はそのまま動作しますが、新規で実装する場合は
japan_post.air.packetを使用してください。輸送モードコード
japan_post.air、japan_post.surface、japan_post.economy_air、japan_post.customも解決されますが、これらは特定の郵便プロダクトではなく、輸送モードやフォールバックを示すものです。通常の出荷では、上記のサービスコードのいずれかを使用してください。送信するコードを検証する
認識されない
serviceLevelCodeは エラーになりません。リクエストはerrors配列を含まない HTTP 200 を返し、serviceLevelはnullとして返され、shipping が landed cost の合計から抜け落ちます — つまり、レスポンス自体は正しく見えても金額が誤っている状態になります。合計金額を信頼する前に、必ず
shipmentRatingCreateWorkflow.serviceLevelが null でないことを確認してください。現在のリストは、いつでも次の方法で取得できます:
{ serviceLevels(carrier: "carrier_00004c9b-9431-4518-bfbc-b9f8476335b1") { code name } }このクエリは carrier の ID を受け取ります。carrier コード
japan_postを渡すと、エラーなく空のリストが返されます。エラー処理
errors配列で返され、チェーンの残りの処理は中断されます。shipmentCreateWorkflow上の GraphQL エラーとして返されます。リトライが必要な場合はサポートにお問い合わせください — 推奨される方法は、修正した入力で mutation 全体を再送信することです。VALIDATION_INVALID_TYPE_VARIABLE{ "errors": [ { "message": "invalid type for variable: 'shipmentInput'", "extensions": { "name": "shipmentInput", "code": "VALIDATION_INVALID_TYPE_VARIABLE" } } ] }このエラーは、実際に問題のあるフィールドではなく variable 全体 の名前を示します。ほとんどの場合、その variable 内の 1 つの enum 値が、その enum のメンバーに含まれていないことを意味します — 最も多いのは
nonDelivery.option、contentsType、serviceLevelです。これは JSON の型の問題では ありません。boolean や number をクオートしても、クオートを外しても解決しません。payload はそこまで到達せず、enum の検証で先に reject されるためです。
問題のあるフィールドを特定するには、その variable 内のすべての enum 値を持つフィールドを、受け入れ可能な値と照合してください:
nonDelivery.optionRETURN_AFTER_RETENTION,RETURN_IMMEDIATELY,FORWARD,ABANDON—RETURNはなしnonDelivery.transportMethodAIR,MOST_ECONOMICALcontentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHERserviceLeveljapan_post.*形式のサービスレベルコード各 input の完全な enum メンバーは、API reference のタイプページに記載されています。
権限
各ステップは個別にセキュリティが適用されます。API キーには、チェーン内の各エンティティに対する write スコープ(
ITEM_WRITE、CARTON_WRITE、SHIPMENT_RATING_WRITE、LANDED_COST_WRITE、SHIPMENT_WRITE)が必要です。Verified Account の標準的な merchant ロールには、これらすべてが付与されています。次のステップ
CartonCreateWorkflowInput ItemCreateWorkflowInput LandedCostWorkFlowInput PartyCreateWorkflowInput ShipmentCreateWorkflowInput ShipmentRatingCreateWorkflowInput
cartonsCreateWorkflow itemCreateWorkflow landedCostCalculateWorkflow partyCreateWorkflow shipmentCreateWorkflow shipmentRatingCreateWorkflow
このページは役に立ちましたか?