Endpoint dan autentikasi
Permintaan dalam rantai ini semuanya menggunakan endpoint yang sama. Apa yang Anda lewatkan di header tergantung pada setup Anda — pilih tab Anda.
URL:
https://api.zonos.com/graphql
Headers:
Anda mengirim pesanan Anda sendiri di bawah Akun Terverifikasi Anda sendiri. Autentikasi sebagai diri Anda sendiri — tidak ada kunci akun yang diperlukan.
credentialToken: {{YOUR_API_TOKEN}}
Di mana menemukannya: Zonos Dashboard → Settings → Integrations → bagian Account Key. Salin token pada baris API key; itu adalah credentialToken Anda.
Contoh permintaan
Permintaan CreateDeclarationShipment lengkap yang dapat Anda salin dan sesuaikan — mutasi, variabelnya, dan respons — untuk satu paket Japan Post yang dikirim DDP ke A.S. Setiap input dipecah dalam bagian langkah demi langkah di bawah.
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 } } }}Langkah demi langkah
Kolom Status pada setiap tabel di bawah menggunakan istilah-istilah berikut:
- Diperlukan — permintaan gagal tanpanya.
- Diperlukan untuk label — opsional dalam skema GraphQL, tetapi diperlukan untuk menghasilkan label A.S. Japan Post yang valid.
- Kondisional — diperlukan tergantung pada bidang lain (dicatat secara inline).
- Direkomendasikan — opsional, tetapi mendorong bea cukai dan pajak yang akurat.
- Opsional — tidak diperlukan.
1. partyCreateWorkflow
Membuat pihak-pihak yang terlibat dalam pengiriman — minimal ORIGIN (tempat pengiriman dikirim) dan DESTINATION (pembeli / penerima).
| Bidang↕ | Status↕ | Catatan↕ |
|---|---|---|
type | Diperlukan | ORIGIN, DESTINATION, RETURN, dll. |
location.countryCode | Diperlukan | Kode negara ISO-2. |
location.line1, locality, administrativeAreaCode, postalCode | Diperlukan untuk label | Bidang alamat diperlukan untuk label yang valid. |
person.firstName, lastName, phone | Diperlukan untuk label | Detail kontak diperlukan untuk label yang valid. |
person.companyName, email | Opsional |
Contoh payload:
[
{ "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} },
{ "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} }
]
Respons mengembalikan ID Party yang dibuat dan bidang alamat yang diselesaikan.
2. itemCreateWorkflow
Membuat item baris yang membentuk pengiriman. Ini adalah SKU yang akan muncul pada faktur komersial dan mendorong perhitungan biaya pendaratan.
| Bidang↕ | Status↕ | Catatan↕ |
|---|---|---|
currencyCode | Diperlukan | Mata uang harga unit. |
quantity | Diperlukan | Jumlah unit item ini. |
amount | Kondisional | Harga unit (bukan total). Diperlukan kecuali totalAmount disediakan. |
totalAmount | Opsional | Alternatif untuk amount; amount diturunkan dari totalAmount / quantity. |
hsCode | Direkomendasikan | Kode tarif Sistem Harmonis. Mendorong tarif bea cukai. |
countryOfOrigin | Direkomendasikan | Kode ISO-2 tempat barang dibuat. Mendorong bea cukai / FTA. |
name, description | Direkomendasikan | Nama produk + deskripsi menghadap pelanggan. |
customsDescription | Opsional | Penggantian deskripsi bea cukai. |
sku, productId | Opsional | Pengidentifikasi internal Anda. |
measurements | Opsional | Berat / dimensi per unit. |
Kode HS, negara asal, dan jumlah adalah tiga bidang yang paling mempengaruhi hasil bea cukai / pajak di langkah 5.
3. cartonsCreateWorkflow
Membuat paket fisik — kotak, polybag, atau surat yang akan menampung item.
| Bidang↕ | Status↕ | Catatan↕ |
|---|---|---|
dimensionalUnit | Diperlukan | INCH atau CENTIMETER. |
weight, weightUnit | Diperlukan untuk label | Japan Post memerlukan berat paket. |
length, width, height | Opsional | Dimensi luar. |
type | Opsional | Gaya kemasan (kotak, polybag, surat). Default ke PACKAGE. |
Setiap karton menjadi satu paket pada label operator di langkah 6. Beberapa karton → pengiriman multi-piece dengan satu nomor pelacakan per karton.
4. shipmentRatingCreateWorkflow
Mencatat kutipan tarif yang dikenakan pedagang kepada pembeli untuk pengiriman.
| Bidang↕ | Status↕ | Catatan↕ |
|---|---|---|
amount | Diperlukan | Apa yang dibayar pembeli untuk pengiriman. Lewatkan 0 jika gratis. |
currencyCode | Diperlukan | Mata uang amount. |
serviceLevelCode | Diperlukan | Kode layanan operator (misalnya japan_post.air.parcel). |
displayName | Opsional | Nama cantik untuk tanda terima / faktur. |
Ini adalah tarif yang dijumlahkan pembeli saat checkout. Ini masuk ke perhitungan biaya pendaratan sebagai subtotal "pengiriman" sehingga bea cukai dan pajak dihitung terhadap nilai CIF yang benar.
5. landedCostCalculateWorkflow
Menjalankan perhitungan bea cukai, pajak, dan biaya untuk negara tujuan. Menggunakan item, pihak, dan biaya pengiriman dari langkah-langkah sebelumnya.
| Bidang↕ | Status↕ | Catatan↕ |
|---|---|---|
endUse | Diperlukan | NOT_FOR_RESALE atau FOR_RESALE. Beberapa tujuan menerapkan tarif berbeda untuk penggunaan akhir komersial vs pribadi. |
tariffRate | Diperlukan | Default ke ZONOS_PREFERRED jika dihilangkan. Memberitahu Zonos sumber tarif / metodologi mana yang akan diterapkan. |
calculationMethod | Direkomendasikan | DDP (pembeli prabayar) atau DDU (pembeli membayar di pintu). Gunakan DDP untuk prabayar. Mendorong apakah LandedCost.amountSubtotals menyertakan bea cukai / pajak. |
currencyCode | Opsional | Mata uang subtotal biaya pendaratan dikembalikan. |
arrivalDate | Opsional | Tarif FX dan jadwal tarif disematkan pada tanggal ini jika disediakan. |
Respons mencakup amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — ini adalah angka yang Anda tampilkan kepada pembeli saat checkout dan yang dicetak pada faktur komersial.
6. shipmentCreateWorkflow
Langkah terminal — membuat entitas Shipment, menghasilkan label operator, dan (opsional) faktur komersial / slip kemasan.
Untuk Akun Terverifikasi Japan Post, ini juga tempat Zonos memanggil Japan Post Label API (kode 52) atas nama Anda, menyuntikkan Nomor Pembayaran Kemudian Anda, membuat ID Deklarasi, dan menautkan ID Deklarasi ke nomor pelacakan yang dikembalikan oleh Japan Post.
Bidang kunci:
| Bidang↕ | Status↕ | Catatan↕ |
|---|---|---|
serviceLevel | Diperlukan untuk label | Layanan Japan Post untuk dikirim dengan (misalnya japan_post.air.ems_merchandise). Harus berupa tingkat layanan japan_post.*. |
generateLabel | Opsional | Default ke true; harus true untuk mengembalikan label. |
contentsType | Direkomendasikan | SALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, dll. Mendorong perlakuan bea cukai. |
nonDelivery | Opsional | Apa yang harus dilakukan operator jika pengiriman gagal: RETURN, ABANDON, FORWARD. |
references | Opsional | Nomor referensi yang disediakan pedagang dicetak pada label dan faktur komersial. Lihat di bawah. |
declaredValue / isDeclaredValue | Opsional | Nilai asuransi untuk pengiriman. |
shipmentConsolidationId | Opsional | Digunakan ketika pengiriman ini adalah bagian dari pengiriman batch. |
Sub-input references
Bidang-bidang ini dicetak pada label operator dan / atau faktur komersial. Gunakan untuk menampilkan nomor PO, nomor lisensi, dan komentar teks bebas yang harus dilihat penerima atau otoritas bea cukai.
| Bidang↕ | Status↕ | Catatan↕ | Panjang↕ |
|---|---|---|---|
invoiceNumber | Opsional | Nomor faktur pedagang. | — |
purchaseOrderNumber | Opsional | Nomor PO pedagang. | — |
licenseNumber | Opsional | Nomor lisensi ekspor / impor. | — |
certificateNumber | Opsional | Nomor sertifikat bea cukai. | — |
paymentConditions | Opsional | Istilah pembayaran teks bebas ditampilkan pada faktur komersial. | Batasi hingga 200 karakter — nilai yang lebih panjang meluap pada faktur yang dicetak. |
customsRemarks | Opsional | Komentar bea cukai teks bebas. | — |
taxCode | Opsional | Kode pajak khusus dicetak pada label. | — |
Respons
Bidang menarik pada Shipment yang dikembalikan adalah:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}
}
}
trackingDetails.number adalah nomor pelacakan Japan Post.
Objek label dapat mengembalikan label dengan dua cara — minta mana pun yang sesuai dengan alur kerja Anda (atau keduanya):
| Bidang↕ | Mengembalikan↕ | Gunakan ketika↕ |
|---|---|---|
url | Tautan yang dihosting ke file label yang dirender (PDF), siap untuk diunduh atau dicetak. | Anda ingin menyerahkan tautan — buka, email, atau ambil file nanti tanpa menyimpannya dalam payload. |
labelImage | Gambar label yang dikodekan base64 (PNG/PDF/ZPL) inline dalam respons. | Anda menginginkan byte label langsung dalam respons untuk melampirkan pada alur kerja pemenuhan atau menyimpan ke WMS Anda. |
Pilih hanya bidang yang Anda butuhkan. Meminta url membuat respons kecil; meminta labelImage mengembalikan label lengkap inline sehingga Anda tidak memerlukan perjalanan bolak-balik kedua untuk mengambilnya. Contoh di atas meminta url.
Penanganan kesalahan
- Kesalahan validasi (bidang yang diperlukan hilang, kode negara tidak valid, dll.) kembali dalam array
errorsGraphQL standar dan menghentikan sisa rantai. - Kesalahan Japan Post (kegagalan pembuatan label, alamat tidak valid, dll.) muncul sebagai kesalahan GraphQL pada
shipmentCreateWorkflow. Jika diperlukan percobaan lagi, hubungi dukungan — jalur yang disarankan adalah mengirim ulang mutasi lengkap dengan input yang diperbaiki.
Izin
Setiap langkah dijamin secara independen. Kunci API Anda harus memegang cakupan penulisan untuk setiap entitas dalam rantai (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Peran pedagang standar pada Akun Terverifikasi memberikan semuanya.
Langkah selanjutnya
- Pengiriman batch (konsolidasi) — bundel paket hari itu ke dalam satu slip pengiriman pembayaran tertunda Japan Post.
Buat satu pengiriman
Alur kerja
CreateDeclarationShipmentGraphQL membawa pengiriman Japan Post dari input mentah ke label yang dapat dicetak dalam satu perjalanan bolak-balik.CreateDeclarationShipmentmerantai enam mutasi*Workflowmenjadi satu permintaan GraphQL. Setiap langkah dibangun di atas data yang diberikan oleh langkah-langkah sebelumnya, dan semuanya disampaikan bersama-sama sehingga pengiriman lengkap dapat dibuat dalam satu perjalanan bolak-balik:Mutasi
Workflowdirancang untuk dirantai: Anda tidak perlu mengalirkan ID dari satu langkah ke langkah berikutnya, dan Anda tidak perlu mengirim permintaan terpisah per langkah. Kirimkan seluruh dokumen, dapatkanShipmentakhir kembali.Ketika
serviceLevelpada langkah akhir adalah tingkat layanan Japan Post (japan_post.*), Zonos memanggil Japan Post Label API (kode 52) atas nama Anda menggunakan Nomor Pembayaran Kemudian Akun Terverifikasi Anda, menghasilkan label dan nomor pelacakan, membuat ID Deklarasi, dan menautkannya — semuanya di dalam langkahshipmentCreateWorkflowakhir itu.