Endpoint e autenticazione
Le richieste in questa catena utilizzano tutte lo stesso endpoint. Ciò che passi nelle intestazioni dipende dalla tua configurazione: scegli la tua scheda.
URL:
https://api.zonos.com/graphql
Intestazioni:
Spedisci i tuoi ordini con il tuo account verificato. Autenticati come te stesso: non è necessaria alcuna chiave account.
credentialToken: {{YOUR_API_TOKEN}}
Dove trovarlo: Zonos Dashboard → Impostazioni → Integrazioni → la sezione Chiave account. Copia il token sulla riga API key; quello è tuo credentialToken.
Richiesta di esempio
Un completo CreateDeclarationShipment richiesta che puoi copiare e adattare (la mutazione, le sue variabili e la risposta) per un singolo pacco Japan Post spedito DDP negli Stati Uniti. Ogni input è suddiviso nella sezione passo passo di seguito.
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 } } }}Passo dopo passo
Il Status colonna in ciascuna tabella seguente utilizza questi termini:
- Obbligatorio: senza di esso la richiesta fallisce.
- Obbligatorio per l'etichetta: facoltativo nello schema GraphQL, ma necessario per produrre un'etichetta statunitense Japan Post valida.
- Condizionale: richiesto in base a un altro campo (annotato in linea).
- Consigliato: facoltativo, ma prevede dazi e tasse accurati.
- Facoltativo: non necessario.
1. partyCreateWorkflow
Crea le parti coinvolte nella spedizione, come minimo an ORIGIN (da dove viene spedita la spedizione) e a DESTINATION (the buyer / consignee).
| Campo↕ | Stato↕ | Note↕ |
|---|---|---|
type | Obbligatorio | ORIGIN, DESTINATION, RETURN, ecc. |
location.countryCode | Necessario | Codice paese ISO-2. |
location.line1, locality, administrativeAreaCode, postalCode | Obbligatorio per l'etichetta | Campi indirizzo necessari per un'etichetta valida. |
person.firstName, lastName, phone | Obbligatorio per l'etichetta | Dettagli di contatto necessari per un'etichetta valida. |
person.companyName, email | Opzionale |
Example payload:
[
{ "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} },
{ "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} }
]
La risposta restituisce il file create Party ID e campi indirizzo risolti.
2. itemCreateWorkflow
Creates the line items that make up the shipment. These are the SKUs that will appear on the commercial invoice and drive the landed-cost calculation.
| Campo↕ | Stato↕ | Note↕ |
|---|---|---|
currencyCode | Necessario | Valuta del prezzo unitario. |
quantity | Necessario | Numero di unità di questo articolo. |
amount | Condizionale | Prezzo unitario (non totale). Obbligatorio a meno che totalAmount è fornito. |
totalAmount | Facoltativo | Alternativa a amount; amount è derivato da totalAmount / quantity. |
hsCode | Raccomandato | Codice tariffario del Sistema Armonizzato. Determina le aliquote dei dazi. |
countryOfOrigin | Raccomandato | Codice ISO-2 in cui è stato realizzato l'articolo. Servizio di guida / FTA. |
name, description | Raccomandato | Nome del prodotto + descrizione rivolti al cliente. |
customsDescription | Opzionale | Sostituzione della descrizione doganale. |
sku, productId | Opzionale | I tuoi identificatori interni. |
measurements | Opzionale | Peso/dimensioni unitari. |
The HS code, country of origin, and amount are the three fields that most influence the duty/tax outcome in step 5.
3. cartonsCreateWorkflow
Creates the physical packages — the boxes, polybags, or letters that will hold the items.
| Campo↕ | Stato↕ | Note↕ |
|---|---|---|
dimensionalUnit | Obbligatorio | INCH O CENTIMETER. |
weight, weightUnit | Obbligatorio per l'etichetta | Japan Post richiede il peso del pacco. |
length, width, height | Opzionale | Dimensioni esterne. |
type | Facoltativo | Stile di imballaggio (scatola, sacchetto di plastica, lettera). Il valore predefinito è PACKAGE. |
Ogni cartone diventa un pacco sull'etichetta del corriere al punto 6. Cartoni multipli → spedizione in più pezzi con un numero di tracciabilità per cartone.
4. shipmentRatingCreateWorkflow
Records the rate quote the merchant is charging the buyer for shipping.
| Campo↕ | Stato↕ | Note↕ |
|---|---|---|
amount | Obbligatorio | Quanto paga l'acquirente per la spedizione. Passaggio 0 se libero. |
currencyCode | Obbligatorio | Valuta di amount. |
serviceLevelCode | Obbligatorio | Codice servizio operatore (es. japan_post.air.parcel). |
displayName | Opzionale | Bel nome per la ricevuta/fattura. |
This is the rate the buyer was quoted at checkout. It feeds into the landed-cost calculation as the "shipping" subtotal so duties and taxes are computed against the correct CIF value.
5. landedCostCalculateWorkflow
Runs the duties, taxes, and fees calculation for the destination country. Uses the items, parties, and shipping cost from the prior steps.
| Campo↕ | Stato↕ | Note↕ |
|---|---|---|
endUse | Obbligatorio | NOT_FOR_RESALE O FOR_RESALE. Alcune destinazioni applicano tariffe diverse per l'uso finale commerciale e personale. |
tariffRate | Obbligatorio | Il valore predefinito è ZONOS_PREFERRED se omesso. Indica a Zonos quale fonte/metodo tariffario applicare. |
calculationMethod | Consigliato | DDP (l'acquirente paga in anticipo) o DDU (l'acquirente paga alla porta). Utilizzo DDP per prepagato. Guida se LandedCost.amountSubtotals include dazi/tasse. |
currencyCode | Opzionale | Valuta in cui vengono restituiti i totali parziali dei costi logistici. |
arrivalDate | Opzionale | I tassi di cambio e i programmi tariffari sono fissati a questa data, se forniti. |
The response includes amountSubtotals (duties, taxes, fees, shipping, landedCostTotal): questi sono i numeri che mostri all'acquirente al momento del pagamento e che vengono stampati sulla fattura commerciale.
6. shipmentCreateWorkflow
Il passaggio terminale: crea il Shipment entity, generates the carrier label, and (optionally) the commercial invoice / packing slip.
For Japan Post Verified Accounts, this is also where Zonos calls the Japan Post Label API (code 52) on your behalf, injects your Later Pay Numbers, creates the Declaration ID, and links the Declaration ID to the tracking number returned by Japan Post.
Key fields:
| Campo↕ | Stato↕ | Note↕ |
|---|---|---|
serviceLevel | Obbligatorio per l'etichetta | Il servizio Japan Post con cui spedire (es. japan_post.air.ems_merchandise). Deve essere un japan_post.* livello di servizio. |
generateLabel | Facoltativo | Il valore predefinito è true; deve essere true per restituire un'etichetta. |
contentsType | Consigliato | SALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, ecc. Determina il trattamento doganale. |
nonDelivery | Facoltativo | Cosa deve fare il corriere se la consegna fallisce: RETURN, ABANDON, FORWARD. |
references | Opzionale | Numeri di riferimento forniti dal commerciante stampati sull'etichetta e sulla fattura commerciale. Vedi sotto. |
declaredValue / isDeclaredValue | Opzionale | Valore assicurativo della spedizione. |
shipmentConsolidationId | Facoltativo | Utilizzato quando questa spedizione fa parte di a spedizione in batch. |
references sub-input
These fields print on the carrier label and/or commercial invoice. Use them to surface PO numbers, license numbers, and free-text remarks the consignee or customs authority needs to see.
| Campo↕ | Stato↕ | Note↕ | Lunghezza↕ |
|---|---|---|---|
invoiceNumber | Opzionale | Numero della fattura del commerciante. | — |
purchaseOrderNumber | Opzionale | Numero ordine d'acquisto del commerciante. | — |
licenseNumber | Opzionale | Numero di licenza di esportazione/importazione. | — |
certificateNumber | Opzionale | Numero del certificato doganale. | — |
paymentConditions | Opzionale | Termini di pagamento in testo libero riportati sulla fattura commerciale. | Limite a 200 caratteri: i valori più lunghi traboccano sulla fattura stampata. |
customsRemarks | Opzionale | Osservazioni doganali a testo libero. | — |
taxCode | Opzionale | Codice fiscale personalizzato stampato sull'etichetta. | — |
Response
The interesting fields on the returned Shipment Sono:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}
}
}
trackingDetails.number è il numero di tracciamento Japan Post.
IL label object can return the label two ways — request whichever fits your workflow (or both):
| Campo↕ | Ritorni↕ | Utilizzare quando↕ |
|---|---|---|
url | Un collegamento ospitato al file dell'etichetta renderizzata (PDF), pronto per il download o la stampa. | Vuoi distribuire un collegamento: aprilo, invialo tramite e-mail o recupera il file in un secondo momento senza tenerlo nel payload. |
labelImage | L'immagine dell'etichetta con codifica base64 (PNG/PDF/ZPL) incorporata nella risposta. | Desideri che i byte dell'etichetta direttamente nella risposta siano allegati a un flusso di lavoro di evasione o salvati nel tuo WMS. |
Select only the fields you need. Requesting url mantiene la risposta piccola; richiedente labelImage restituisce l'etichetta completa in linea, quindi non è necessario un secondo viaggio di andata e ritorno per recuperarla. L'esempio sopra richiede url.
Gestione degli errori
- Errori di convalida (campi obbligatori mancanti, codici paese non validi, ecc.) ritornano nello standard GraphQL
errorsarray e interrompere il resto della catena. - Gli errori Japan Post (errore di generazione dell'etichetta, indirizzo non valido, ecc.) vengono visualizzati come errori GraphQL su
shipmentCreateWorkflow. Se è necessario riprovare, contattare l'assistenza: il percorso consigliato è inviare nuovamente la mutazione completa con l'input corretto.
Autorizzazioni
Ogni passaggio è protetto in modo indipendente. La tua chiave API deve contenere l'ambito di scrittura per ciascuna entità nella catena (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Il ruolo di commerciante standard su un account verificato garantisce tutto ciò.
Passaggi successivi
- Invio batch (consolidamento) — raggruppare i pacchi giornalieri in un'unica distinta di spedizione con pagamento differito Japan Post.
Crea un'unica spedizione
IL
CreateDeclarationShipmentIl flusso di lavoro GraphQL prende una spedizione Japan Post dagli input grezzi a un'etichetta stampabile in un viaggio di andata e ritorno.CreateDeclarationShipmentcatene insieme sei*Workflowmutazioni in una singola richiesta GraphQL. Ogni passaggio si basa sui dati forniti dai passaggi precedenti e tutti vengono inviati insieme in modo che sia possibile creare una spedizione completa in un unico viaggio di andata e ritorno:IL
Workflowle mutazioni sono progettate per essere concatenate: non è necessario infilare gli ID da un passaggio a quello successivo e non è necessario inviare una richiesta separata per passaggio. Invia l'intero documento, ottieni il finaleShipmentIndietro.Quando il
serviceLevelnella fase finale c'è un livello di servizio Japan Post (japan_post.*), Zonos chiama l'etichetta Japan Post API (codice 52) per tuo conto utilizzando i numeri di pagamento successivi del tuo account verificato, genera l'etichetta e il numero di tracciamento, crea l'ID dichiarazione e li collega, il tutto all'interno di quell'etichetta finaleshipmentCreateWorkflowfare un passo.