DOCS

Crea un'unica spedizione

Crea un'unica spedizione

IL CreateDeclarationShipment Il flusso di lavoro GraphQL prende una spedizione Japan Post dagli input grezzi a un'etichetta stampabile in un viaggio di andata e ritorno.

CreateDeclarationShipment catene insieme sei *Workflow mutazioni 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:

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

IL Workflow le 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 finale Shipment Indietro.

Quando il serviceLevel nella 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 finale shipmentCreateWorkflow fare un passo.

Perché una mutazione? Ogni passaggio dipende dal precedente (il costo allo sbarco richiede gli articoli + le parti; l'etichetta richiede tutto). Raggrupparli in un unico documento GraphQL mantiene i dati coerenti ed evita cinque viaggi di andata e ritorno aggiuntivi.

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 → ImpostazioniIntegrazioni → 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.

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}

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).

CampoStatoNote
typeObbligatorioORIGIN, DESTINATION, RETURN, ecc.
location.countryCodeNecessarioCodice paese ISO-2.
location.line1, locality, administrativeAreaCode, postalCodeObbligatorio per l'etichettaCampi indirizzo necessari per un'etichetta valida.
person.firstName, lastName, phoneObbligatorio per l'etichettaDettagli di contatto necessari per un'etichetta valida.
person.companyName, emailOpzionale

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.

CampoStatoNote
currencyCodeNecessarioValuta del prezzo unitario.
quantityNecessarioNumero di unità di questo articolo.
amountCondizionalePrezzo unitario (non totale). Obbligatorio a meno che totalAmount è fornito.
totalAmountFacoltativoAlternativa a amount; amount è derivato da totalAmount / quantity.
hsCodeRaccomandatoCodice tariffario del Sistema Armonizzato. Determina le aliquote dei dazi.
countryOfOriginRaccomandatoCodice ISO-2 in cui è stato realizzato l'articolo. Servizio di guida / FTA.
name, descriptionRaccomandatoNome del prodotto + descrizione rivolti al cliente.
customsDescriptionOpzionaleSostituzione della descrizione doganale.
sku, productIdOpzionaleI tuoi identificatori interni.
measurementsOpzionalePeso/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.

CampoStatoNote
dimensionalUnitObbligatorioINCH O CENTIMETER.
weight, weightUnitObbligatorio per l'etichettaJapan Post richiede il peso del pacco.
length, width, heightOpzionaleDimensioni esterne.
typeFacoltativoStile 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.

CampoStatoNote
amountObbligatorioQuanto paga l'acquirente per la spedizione. Passaggio 0 se libero.
currencyCodeObbligatorioValuta di amount.
serviceLevelCodeObbligatorioCodice servizio operatore (es. japan_post.air.parcel).
displayNameOpzionaleBel 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.

CampoStatoNote
endUseObbligatorioNOT_FOR_RESALE O FOR_RESALE. Alcune destinazioni applicano tariffe diverse per l'uso finale commerciale e personale.
tariffRateObbligatorioIl valore predefinito è ZONOS_PREFERRED se omesso. Indica a Zonos quale fonte/metodo tariffario applicare.
calculationMethodConsigliatoDDP (l'acquirente paga in anticipo) o DDU (l'acquirente paga alla porta). Utilizzo DDP per prepagato. Guida se LandedCost.amountSubtotals include dazi/tasse.
currencyCodeOpzionaleValuta in cui vengono restituiti i totali parziali dei costi logistici.
arrivalDateOpzionaleI 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:

CampoStatoNote
serviceLevelObbligatorio per l'etichettaIl servizio Japan Post con cui spedire (es. japan_post.air.ems_merchandise). Deve essere un japan_post.* livello di servizio.
generateLabelFacoltativoIl valore predefinito è true; deve essere true per restituire un'etichetta.
contentsTypeConsigliatoSALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, ecc. Determina il trattamento doganale.
nonDeliveryFacoltativoCosa deve fare il corriere se la consegna fallisce: RETURN, ABANDON, FORWARD.
referencesOpzionaleNumeri di riferimento forniti dal commerciante stampati sull'etichetta e sulla fattura commerciale. Vedi sotto.
declaredValue / isDeclaredValueOpzionaleValore assicurativo della spedizione.
shipmentConsolidationIdFacoltativoUtilizzato 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.

CampoStatoNoteLunghezza
invoiceNumberOpzionaleNumero della fattura del commerciante.
purchaseOrderNumberOpzionaleNumero ordine d'acquisto del commerciante.
licenseNumberOpzionaleNumero di licenza di esportazione/importazione.
certificateNumberOpzionaleNumero del certificato doganale.
paymentConditionsOpzionaleTermini di pagamento in testo libero riportati sulla fattura commerciale.Limite a 200 caratteri: i valori più lunghi traboccano sulla fattura stampata.
customsRemarksOpzionaleOsservazioni doganali a testo libero.
taxCodeOpzionaleCodice 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):

CampoRitorniUtilizzare quando
urlUn 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.
labelImageL'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 errors array 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 

Questa pagina è stata utile?