Endpoint ve kimlik doğrulama
Bu zincirdeki isteklerin tümü aynı endpoint'i kullanır. Başlıklara ne koyacağınız kurulumunuza bağlıdır — sekmeinizi seçin.
URL:
https://api.zonos.com/graphql
Başlıklar:
Kendi siparişlerinizi kendi Doğrulanmış Hesabınız altında gönderiyor siniz. Kendiniz olarak kimlik doğrulaması yapın — hesap anahtarı gerekli değildir.
credentialToken: {{YOUR_API_TOKEN}}
Nereyi bulacağınız: Zonos Dashboard → Settings → Integrations → Account Key bölümü. API key satırındaki tokeni kopyalayın; bu sizin credentialToken'ınızdır.
Örnek istek
Kopyalayabileceğiniz ve uyarlayabileceğiniz tam bir CreateDeclarationShipment isteği — mutasyon, değişkenleri ve yanıt — tek bir Japan Post paketi ABD'ye DDP olarak gönderirken. Her giriş, aşağıdaki adım adım bölümünde açıklanmıştır.
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 } } }}Adım adım
Aşağıdaki tablolarda Status sütunu bu terimleri kullanır:
- Gerekli — istek olmadan başarısız olur.
- Etiket için gerekli — GraphQL şemasında isteğe bağlı, ancak geçerli bir Japan Post ABD etiketi üretmek için gerekli.
- Koşullu — başka bir alana bağlı olarak gerekli (satır içinde belirtilmiştir).
- Önerilen — isteğe bağlı, ancak doğru vergileri ve vergileri yönlendirir.
- İsteğe bağlı — gerekli değildir.
1. partyCreateWorkflow
Sevkiyatla ilgili tarafları oluşturur — en azından bir ORIGIN (sevkiyatın nereden gönderileceği) ve bir DESTINATION (alıcı / konsinyatör).
| Alan↕ | Durum↕ | Notlar↕ |
|---|---|---|
type | Gerekli | ORIGIN, DESTINATION, RETURN, vb. |
location.countryCode | Gerekli | ISO-2 ülke kodu. |
location.line1, locality, administrativeAreaCode, postalCode | Etiket için gerekli | Geçerli bir etiket için gereken adres alanları. |
person.firstName, lastName, phone | Etiket için gerekli | Geçerli bir etiket için gereken iletişim bilgileri. |
person.companyName, email | İsteğe bağlı |
Örnek yük:
[
{ "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} },
{ "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} }
]
Yanıt, oluşturulan Party ID'lerini ve çözümlenen adres alanlarını döndürür.
2. itemCreateWorkflow
Sevkiyatı oluşturan satır öğelerini oluşturur. Bunlar, ticari faturada görünecek ve iniş maliyeti hesaplamasını yönlendirecek SKU'lardır.
| Alan↕ | Durum↕ | Notlar↕ |
|---|---|---|
currencyCode | Gerekli | Birim fiyatının para birimi. |
quantity | Gerekli | Bu öğenin birim sayısı. |
amount | Koşullu | Birim fiyatı (toplam değil). totalAmount sağlanmadıkça gerekli. |
totalAmount | İsteğe bağlı | amount'a alternatif; amount totalAmount / quantity öğesinden türetilir. |
hsCode | Önerilen | Harmonize Sistem tarife kodu. Gümrük oranlarını yönlendirir. |
countryOfOrigin | Önerilen | ISO-2 kodu, öğenin yapıldığı yer. Gümrük / FTA'yı yönlendirir. |
name, description | Önerilen | Müşteriye yönelik ürün adı + açıklaması. |
customsDescription | İsteğe bağlı | Gümrük açıklaması geçersiz kılması. |
sku, productId | İsteğe bağlı | İç tanımlayıcılarınız. |
measurements | İsteğe bağlı | Birim başına ağırlık / boyutlar. |
HS kodu, menşe ülkesi ve tutar, 5. adımdaki vergi/vergi sonucunu en çok etkileyen üç alandır.
3. cartonsCreateWorkflow
Fiziksel paketleri — kutular, polybag'lar veya öğeleri tutacak mektupları oluşturur.
| Alan↕ | Durum↕ | Notlar↕ |
|---|---|---|
dimensionalUnit | Gerekli | INCH veya CENTIMETER. |
weight, weightUnit | Etiket için gerekli | Japan Post paket ağırlığı gerektirir. |
length, width, height | İsteğe bağlı | Dış boyutlar. |
type | İsteğe bağlı | Ambalaj stili (kutu, polybag, mektup). Varsayılan PACKAGE. |
Her karton, 6. adımdaki taşıyıcı etikette bir parsel haline gelir. Birden fazla karton → bir takip numarası ile çok parçalı sevkiyat.
4. shipmentRatingCreateWorkflow
Oran teklifini kaydeder — satıcının alıcıya kargo için talep ettiği tutar.
| Alan↕ | Durum↕ | Notlar↕ |
|---|---|---|
amount | Gerekli | Alıcının kargo için ödediği tutar. Ücretsiz ise 0 iletin. |
currencyCode | Gerekli | amount'un para birimi. |
serviceLevelCode | Gerekli | Taşıyıcı hizmet kodu (ör. japan_post.air.parcel). |
displayName | İsteğe bağlı | Makbuz / faturada güzel ad. |
Bu, alıcıya kasa sırasında teklif edilen orandır. Gümrük ve vergiler doğru CIF değerine karşı hesaplanacak şekilde iniş maliyeti hesaplamasına "kargo" alt toplamı olarak girer.
5. landedCostCalculateWorkflow
Hedef ülke için gümrük vergileri ve ücretler hesaplaması çalıştırır. Önceki adımlardan öğeleri, tarafları ve kargo maliyetini kullanır.
| Alan↕ | Durum↕ | Notlar↕ |
|---|---|---|
endUse | Gerekli | NOT_FOR_RESALE veya FOR_RESALE. Bazı hedefler ticari vs kişisel kullanım için farklı oranlar uygular. |
tariffRate | Gerekli | Atlanırsa ZONOS_PREFERRED varsayılanını ayarlar. Zonos'a hangi tarife kaynağı/yönteminin uygulanacağını söyler. |
calculationMethod | Önerilen | DDP (alıcı ön ödeme) veya DDU (alıcı kapıda ödeme). Ön ödeme için DDP kullanın. LandedCost.amountSubtotals'in vergi/vergi içerip içermediğini belirler. |
currencyCode | İsteğe bağlı | İniş maliyeti alt toplamlarının döndürüleceği para birimi. |
arrivalDate | İsteğe bağlı | Sağlanırsa döviz kurları ve tarife tabloları bu tarihe sabitleştirilir. |
Yanıt, amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) içerir — bunlar, alıcıya kasa sırasında göstereceğiniz ve ticari faturada basılacak sayılardır.
6. shipmentCreateWorkflow
Terminal adımı — Shipment varlığını oluşturur, taşıyıcı etiketi ve (isteğe bağlı olarak) ticari faturayı / paketleme taslağını oluşturur.
Japan Post Doğrulanmış Hesapları için, Zonos'un sizin adınıza Japan Post Label API'sini (kod 52) çağırdığı, Later Pay Numaralarınızı enjekte ettiği, Declaration ID'sini oluşturduğu ve bunları takip numarasına bağladığı yerdir.
Önemli alanlar:
| Alan↕ | Durum↕ | Notlar↕ |
|---|---|---|
serviceLevel | Etiket için gerekli | Japan Post servisiyle gönderme (ör. japan_post.air.ems_merchandise). japan_post.* hizmet seviyesi olmalıdır. |
generateLabel | İsteğe bağlı | Varsayılan true; etiket döndürmek için true olmalıdır. |
contentsType | Önerilen | SALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, vb. Gümrük muamelesi yönlendirir. |
nonDelivery | İsteğe bağlı | Teslimat başarısız olursa taşıyıcı ne yapmalı: RETURN, ABANDON, FORWARD. |
references | İsteğe bağlı | Satıcı tarafından sağlanan referans numaraları etikete ve ticari faturaya basılı. Aşağıya bakın. |
declaredValue / isDeclaredValue | İsteğe bağlı | Sevkiyat için sigorta değeri. |
shipmentConsolidationId | İsteğe bağlı | Bu sevkiyat bir batch dispatch parçası olduğunda kullanılır. |
references alt giriş
Bu alanlar taşıyıcı etiketinde ve/veya ticari faturada basılı. Konsinyatör veya gümrük otoritesinin görmesi gereken PO numaralarını, lisans numaralarını ve serbest metin açıklamalarını yüzeye çıkarmak için bunları kullanın.
| Alan↕ | Durum↕ | Notlar↕ | Uzunluk↕ |
|---|---|---|---|
invoiceNumber | İsteğe bağlı | Satıcı fatura numarası. | — |
purchaseOrderNumber | İsteğe bağlı | Satıcı PO numarası. | — |
licenseNumber | İsteğe bağlı | İhracat/ithalatata lisans numarası. | — |
certificateNumber | İsteğe bağlı | Gümrük sertifikası numarası. | — |
paymentConditions | İsteğe bağlı | Ticari faturada gösterilen serbest metin ödeme koşulları. | 200 karakterle sınırlı — daha uzun değerler basılı faturada taşar. |
customsRemarks | İsteğe bağlı | Serbest metin gümrük açıklamaları. | — |
taxCode | İsteğe bağlı | Etikette basılı özel vergi kodu. | — |
Yanıt
Döndürülen Shipment'daki ilginç alanlar:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}
}
}
trackingDetails.number Japan Post takip numarasıdır.
label nesnesi etiketi iki şekilde döndürebilir — iş akışınıza uyan şeyi isteyin (veya her ikisini):
| Alan↕ | Döndürür↕ | Şu durumlarda kullanın↕ |
|---|---|---|
url | İşlenen etiket dosyasına (PDF) barındırılan bağlantı, indirmeye veya yazdırmaya hazır. | Bir bağlantı aktarmak istiyorsunuz — açın, e-posta ile gönderin veya payload'u tutmadan dosyayı daha sonra alın. |
labelImage | Base64 kodlamalı etiket görüntüsü (PNG/PDF/ZPL) yanıtta satır içi. | Yanıtta doğrudan etiket bayt'larını istiyorsunuz, yerine getirme iş akışına eklemek veya WMS'ye kaydetmek için. |
Yalnızca gerekli alanları seçin. url istemek yanıtı küçük tutar; labelImage istemek tam etiketi satır içinde döndürür, böylece almak için ikinci bir gidiş-dönüş gerekmez. Yukarıdaki örnek url istemektedir.
Hata işleme
- Doğrulama hataları (eksik gerekli alanlar, geçersiz ülke kodları, vb.) standart GraphQL
errorsdizisinde geri gelir ve zincirin geri kalanını durdurur. - Japan Post hataları (etiket üretim hatası, geçersiz adres, vb.)
shipmentCreateWorkflowüzerinde GraphQL hataları olarak yüzeye çıkar. Yeniden deneme gerekiyorsa, desteğe başvurun — önerilen yol, tam mutasyonu düzeltilmiş girdilerle yeniden göndermektir.
İzinler
Her adım bağımsız olarak güvenliği sağlanır. API anahtarınız, zincirdeki her varlık için yazma kapsamını (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE) tutmalıdır. Doğrulanmış Hesaptaki standart satıcı rolü tümünü verir.
Sonraki adımlar
- Batch dispatch (birleştirme) — günün paketlerini bir Japan Post ertelenmiş ödeme gönderim kaydına paketleyin.
Tek bir sevkiyat oluşturun
CreateDeclarationShipmentGraphQL iş akışı, bir Japan Post sevkiyatını ham girdilerden yazdırılabilir bir etikete tek bir gidiş-dönüş içinde getirir.CreateDeclarationShipment, altı*Workflowmutasyonunu tek bir GraphQL isteğinde birleştirir. Her adım, önceki adımların sağladığı verilere dayanır ve tüm verileri birlikte gönderilir, böylece tam bir sevkiyat tek bir gidiş-dönüş içinde oluşturulabilir:Workflowmutasyonları zincirleme yapılmak üzere tasarlanmıştır: bir adımdan diğerine ID'leri iletmeniz gerekmez ve adım başına ayrı bir istek göndermeniz gerekmez. Tüm belgeyi gönderin, sonShipment'i geri alın.Son adımdaki
serviceLevelbir Japan Post hizmet seviyesi olduğunda (japan_post.*), Zonos sizin adınıza Japan Post Label API'sini (kod 52) çağırır ve Doğrulanmış Hesabınızın Later Pay Numaralarını kullanarak etiketi ve takip numarasını oluşturur, Declaration ID'sini oluşturur ve bunları bağlar — tümü bu sonshipmentCreateWorkflowadımında.