DOCS

Einzel-Sendung erstellen

Einzel-Sendung erstellen

Der GraphQL-Workflow CreateDeclarationShipment führt eine Japan Post-Sendung von den Rohdaten bis zum druckbaren Etikett in einem Round-Trip.

CreateDeclarationShipment verknüpft sechs *Workflow-Mutationen zu einer einzigen GraphQL-Anfrage. Jeder Schritt baut auf den Daten der vorherigen Schritte auf, und alle werden gemeinsam übermittelt, sodass eine vollständige Sendung in einem Round-Trip erstellt werden kann:

partyCreateWorkflow            → Absender- und Empfängerparteien beschreiben
itemCreateWorkflow             → Positionen beschreiben
cartonsCreateWorkflow          → die physische Verpackung beschreiben
shipmentRatingCreateWorkflow   → das Carrier-Tarifangebot erfassen
landedCostCalculateWorkflow    → Zölle / Steuern / Gebühren berechnen
shipmentCreateWorkflow         → die Sendung + das Etikett erstellen

Die Workflow-Mutationen sind für die Verkettung konzipiert: Sie müssen keine IDs von einem Schritt in den nächsten durchreichen und müssen keinen separaten Request pro Schritt senden. Reichen Sie das gesamte Dokument ein und erhalten Sie die finale Shipment zurück.

Wenn der serviceLevel im letzten Schritt eine Japan Post-Serviceebene ist (japan_post.*), ruft Zonos in Ihrem Namen die Japan Post Label API (Code 52) mit den Later Pay Numbers Ihres Verified Accounts auf, generiert das Etikett und die Sendungsnummer, erstellt die Declaration ID und verknüpft sie — alles innerhalb des abschließenden Schritts shipmentCreateWorkflow.

Warum eine Mutation? Jeder Schritt hängt vom vorherigen ab (Landed Cost benötigt die Positionen + Parteien; das Etikett benötigt alles). Die Bündelung in einem einzigen GraphQL-Dokument hält die Daten konsistent und vermeidet fünf zusätzliche Round-Trips.

Endpoint und Authentifizierung 

Die Anfragen in dieser Kette nutzen alle denselben Endpoint. Was Sie in den Headern übergeben, hängt von Ihrem Setup ab — wählen Sie Ihren Tab.

URL:

https://api.zonos.com/graphql

Header:

Sie versenden Ihre eigenen Bestellungen unter Ihrem eigenen Verified Account. Authentifizieren Sie sich als sich selbst — kein Account Key erforderlich.

credentialToken: {{YOUR_API_TOKEN}}

Wo Sie ihn finden: Zonos Dashboard → SettingsIntegrations → Abschnitt Account Key. Kopieren Sie den Token in der Zeile API key; das ist Ihr credentialToken.

Beispielanfrage 

Eine vollständige CreateDeclarationShipment-Anfrage zum Kopieren und Anpassen — die Mutation, ihre Variablen und die Antwort — für ein einzelnes Japan Post-Paket, das per DDP in die USA versendet wird. Jede Eingabe wird im Abschnitt Schritt für Schritt unten erläutert.

1mutation CreateDeclarationShipment(
2$partyInput: [PartyCreateWorkflowInput!]!
3$itemInput: [ItemCreateWorkflowInput!]!
4$cartonInput: [CartonCreateWorkflowInput!]!
5$shipmentRatingInput: ShipmentRatingCreateWorkflowInput!
6$landedCostInput: LandedCostWorkFlowInput!
7$shipmentInput: ShipmentCreateWorkflowInput!
8) {
9 partyCreateWorkflow(input: $partyInput) {
10 id
11 type
12 location {
13 line1
14 locality
15 postalCode
16 countryCode
17 }
18 }
19 itemCreateWorkflow(input: $itemInput) {
20 id
21 name
22 sku
23 amount
24 currencyCode
25 hsCode
26 }
27 cartonsCreateWorkflow(input: $cartonInput) {
28 id
29 length
30 width
31 height
32 dimensionalUnit
33 weight
34 weightUnit
35 }
36 shipmentRatingCreateWorkflow(input: $shipmentRatingInput) {
37 id
38 amount
39 }
40 landedCostCalculateWorkflow(input: $landedCostInput) {
41 id
42 method
43 currencyCode
44 amountSubtotals {
45 duties
46 taxes
47 fees
48 shipping
49 landedCostTotal
50 }
51 }
52 shipmentCreateWorkflow(input: $shipmentInput) {
53 id
54 trackingDetails {
55 number
56 }
57 shipmentCartons {
58 label {
59 url
60 }
61 }
62 }
63}

Schritt für Schritt 

