Skip to main content

Preventivo spedizioni

L’endpoint POST /api/v1/integrations/shipments/quote calcola i preventivi di tutti i corrieri disponibili per una spedizione, ordinati per totalPriceWithVat crescente. Usa lo stesso motore tariffario dell’app E-Manager (get_best_carriers_v5).

Tracking spedizioni

Due endpoint separati consentono di consultare il tracking strutturato delle spedizioni della company. Entrambi richiedono lo scope shipments:tracking.

Per numero tracking

GET /api/v1/integrations/shipments/tracking/by-tracking-number/{trackingNumber} Restituisce un oggetto singolo con metadati spedizione, ordine, corriere, destinatario (senza email/telefono), timeline eventi e spedizioni correlate opzionali. La ricerca accetta:
  • numero tracking principale (con normalizzazione spazi/punto e prefisso MUL)
  • tracking su etichette secondarie
  • identificativi alternativi: reference, parcelId, marketplaceOrderId, marketplaceOrderNumber

Per numero ordine marketplace

GET /api/v1/integrations/shipments/tracking/by-order-number/{orderNumber} Il parametro orderNumber corrisponde a orders.marketplace_order_number (non al numero ordine interno E-Manager). Match esatto sul valore indicato. Restituisce un array di oggetti tracking per tutte le spedizioni collegate agli ordini corrispondenti. HTTP 404 se non esistono ordini o spedizioni per la company dell’API key.

Esempio risposta tracking

Esempi curl tracking

Flusso consigliato (preventivo)

1

Scegli il magazzino

Recupera warehouseId da GET /api/v1/integrations/warehouses (modalità manuale) oppure usa un orderId esistente.
2

Richiedi il preventivo

Invia POST /api/v1/integrations/shipments/quote con scope shipments:quote.
3

Scegli il corriere

Dal risultato, usa carrierCompanyId del preventivo scelto per la creazione spedizione (endpoint futuro o flusso ordini).

Modalità di input

Modalità A — da ordine

E-Manager carica automaticamente indirizzo, magazzino, peso/volume, COD e assicurazione dall’ordine.

Modalità B — manuale

In alternativa a totalWeight/totalVolume, puoi inviare un array parcels:
orderId e i campi manuali sono mutuamente esclusivi. Non combinarli nella stessa richiesta.

Risposta di successo

HTTP 200 con array diretto (senza wrapper items):
Ogni elemento include il breakdown completo: pesi (chargeableWeight, realWeight, volumetricWeight), componenti prezzo, opzioni corriere (carrierOptionsDetail con price, calculated, description) e totali (totalPrice, vatAmount, totalPriceWithVat, codPrice, insurancePrice).

Risposta warning

Se nessun corriere è applicabile, HTTP 200 restituisce un oggetto singolo (non un array vuoto):

Codici warning

Esempi curl

Manuale

Da ordine

Campi esclusi dalla risposta pubblica

Per motivi di sicurezza e semplicità, l’API non espone: carrier_id, logo_url, is_active, is_connected, delete_flag, purchase, metadati interni delle opzioni (name, option_id, is_custom) né link UI (action).

Riferimento OpenAPI

Vedi lo schema OpenAPI del preventivo per i tipi completi IntegrationsShipmentQuoteItemDto e IntegrationsShipmentQuoteWarningDto. Per il tracking, consulta Tracking per numero spedizione e Tracking per numero ordine marketplace per lo schema IntegrationsShipmentTrackingResponseDto.