DOCS

Opret en enkelt forsendelse

Opret en enkelt forsendelse

CreateDeclarationShipment GraphQL-workflowet tager en Japan Post-forsendelse fra rå input til en printbar label i ét round-trip.

CreateDeclarationShipment kæder seks *Workflow-mutationer sammen i én enkelt GraphQL-anmodning. Hvert trin bygger på data fra de foregående trin, og de sendes alle sammen, så en komplet forsendelse kan oprettes i ét round-trip:

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-mutationerne er designet til at blive kædet: du behøver ikke at sende ID'er fra ét trin til det næste, og du behøver ikke sende en separat anmodning pr. trin. Send hele dokumentet, få den endelige Shipment tilbage.

Når serviceLevel i det sidste trin er et Japan Post-serviceniveau (japan_post.*), kalder Zonos Japan Post Label API (kode 52) på dine vegne med din Verified Accounts Later Pay Numbers, genererer label og trackingnummer, opretter Declaration ID og kæder dem sammen — alt sammen i det sidste shipmentCreateWorkflow-trin.

Hvorfor én mutation? Hvert trin afhænger af det foregående (landed cost kræver varer + parter; labelen kræver alt). At samle dem i ét GraphQL-dokument holder data konsistente og undgår fem ekstra round-trips.

Endpoint og godkendelse 

Anmodningerne i denne kæde bruger alle samme endpoint. Hvad du sender i headers, afhænger af din opsætning — vælg din fane.

URL:

https://api.zonos.com/graphql

Headers:

Du sender dine egne ordrer under din egen Verified Account. Godkend som dig selv — ingen account key nødvendig.

credentialToken: {{YOUR_API_TOKEN}}

Hvor du finder den: Zonos Dashboard → SettingsIntegrations → sektionen Account Key. Kopiér tokenet på rækken API key; det er din credentialToken.

Eksempelanmodning 

En komplet CreateDeclarationShipment-anmodning, du kan kopiere og tilpasse — mutationen, dens variabler og svaret — for én Japan Post-pakke sendt DDP til USA. Hvert input er beskrevet trin for trin nedenfor.

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}

Trin for trin 

Status-kolonnen i hver tabel nedenfor bruger disse termer:

  • Required — anmodningen fejler uden det.
  • Required for label — valgfrit i GraphQL-skemaet, men nødvendigt for en gyldig Japan Post-label til USA.
  • Conditional — påkrævet afhængigt af et andet felt (noteret inline).
  • Recommended — valgfrit, men driver præcis told og skat.
  • Optional — ikke nødvendigt.

1. partyCreateWorkflow

Opretter parterne i forsendelsen — mindst en ORIGIN (hvor forsendelsen sendes fra) og en DESTINATION (køber / modtager).

FieldStatusNotes
typeRequiredORIGIN, DESTINATION, RETURN, osv.
location.countryCodeRequiredISO-2-landekode.
location.line1, locality, administrativeAreaCode, postalCodeRequired for labelAdressefelter nødvendige for en gyldig label.
person.firstName, lastName, phoneRequired for labelKontaktoplysninger nødvendige for en gyldig label.
person.companyName, emailOptional

Eksempel-payload:

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

Svaret returnerer de oprettede Party-ID'er og de opløste adressefelter.

2. itemCreateWorkflow

Opretter linjeposterne, der udgør forsendelsen. Dette er SKU'erne, der vises på handelsfakturaen og driver landed-cost-beregningen.

FieldStatusNotes
currencyCodeRequiredValuta for enhedsprisen.
quantityRequiredAntal enheder af denne vare.
amountConditionalEnhedspris (ikke total). Påkrævet medmindre totalAmount er angivet.
totalAmountOptionalAlternativ til amount; amount afledes fra totalAmount / quantity.
hsCodeRecommendedHarmonized System-toldkode. Driver toldsatser.
countryOfOriginRecommendedISO-2-kode for hvor varen er fremstillet. Driver told / FTA.
name, descriptionRecommendedKundevendt produktnavn + beskrivelse.
customsDescriptionOptionalToldbeskrivelse override.
sku, productIdOptionalDine interne identifikatorer.
measurementsOptionalVægt / dimensioner pr. enhed.

HS-kode, oprindelsesland og beløb er de tre felter, der mest påvirker told/skat-resultatet i trin 5.

3. cartonsCreateWorkflow

Opretter de fysiske pakker — kasser, polyposer eller breve, der indeholder varerne.

FieldStatusNotes
dimensionalUnitRequiredINCH eller CENTIMETER.
weight, weightUnitRequired for labelJapan Post kræver pakkevægt.
length, width, heightOptionalYdre dimensioner.
typeOptionalEmballagestil (kasse, polypose, brev). Standard er PACKAGE.

Hver karton bliver én pakke på carrier-labelen i trin 6. Flere kartoner → flerstyksforsendelse med ét trackingnummer pr. karton.

4. shipmentRatingCreateWorkflow

Registrerer prisudbuddet, forhandleren opkræver køberen for forsendelse.