Die Spalte Status in jeder Tabelle unten verwendet diese Begriffe:

  • Erforderlich — die Anfrage schlägt ohne dieses Feld fehl.
  • Erforderlich für Etikett — im GraphQL-Schema optional, aber erforderlich für ein gültiges Japan Post-US-Etikett.
  • Bedingt — abhängig von einem anderen Feld erforderlich (im Text vermerkt).
  • Empfohlen — optional, beeinflusst aber die Genauigkeit von Zöllen und Steuern.
  • Optional — nicht erforderlich.

1. partyCreateWorkflow

Erstellt die an der Sendung beteiligten Parteien — mindestens eine ORIGIN (Versandursprung) und eine DESTINATION (Käufer / Empfänger).

FeldStatusHinweise
typeErforderlichORIGIN, DESTINATION, RETURN usw.
location.countryCodeErforderlichISO-2-Ländercode.
location.line1, locality, administrativeAreaCode, postalCodeErforderlich für EtikettAdressfelder für ein gültiges Etikett erforderlich.
person.firstName, lastName, phoneErforderlich für EtikettKontaktdaten für ein gültiges Etikett erforderlich.
person.companyName, emailOptional

Beispiel-Payload:

[
  { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} },
  { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} }
]

Die Antwort gibt die erstellten Party-IDs und aufgelösten Adressfelder zurück.

2. itemCreateWorkflow

Erstellt die Positionen, aus denen die Sendung besteht. Das sind die SKUs, die auf der Handelsrechnung erscheinen und die Landed-Cost-Berechnung steuern.

FeldStatusHinweise
currencyCodeErforderlichWährung des Stückpreises.
quantityErforderlichAnzahl der Einheiten dieser Position.
amountBedingtStückpreis (nicht Gesamtbetrag). Erforderlich, sofern totalAmount nicht angegeben ist.
totalAmountOptionalAlternative zu amount; amount wird aus totalAmount / quantity abgeleitet.
hsCodeEmpfohlenHarmonized-System-Zolltarifnummer. Bestimmt die Zollsätze.
countryOfOriginEmpfohlenISO-2-Code des Herstellungslandes. Bestimmt Zoll / FTA.
name, descriptionEmpfohlenKundenorientierte Produktbezeichnung und Beschreibung.
customsDescriptionOptionalÜberschreibung der Zollbeschreibung.
sku, productIdOptionalIhre internen Kennungen.
measurementsOptionalGewicht / Abmessungen pro Einheit.

Der HS-Code, das Herstellungsland und der Betrag sind die drei Felder, die das Zoll-/Steuerergebnis in Schritt 5 am stärksten beeinflussen.

3. cartonsCreateWorkflow

Erstellt die physischen Pakete — die Kartons, Polybeutel oder Briefe, die die Positionen enthalten.

FeldStatusHinweise
dimensionalUnitErforderlichINCH oder CENTIMETER.
weight, weightUnitErforderlich für EtikettJapan Post erfordert das Paketgewicht.
length, width, heightOptionalAußenmaße.
typeOptionalVerpackungsart (Karton, Polybeutel, Brief). Standard: PACKAGE.

Jeder Karton wird in Schritt 6 zu einem Paket auf dem Carrier-Etikett. Mehrere Kartons → Mehrstück-Sendung mit einer Sendungsnummer pro Karton.

4. shipmentRatingCreateWorkflow

Erfasst das Tarifangebot, das der Händler dem Käufer für den Versand berechnet.

FeldStatusHinweise
amountErforderlichWas der Käufer für den Versand zahlt. Übergeben Sie 0 bei Gratisversand.
currencyCodeErforderlichWährung von amount.
serviceLevelCodeErforderlichCarrier-Servicecode (z. B. japan_post.air.parcel).
displayNameOptionalAnzeigename für Quittung / Rechnung.

Das ist der Tarif, der dem Käufer beim Checkout angeboten wurde. Er fließt als Teilposten „Versand“ in die Landed-Cost-Berechnung ein, damit Zölle und Steuern gegen den korrekten CIF-Wert berechnet werden.

5. landedCostCalculateWorkflow

Führt die Berechnung von Zöllen, Steuern und Gebühren für das Zielland durch. Nutzt die Positionen, Parteien und Versandkosten aus den vorherigen Schritten.

FeldStatusHinweise
endUseErforderlichNOT_FOR_RESALE oder FOR_RESALE. Einige Zielländer wenden unterschiedliche Sätze für gewerbliche und private Endnutzung an.
tariffRateErforderlichStandardmäßig ZONOS_PREFERRED, wenn weggelassen. Teilt Zonos mit, welche Zolltarifquelle/-methodik angewendet wird.
calculationMethodEmpfohlenDDP (Käufer zahlt im Voraus) oder DDU (Käufer zahlt bei Zustellung). Verwenden Sie DDP für Vorauszahlung. Steuert, ob LandedCost.amountSubtotals Zoll/Steuer enthält.
currencyCodeOptionalWährung, in der die Landed-Cost-Teilbeträge zurückgegeben werden.
arrivalDateOptionalWechselkurse und Zolltarife werden an dieses Datum gebunden, sofern angegeben.

