Endepunkt og autentisering
Forespørslene i denne kjeden bruker alle det samme endepunktet. Hva du sender i headerne avhenger av oppsettet ditt – velg fanen din.
URL:
https://api.zonos.com/graphql
Headers:
Du sender dine egne bestillinger under din egen verifiserte konto. Autentiser som deg selv – ingen kontanøkkel nødvendig.
credentialToken: {{YOUR_API_TOKEN}}
Hvor du finner det: Zonos Dashboard → Settings → Integrations → Account Key-seksjonen. Kopier tokenet på raden API key; det er din credentialToken.
Eksempelforespørsel
En komplett CreateDeclarationShipment-forespørsel som du kan kopiere og tilpasse – mutasjonen, variablene og responsen – for en enkelt Japan Post-pakke som sendes DDP til USA. Hver inndata blir delt ned i delen trinn for trinn 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 } } }}Trinn for trinn
Tabellen under bruker disse vilkårene i Status-kolonnen:
- Required – forespørselen vil mislykkes uten det.
- Required for label – valgfritt i GraphQL-skjemaet, men nødvendig for å produsere en gyldig Japan Post-etikett til USA.
- Conditional – påkrevd avhengig av et annet felt (notert inline).
- Recommended – valgfritt, men driver nøyaktige toll og skatter.
- Optional – ikke nødvendig.
1. partyCreateWorkflow
Oppretter partene som er involvert i forsendelsen – minst en ORIGIN (der forsendelsen sendes fra) og en DESTINATION (kjøperen / mottakeren).
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
type | Required | ORIGIN, DESTINATION, RETURN, etc. |
location.countryCode | Required | ISO-2 landskode. |
location.line1, locality, administrativeAreaCode, postalCode | Required for label | Adressefelt som trengs for en gyldig etikett. |
person.firstName, lastName, phone | Required for label | Kontaktdetaljer som trengs for en gyldig etikett. |
person.companyName, email | Optional |
Eksempelpayload:
[
{ "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} },
{ "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} }
]
Responsen returnerer de opprettede Party-IDene og løste adressefelt.
2. itemCreateWorkflow
Oppretter linjeartikelene som utgjør forsendelsen. Disse er SKUene som vises på handelsfakturaen og driver landed-cost-beregningen.
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
currencyCode | Required | Valuta for enhetsprisen. |
quantity | Required | Antall enheter av denne artiklen. |
amount | Conditional | Enhetspris (ikke total). Påkrevd med mindre totalAmount er gitt. |
totalAmount | Optional | Alternativ til amount; amount er utledet fra totalAmount / quantity. |
hsCode | Recommended | Harmonized System tariffkode. Driver tollsatser. |
countryOfOrigin | Recommended | ISO-2-kode hvor artiklen ble laget. Driver toll / FTA. |
name, description | Recommended | Kundevendt produktnavn + beskrivelse. |
customsDescription | Optional | Tullbeskrivelse override. |
sku, productId | Optional | Dine interne identifikatorer. |
measurements | Optional | Per-enhet vekt / dimensjoner. |
HS-koden, opprinnelsesland og beløp er de tre feltene som mest påvirker toll-/skatteutfallet i trinn 5.
3. cartonsCreateWorkflow
Oppretter de fysiske pakkene – boksene, polyposene eller brevene som skal holde artiklene.
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
dimensionalUnit | Required | INCH eller CENTIMETER. |
weight, weightUnit | Required for label | Japan Post krever pakkevekt. |
length, width, height | Optional | Ytre dimensjoner. |
type | Optional | Pakkestil (boks, polypose, brev). Standard til PACKAGE. |
Hver kartong blir en pakke på transportør-etiketten i trinn 6. Flere kartong → fleirstykks forsendelse med ett sporingsnummer per kartong.
4. shipmentRatingCreateWorkflow
Registrerer takstene kjøpmannen belaster kjøperen for frakt.
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
amount | Required | Det kjøperen betaler for frakt. Gi 0 hvis gratis. |
currencyCode | Required | Valuta for amount. |
serviceLevelCode | Required | Transportør-servicekode (f.eks. japan_post.air.parcel). |
displayName | Optional | Pen navn for kvitteringen / fakturaen. |
Dette er taksten kjøperen fikk tilbud om ved kassen. Det går inn i landed-cost-beregningen som "frakt"-subtotalen slik at toll og skatter beregnes mot riktig CIF-verdi.
5. landedCostCalculateWorkflow
Kjør toll-, skatt- og gebyrberegningen for destinasjonslandet. Bruker artiklene, partene og fraktkostnaden fra forrige trinn.
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
endUse | Required | NOT_FOR_RESALE eller FOR_RESALE. Noen destinasjoner bruker ulike takster for kommersiell vs. personlig bruk. |
tariffRate | Required | Standard til ZONOS_PREFERRED hvis utelatt. Forteller Zonos hvilken tariffkilde/-metodikk som skal brukes. |
calculationMethod | Recommended | DDP (kjøper forhåndbetaler) eller DDU (kjøper betaler ved døren). Bruk DDP for forhåndbetalt. Driver om LandedCost.amountSubtotals inkluderer toll/skatt. |
currencyCode | Optional | Valuta som landed-cost-subtotalene returneres i. |
arrivalDate | Optional | Valutakurser og tariffplaner er festet til denne datoen hvis gitt. |
Responsen inkluderer amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) – dette er tallene du viser til kjøperen ved kassen og som skrives ut på handelsfakturaen.
6. shipmentCreateWorkflow
Det siste trinnet – oppretter Shipment enheten, genererer transportør-etiketten, og (valgfritt) handelsfakturaen / pakkelisten.
For Japan Post-verifiserte kontoer, er dette også hvor Zonos kaller Japan Post Label API (kode 52) på dine vegne, injiserer dine Later Pay-numre, oppretter deklarasjons-IDen, og kobler deklarasjons-IDen til sporingsnummeret som ble returnert av Japan Post.
Viktige felt:
| Field↕ | Status↕ | Notes↕ |
|---|---|---|
serviceLevel | Required for label | Japan Post-tjenesten som skal sendes med (f.eks. japan_post.air.ems_merchandise). Må være et japan_post.* servicenivå. |
generateLabel | Optional | Standard til true; må være true for å returnere en etikett. |
contentsType | Recommended | SALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, osv. Driver tullbehandling. |
nonDelivery | Optional | Hva transportøren skal gjøre hvis levering mislykkes: RETURN, ABANDON, FORWARD. |
references | Optional | Kjøpmanns-leverte referansenumre som skrives ut på etiketten og handelsfakturaen. Se nedenfor. |
declaredValue / isDeclaredValue | Optional | Forsikringsverdien for forsendelsen. |
shipmentConsolidationId | Optional | Brukt når denne forsendelsen er del av en batch dispatch. |
references sub-input
Disse feltene skrives ut på transportør-etiketten og/eller handelsfakturaen. Bruk dem til å vise PO-numre, lisens-numre, og fri-tekst-merknader som mottakeren eller tullmyndighetene må se.
| Field↕ | Status↕ | Notes↕ | Length↕ |
|---|---|---|---|
invoiceNumber | Optional | Kjøpmanns-fakturanummer. | — |
purchaseOrderNumber | Optional | Kjøpmanns PO-nummer. | — |
licenseNumber | Optional | Eksport-/importlisens-nummer. | — |
certificateNumber | Optional | Tull-sertifikatnummer. | — |
paymentConditions | Optional | Fri-tekst-betalingsvilkår vist på handelsfakturaen. | Grens til 200 tegn – lengre verdier overflyter på den trykte fakturaen. |
customsRemarks | Optional | Fri-tekst tullmerknader. | — |
taxCode | Optional | Egendefinert skattekode trykt på etiketten. | — |
Response
De interessante feltene på returnert Shipment er:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}
}
}
trackingDetails.number er Japan Post sporingsnummeret.
label-objektet kan returnere etiketten på to måter – be om den som passer arbeidsflyten din (eller begge):
| Field↕ | Returns↕ | Use when↕ |
|---|---|---|
url | En hosted link til den renderte etikettfilen (PDF), klar til nedlasting eller utskrift. | Du vil levere en lenke – åpne den, send den e-post, eller hent filen senere uten å holde den i payloaden. |
labelImage | Den base64-kodede etikettbildet (PNG/PDF/ZPL) inline i responsen. | Du vil ha etikettbytene direkte i responsen for å legge til arbeidsflyten for oppfyllelse eller lagring til WMS. |
Velg bare feltene du trenger. Å be om url holder responsen liten; å be om labelImage returnerer hele etiketten inline slik at du ikke trenger en annen rund for å hente den. Eksempelet over ber om url.
Feilhåndtering
- Valideringsfeil (manglende påkrevde felt, ugyldige landskoder, osv.) kommer tilbake i standard GraphQL
errorsmatrise og avbryter resten av kjeden. - Japan Post feil (etikettgenereringsfeil, ugyldig adresse, osv.) oppstår som GraphQL feil på
shipmentCreateWorkflow. Hvis et nytt forsøk er nødvendig, kontakt support – den anbefalte veien er å sende den fullstendige mutasjonen på nytt med korrigert inndata.
Tillatelser
Hvert trinn er uavhengig sikret. Din API-nøkkel må holde skriveomfanget for hver enhet i kjeden (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Standartkjøpmannsrollen på en verifisert konto gir alle disse.
Neste steg
- Batch dispatch (konsolidering) – samle dagens pakker til en Japan Post utsatt-betaling forsendelseslipp.
Opprett en forsendelse
CreateDeclarationShipmentGraphQL-arbeidsflyten tar en Japan Post-forsendelse fra rå inndata til en utskrivbar etikett i en enkelt rund.CreateDeclarationShipmentkjeder sammen seks*Workflowmutasjoner i en enkelt GraphQL-forespørsel. Hvert trinn bygger på dataene fra forrige trinn, og alle sendes inn sammen slik at en komplett forsendelse kan opprettes i en enkelt rund:Workflowmutasjonene er designet for å være kjededet: du trenger ikke å tråde IDer fra ett trinn til det neste, og du trenger ikke å sende en separat forespørsel per trinn. Send hele dokumentet, få den endeligeShipmenttilbake.Når
serviceLevelpå det siste trinnet er et Japan Post-servicenivå (japan_post.*), kaller Zonos Japan Post Label API (kode 52) på dine vegne ved hjelp av Later Pay-tallene for din verifiserte konto, genererer etiketten og sporingsnummeret, oppretter deklarasjons-IDen, og kobler dem sammen – alt innenfor det sisteshipmentCreateWorkflow-trinnet.