FieldStatusNotes
amountRequiredHvad køberen betaler for forsendelse. Send 0 hvis gratis.
currencyCodeRequiredValuta for amount.
serviceLevelCodeRequiredCarrier-servicekode (f.eks. japan_post.air.parcel).
displayNameOptionalVisningsnavn til kvittering / faktura.

Dette er den pris, køberen fik ved checkout. Den indgår i landed-cost-beregningen som „shipping"-subtotal, så told og skat beregnes mod den korrekte CIF-værdi.

5. landedCostCalculateWorkflow

Kører beregning af told, skat og gebyrer for destinationslandet. Bruger varer, parter og forsendelsesomkostninger fra de foregående trin.

FieldStatusNotes
endUseRequiredNOT_FOR_RESALE eller FOR_RESALE. Nogle destinationer anvender forskellige satser for kommerciel vs. privat slutanvendelse.
tariffRateRequiredStandard er ZONOS_PREFERRED, hvis udeladt. Fortæller Zonos, hvilken toldkilde/metodologi der skal anvendes.
calculationMethodRecommendedDDP (køber forudbetaler) eller DDU (køber betaler ved døren). Brug DDP til forudbetaling. Styrer om LandedCost.amountSubtotals inkluderer told/skat.
currencyCodeOptionalValuta, subtotaler for landed cost returneres i.
arrivalDateOptionalValutakurser og toldplaner fastlåses til denne dato, hvis angivet.

Svaret inkluderer amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — disse er tallene, du viser køberen ved checkout og som printes på handelsfakturaen.

6. shipmentCreateWorkflow

Det afsluttende trin — opretter Shipment-entiteten, genererer carrier-labelen og (valgfrit) handelsfaktura / pakkeliste.

For Japan Post Verified Accounts er det også her, Zonos kalder Japan Post Label API (kode 52) på dine vegne, indsætter dine Later Pay Numbers, opretter Declaration ID og kæder Declaration ID til trackingnummeret returneret af Japan Post.

Vigtige felter:

FieldStatusNotes
serviceLevelRequired for labelJapan Post-servicen, der skal sendes med (f.eks. japan_post.air.ems_merchandise). Skal være et japan_post.*-serviceniveau.
generateLabelOptionalStandard er true; skal være true for at returnere en label.
contentsTypeRecommendedSALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, osv. Styrer toldbehandling.
nonDeliveryOptionalHvad carrieren skal gøre, hvis levering fejler: RETURN, ABANDON, FORWARD.
referencesOptionalForhandlerleverede referencenumre printet på label og handelsfaktura. Se nedenfor.
declaredValue / isDeclaredValueOptionalForsikringsværdi for forsendelsen.
shipmentConsolidationIdOptionalBruges når denne forsendelse er del af en batch-afsendelse.

references sub-input

Disse felter printes på carrier-labelen og/eller handelsfakturaen. Brug dem til PO-numre, licensnumre og fritekstbemærkninger, modtageren eller toldmyndigheden skal se.

FieldStatusNotesLength
invoiceNumberOptionalForhandlerfakturanummer.
purchaseOrderNumberOptionalForhandler-PO-nummer.
licenseNumberOptionalEksport/import-licensnummer.
certificateNumberOptionalToldcertifikatnummer.
paymentConditionsOptionalFritekst betalingsbetingelser vist på handelsfakturaen.Begræns til 200 tegn — længere værdier overløber på den printede faktura.
customsRemarksOptionalFritekst toldbemærkninger.
taxCodeOptionalBrugerdefineret skattekode printet på labelen.

Response

De interessante felter på den returnerede Shipment er:

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

trackingDetails.number er Japan Post-trackingnummeret.

label-objektet kan returnere labelen på to måder — anmod om det, der passer til dit workflow (eller begge):

FieldReturnsUse when
urlEt hostet link til den renderede labelfil (PDF), klar til download eller print.Du vil give et link — åbn det, send det på mail eller hent filen senere uden at holde den i payload.
labelImageBase64-kodet labelbillede (PNG/PDF/ZPL) inline i svaret.Du vil have labelbytes direkte i svaret til at vedhæfte til et fulfillment-workflow eller gemme i dit WMS.

Vælg kun de felter, du har brug for. Anmodning om url holder svaret lille; anmodning om labelImage returnerer hele labelen inline, så du ikke behøver et andet round-trip for at hente den. Eksemplet ovenfor anmoder om url.

Fejlhåndtering 

  • Valideringsfejl (manglende påkrævede felter, ugyldige landekoder osv.) returneres i det standard GraphQL errors-array og afbryder resten af kæden.
  • Japan Post-fejl (labelgenerering fejlede, ugyldig adresse osv.) vises som GraphQL-fejl på shipmentCreateWorkflow. Hvis et nyt forsøg er nødvendigt, kontakt support — den anbefalede vej er at sende hele mutationen igen med rettet input.

Tilladelser 

Hvert trin er uafhængigt sikret. Din API-nøgle skal have write-scope for hver entitet i kæden (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Standard forhandlerrollen på en Verified Account giver alle disse.

Næste skridt 

Book en demo

Var denne side nyttig?