Die Antwort enthält amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — das sind die Werte, die Sie dem Käufer beim Checkout anzeigen und die auf der Handelsrechnung gedruckt werden.

6. shipmentCreateWorkflow

Der abschließende Schritt — erstellt die Shipment-Entität, generiert das Carrier-Etikett und (optional) die Handelsrechnung / den Packzettel.

Für Japan Post Verified Accounts ruft Zonos hier auch in Ihrem Namen die Japan Post Label API (Code 52) auf, bindet Ihre Later Pay Numbers ein, erstellt die Declaration ID und verknüpft die Declaration ID mit der von Japan Post zurückgegebenen Sendungsnummer.

Wichtige Felder:

FeldStatusHinweise
serviceLevelErforderlich für EtikettDie Japan Post-Serviceebene für den Versand (z. B. japan_post.air.ems_merchandise). Muss eine japan_post.*-Serviceebene sein.
generateLabelOptionalStandardmäßig true; muss true sein, um ein Etikett zurückzugeben.
contentsTypeEmpfohlenSALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE usw. Steuert die Zollbehandlung.
nonDeliveryOptionalWas der Carrier bei fehlgeschlagener Zustellung tun soll: RETURN, ABANDON, FORWARD.
referencesOptionalVom Händler bereitgestellte Referenznummern auf Etikett und Handelsrechnung. Siehe unten.
declaredValue / isDeclaredValueOptionalVersicherungswert der Sendung.
shipmentConsolidationIdOptionalWird verwendet, wenn diese Sendung Teil eines Batch-Versands ist.

references-Untereingabe

Diese Felder werden auf dem Carrier-Etikett und/oder der Handelsrechnung gedruckt. Nutzen Sie sie, um Bestellnummern, Lizenznummern und Freitextbemerkungen anzuzeigen, die der Empfänger oder die Zollbehörde sehen muss.

FeldStatusHinweiseLänge
invoiceNumberOptionalHändler-Rechnungsnummer.
purchaseOrderNumberOptionalHändler-Bestellnummer.
licenseNumberOptionalExport-/Importlizenznummer.
certificateNumberOptionalZollzertifikatsnummer.
paymentConditionsOptionalFreitext-Zahlungsbedingungen auf der Handelsrechnung.Auf 200 Zeichen begrenzen — längere Werte überlaufen auf der gedruckten Rechnung.
customsRemarksOptionalFreitext-Zollbemerkungen.
taxCodeOptionalIndividueller Steuercode auf dem Etikett.

Antwort

Die relevanten Felder der zurückgegebenen Shipment sind:

{
  id
  trackingDetails {
    number
  }
  shipmentCartons {
    label {
      url
      labelImage
    }
  }
}

trackingDetails.number ist die Japan Post-Sendungsnummer.

Das label-Objekt kann das Etikett auf zwei Arten zurückgeben — fordern Sie an, was zu Ihrem Workflow passt (oder beides):

FeldGibt zurückVerwenden, wenn
urlEinen gehosteten Link zur gerenderten Etikettendatei (PDF), bereit zum Download oder Druck.Sie einen Link weitergeben möchten — öffnen, per E-Mail senden oder die Datei später abrufen, ohne sie in der Payload zu halten.
labelImageDas Base64-kodierte Etikettenbild (PNG/PDF/ZPL) inline in der Antwort.Sie die Etikettenbytes direkt in der Antwort benötigen, um sie an einen Fulfillment-Workflow anzuhängen oder in Ihrem WMS zu speichern.

Fordern Sie nur die Felder an, die Sie benötigen. url hält die Antwort klein; labelImage gibt das vollständige Etikett inline zurück, sodass kein zweiter Round-Trip zum Abruf nötig ist. Das Beispiel oben fordert url an.

Fehlerbehandlung 

  • Validierungsfehler (fehlende Pflichtfelder, ungültige Ländercodes usw.) werden im standardmäßigen GraphQL-errors-Array zurückgegeben und brechen den Rest der Kette ab.
  • Japan Post-Fehler (Fehler bei der Etikettenerstellung, ungültige Adresse usw.) werden als GraphQL-Fehler bei shipmentCreateWorkflow ausgegeben. Wenn ein erneuter Versuch nötig ist, wenden Sie sich an den Support — der empfohlene Weg ist, die vollständige Mutation mit korrigierten Eingaben erneut einzureichen.

Berechtigungen 

Jeder Schritt ist unabhängig abgesichert. Ihr API-Schlüssel muss den Schreibbereich für jede Entität in der Kette haben (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Die Standard-Händlerrolle auf einem Verified Account gewährt alle diese Berechtigungen.

Nächste Schritte 

War diese Seite hilfreich?