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 → Settings → Integrations → 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.
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 } } }}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).
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
type | Required | ORIGIN, DESTINATION, RETURN, osv. |
location.countryCode | Required | ISO-2-landekode. |
location.line1, locality, administrativeAreaCode, postalCode | Required for label | Adressefelter nødvendige for en gyldig label. |
person.firstName, lastName, phone | Required for label | Kontaktoplysninger nødvendige for en gyldig label. |
person.companyName, email | Optional |
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.
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
currencyCode | Required | Valuta for enhedsprisen. |
quantity | Required | Antal enheder af denne vare. |
amount | Conditional | Enhedspris (ikke total). Påkrævet medmindre totalAmount er angivet. |
totalAmount | Optional | Alternativ til amount; amount afledes fra totalAmount / quantity. |
hsCode | Recommended | Harmonized System-toldkode. Driver toldsatser. |
countryOfOrigin | Recommended | ISO-2-kode for hvor varen er fremstillet. Driver told / FTA. |
name, description | Recommended | Kundevendt produktnavn + beskrivelse. |
customsDescription | Optional | Toldbeskrivelse override. |
sku, productId | Optional | Dine interne identifikatorer. |
measurements | Optional | Væ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.
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
dimensionalUnit | Required | INCH eller CENTIMETER. |
weight, weightUnit | Required for label | Japan Post kræver pakkevægt. |
length, width, height | Optional | Ydre dimensioner. |
type | Optional | Emballagestil (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.
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
amount | Required | Hvad køberen betaler for forsendelse. Send 0 hvis gratis. |
currencyCode | Required | Valuta for amount. |
serviceLevelCode | Required | Carrier-servicekode (f.eks. japan_post.air.parcel). |
displayName | Optional | Visningsnavn 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.
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
endUse | Required | NOT_FOR_RESALE eller FOR_RESALE. Nogle destinationer anvender forskellige satser for kommerciel vs. privat slutanvendelse. |
tariffRate | Required | Standard er ZONOS_PREFERRED, hvis udeladt. Fortæller Zonos, hvilken toldkilde/metodologi der skal anvendes. |
calculationMethod | Recommended | DDP (køber forudbetaler) eller DDU (køber betaler ved døren). Brug DDP til forudbetaling. Styrer om LandedCost.amountSubtotals inkluderer told/skat. |
currencyCode | Optional | Valuta, subtotaler for landed cost returneres i. |
arrivalDate | Optional | Valutakurser 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:
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
serviceLevel | Required for label | Japan Post-servicen, der skal sendes med (f.eks. japan_post.air.ems_merchandise). Skal være et japan_post.*-serviceniveau. |
generateLabel | Optional | Standard er true; skal være true for at returnere en label. |
contentsType | Recommended | SALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, osv. Styrer toldbehandling. |
nonDelivery | Optional | Hvad carrieren skal gøre, hvis levering fejler: RETURN, ABANDON, FORWARD. |
references | Optional | Forhandlerleverede referencenumre printet på label og handelsfaktura. Se nedenfor. |
declaredValue / isDeclaredValue | Optional | Forsikringsværdi for forsendelsen. |
shipmentConsolidationId | Optional | Bruges 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.
| Field↕ | Status↕ | Notes↕ | Length↕ |
|---|---|---|---|
invoiceNumber | Optional | Forhandlerfakturanummer. | — |
purchaseOrderNumber | Optional | Forhandler-PO-nummer. | — |
licenseNumber | Optional | Eksport/import-licensnummer. | — |
certificateNumber | Optional | Toldcertifikatnummer. | — |
paymentConditions | Optional | Fritekst betalingsbetingelser vist på handelsfakturaen. | Begræns til 200 tegn — længere værdier overløber på den printede faktura. |
customsRemarks | Optional | Fritekst toldbemærkninger. | — |
taxCode | Optional | Brugerdefineret 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):
| Field↕ | Returns↕ | Use when↕ |
|---|---|---|
url | Et 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. |
labelImage | Base64-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
- Batch-afsendelse (konsolidering) — pak dagens pakker i én Japan Post deferred-payment-afsendelseskvittering.
Opret en enkelt forsendelse
CreateDeclarationShipmentGraphQL-workflowet tager en Japan Post-forsendelse fra rå input til en printbar label i ét round-trip.CreateDeclarationShipmentkæ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: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 endeligeShipmenttilbage.Når
serviceLeveli 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 sidsteshipmentCreateWorkflow-trin.