API Inbound

Questa api consente di gestire i viaggi Inbound.

Operazioni

L'API espone i seguenti metodi:

Creazione di una DDT

Consente di caricare a sistema una DDT.

Risponde a richieste POST verso /inbound/BOL

Per identificare la DDT da creare viene richiesto un oggetto JSON contenente i seguenti campi:

  • vendor(opzionale): codice dell’editore che ha generato il carico - string
  • number: numero DDT - string, massimo 10 caratteri alfanumerici
  • date: data DDT - date
  • transporter: soggetto che effettua il trasporto. È composto dalle seguenti proprietà:
    • type: tipologia del soggetto - string. Può assumere i seguenti valori:
      • none: nessun soggetto trasportatore specificato,
      • vendor: il viaggio è gestito direttamente dall’editore specificato in vendor,
      • operator: il viaggio è gestito da un operatore terzo (legatore o trasportatore). L’operatore terzo deve essere identificato obbligatoriamente tramite i campi indicati in seguito
    • customerCode: codice legatoria dell’operatore terzo - string
    • country: codice nazionalità dell’operatore terzo, di default "IT" - string di esattamente 2 caratteri
    • vatNumber: partita IVA dell’operatore terzo - string di esattamente 11 caratteri
    • name: nome trasportatore
  • plant: codice magazzino - string. Può assumere i seguenti valori:
    • ME60: C&M Book Logistics di Stradella
    • ME61: Geodis Landriano
  • pallets: numero bancali - number
  • packages: numero dei colli - number
  • copies: numero delle copie - number
  • titles: array di titoli presenti nella DDT. Ogni oggetto della lista è composto da:
    • ean: codice EAN - string
    • quantity: quantità del prodotto - number
    • orderNumber: numero ordine editore - string , massimo 50 caratteri
  • notes(opzionale): nota descrittiva associata alla DDT - string
  • waybill(opzionale): lettera di vettura/numero di spedizione - string

Oltre ai dati della DDT, la API consente di caricare un allegato in formato PDF (vedi oltre).

Controlli di validazione

Il metodo API effettua i seguenti controlli di validazione:

  • il customerCode deve corrispondere a un codice legatoria registrato a sistema. È alternativo a vatNumber.
  • il vatNumber deve corrispondere a un operatore terzo registrato a sistema. È alternativo a customerCode.
  • il numero dei bancali, pallets, deve essere compreso tra 0 e 33.
  • il numero dei colli, packages, deve essere compreso tra 0 e 100000.
  • il numero delle copie, copies, deve essere compreso tra 0 e 100000.
  • la lettera di vettura / numero di spedizione, waybill, deve avere una lunghezza massima di 30 caratteri.
  • gli EAN devono esistere e appartenente all’editore associato alla DDT.
  • le quantità devono essere maggiori di 1.

Inoltre: 

  • i dati obbligatori devono essere passati e il pdf, se viene passato, deve essere un file pdf valido,
  • i dati inviati devono rispettare le regole di validazione,
  • se nei dati non viene specificato il parametro vendor, e l’utente è un editore, il suo valore viene dedotto dal token di autenticazione

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 409 (Conflict): DDT già presente a sistema.

Esempio richiesta

I dati vengono passati con Content-Type: multipart/form-data. La prima parte (name=”request”) contiene i dati della DDT, la seconda (name=”attachment”) il contenuto binario del PDF.

Authorization: Bearer [TOKEN JWT]
Content-Type: multipart/form-data 
boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="request"

{
   "vendor":"887",
   "number":"Cg4567",
   "date":"2021-01-07",
   "plant":"ME60",
   "pallets":2,
   "packages":100,
   "copies":2000,
   "transporter":{
      "type":"operator",
      "customerCode":"06998811"
   },
   "titles":[
      {
         "ean":"9788876180699",
         "quantity":10
      },
      {
         "ean":"9788876180170",
         "quantity":100
      }
   ]
}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="attachment"; filename="Attach.pdf"
Content-Type: application/pdf

<contenuto binario del file pdf>
------WebKitFormBoundary7MA4YWxkTrZu0gW--

Se la chiamata va a buon fine viene restituito il BillOfLadingID.

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_bol_add

altrimenti viene restituito 403 (Forbidden)

Ricerca di una o più DDT

Consente la ricerca di una o più DDT.

Risponde a richieste GET  verso /inbound/BOL 

E' possibile passare in querystring i seguenti parametri, tutti opzionali:

  • id: ID ddt - string
  • vendor: editore ddt - string
  • number: numero ddt - string
  • state: stato di consegna della DDT - enum. Può assumere i seguenti valori: 
    • draft,
    • toBeReceived,
    • received,
    • processed,
    • canceled
  • startDate: data per la ricerca (da) - string date
  • endDate: data per la ricerca (a) - string date
  • createdDateFrom: data di creazione DDT per la ricerca (da) - string date
  • createdDateTo: data di creazione DDT per la ricerca (a) - string date
  • draftDateFrom: data bozza DDT (da) - string date
  • draftDateTo: data bozza DDT (a) - string date
  • plant: impianto di destinazione - string
  • transporter: codice del trasportatore - string                          
  • orderBy: campo su cui effettuare l’ordinamento - può assumere i seguenti valori di tipo string:
    • number,
    • date,
    • plant,
    • transporter,
    • receiveDate,
    • pallets,
    • packages, 
    • count,
    • copies      

L’operazione restituisce un oggetto JSON contenente i seguenti campi: 

  • totalCount: numero totale di DDT trovate
  • totalPages: numero totale di pagine previste
  • page: informazioni sulla pagina corrente. Contiene:
    • index: indice della pagina corrente
    • size: dimensione della pagina
    • from: indice del primo elemento della pagina (se la pagina ha elementi)
    • to: indice dell'ultimo elemento della pagina (se la pagina ha elementi)
  • bols: elenco delle DDT . Contiene:
    • id: Id della DDT
    • vendor: editore. Contiene:
      • code: codice editore
      • description: descrizione editore
    • number: numero DDT
    • date: data DDT
    • plant: codice dell'impianto di destinazione della DDT
    • state: stato di consegna della DDT. Può assumere i seguenti valori:
      • -1 (draft): bozza
      • 0 (toBeReceived): non consegnato
      • 1 (received): ricevuto
      • 2 (processed): processato
      • 6 (canceled): annullato
    • receiveDate: data di ricezione della DDT
    • pallets: numero bancali
    • packages: numero colli
    • titleSummary: riepilogo titoli. Contiene: 
      • count: numero titoli
      • copies: numero copie
    • transporter: soggetto che effettua il trasporto. Contiene:
      • type: tipologia del soggetto. Può assumere i seguenti valori:
        • none
        • vendor
        • operator
      • country: codice nazionalità dell'operatore terzo
      • vatNumber: partita IVA dell'operatore terzo
      • name: nome dell'operatore terzo
    • transportID: numero viaggio

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.


Esempio Richiesta

GET https://api.messaggerielibri.it/BOL?startDate=2021-06-01&state=received
Authorization: Bearer [TOKEN JWT]


Esempio risposta

{
	"totalCount": 1,
	"totalPages": 1,
	"page": {
		"index": 1,
		"size": 50,
		"from": 1,
		"to": 1
	},
	"bols": [
		{
			"id": "2100000240",
			"vendor": {
				"code": "015",
				"description": "IL MULINO"
			},
			"number": "LANDRI",
			"date": "2021-12-23",
			"plant": "ME61",
			"state": 1,
			"receiveDate": "2021-12-24",
			"pallets": 33,
			"packages": 90,
			"titleSummary": {
				"count": 3,
				"copies": 3
			},
			"transporter": {
				"type": "operator",
				"country": "IT",
				"vatNumber": "05714511002",
				"name": "SDA"
			},
			"transportID": "0000000999"
		}
	]
}

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_read

altrimenti viene restituito 403 (Forbidden)

Dettaglio di una DDT in base all'ID

Consente di recuperare il dettaglio di una DDT in base all'ID.

Risponde a richieste GET verso: /inbound/BOL/{id}, dove {id} rappresenta identificativo univoco della DDT che si vuole recuperare.

L’operazione restituisce un oggetto JSON contenente i seguenti campi:

  • id: Id della DDT
  • vendor: editore. Contiene:
    • code: codice editore
    • description: descrizione editore
  • number: numero DDT
  • date: data DDT
  • plant: codice dell'impianto di destinazione della DDT
  • state: stato di consegna della DDT. Può assumere i seguenti valori:
    • -1 (draft): bozza
    • 0 (toBeReceived): non consegnato
    • 1 (received): ricevuto
    • 2 (processed): processato
    • 6 (canceled): annullato
  • createDate: data di creazione della DDT
  • lastChangeDate: data di modifica della DDT
  • rceiveDate: data di ricezione della DDT
  • receiptsNotes: note di ricezione
  • pallets: numero bancali
  • packages: numero colli
  • titles: elenco dei titoli contenuti nella DDT. Contiene:
    • ean: codice EAN
    • quantity: numero copie
    • receivedQuantity: quantità ricevuta. Contiene:
      • quantityGood: quantità riscontrata buoni
      • quantityBad: quantità riscontrata guasti
    • orders: lista di ordini. Contiene:
      • number: numero ordine editore
      • quantity: numero copie
  • transporter: soggetto che effettua il trasporto. Contiene:
    • type: tipologia del soggetto. Può assumere i seguenti valori:
      • none
      • vendor
      • operator
    • country: codice nazionalità dell'operatore terzo
    • vatNumber: partita IVA dell'operatore terzo
    • name: nome dell'operatore terzo
  • transport:
    • id: Id del viaggio
    • plant: codice dell'impianto di destinazione del viaggio
    • delivery: consegna. Contiene:
      • date: data di consegna
      • from: ora inizio slot di consegna
      • to: ora fine slot di consegna
    • pallets: numero bancali
    • packages: numero colli
    • transporter: soggetto che effettua il trasporto. Contiene:
      • type: tipologia del soggetto. Può assumere i seguenti valori:
        • none
        • vendor
        • operator
      • country: codice nazionalità dell'operatore terzo
      • vatNumber: partita IVA dell'operatore terzo
      • name: nome dell'operatore terzo

L’API può restituire i seguenti codici di errore: 

  • 400 (Bad Request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcuna DDT.

 

Esempio richiesta:

GET https://api.messaggerielibri.it/BOL/1900000061
Authorization: Bearer [TOKEN JWT]


Esempio risposta:

{
	"id": "1900000061",
	"vendor": {
		"code": "243",
		"description": "FELTRINELLI EDITORE"
	},
	"number": "002 - 21.05",
	"date": "2019-05-21",
	"plant": "ME60",
	"state": 2,
	"lastChangeDate": "2021-11-26T14:04:45.713Z",
	"receiveDate": "2019-05-22",
	"pallets": 2,
	"packages": 3,
	"transporter": {
		"type": "operator",
		"country": "IT",
		"vatNumber": "34455667788",
		"name": "GLR TRASPORTI "
	},
	"transport": {
		"id": "0000000453",
		"plant": "ME60",
		"delivery": {
			"date": "2019-05-25",
			"from": "10:01",
			"to": "10:30"
		},
		"pallets": 1,
		"packages": 12,
		"transporter": {
			"type": "operator",
			"country": "IT",
			"vatNumber": "34455667788",
			"name": "GLR TRASPORTI "
		}
	}
}

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_read

altrimenti viene restituito 403 (Forbidden)

Conferma DDT

Conferma la ricezione di una DDT a magazzino.

Risponde a richieste POST verso l'endpoint /inbound/BOL/{id}/confirm

Per identificare la DDT da confermare sono utilizzati i seguenti parametri:

  • id: identificativo univoco della DDT da confermare - string

Alla conferma può essere passato il seguente valore (opzionale) nel body, come stringa:

  • data di ricezione della DDT a magazzino (in formato UTC)

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcuna DDT.

 

Esempio richiesta

POST https://api.messaggerielibri.it/inbound/BOL/2100000123/confirm
Authorization: Bearer [TOKEN JWT]

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_bol_confirm

altrimenti viene restituito 403 (Forbidden)

Rimozione DDT dal viaggio

Consente di rimuovere una DDT da un viaggio esistente

Risponde a richieste DELETE verso l'endpoint /inbound/transport/{transportNumber}/bols/{billOfLadingId}

Per identificare la DDT da eliminare sono utilizzati i seguenti parametri:

  • transportNumber : di tipo string. rapresenta il numero del viaggio.
  • billOfLadingId: di tipo string rapresenta l'id del ddt da eliminare.

Se l’esecuzione è terminata con successo, l’API restituisce 204 No Content senza alcun body.

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcuna DDT o alcun viaggio.


Esempio richiesta

https://api.messaggerielibri.it/inbound/transport/0000000577/bols/1900000002

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_write

altrimenti viene restituito 403 (Forbidden)

Conferma la ricezione di un viaggio

Consente la conferma dell'arrivo di un viaggio.

Risponde a richieste POST verso /inbound/transportConfirm

La conferma richiede un oggetto JSON contenente i seguenti campi:

  • transportNumber: di tipo string. Deve essere di 10 caratteri e non può essere nullo o vuoto. Indica l’id del viaggio
  • notes (opzionale): di tipo string e di massimo 1000 caratteri. Indica le note associate alla conferma dell’arrivo del viaggio

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcun viaggio.


Esempio richiesta

POST https://api.messaggerielibri.it/inbound/transportConfirm
Authorization: Bearer [TOKEN JWT]

{
    "transportNumber": "0123456789",
    "notes": "Note conferma viaggio"
}

 

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • INBOUND_TRANSPORT_CONFIRM

altrimenti viene restituito 403 (Forbidden)

Ricerca di uno o più viaggi

Consente la ricerca di uno o più viaggi

Risponde a richieste GET verso /inbound/transport

È possibile passare in querystring i seguenti parametri opzionali:

  • id: lista di uno o più id viaggio ,ognuno di tipo string
  • status: stato del Può assumere i seguenti valori
  • all: tutti i possibili stati del viaggio
  • archived: solo i viaggi che hanno note di conferma=annullato
  • confirmed: solo i viaggi che hanno il flag di conferma
  • canceled: solo i viaggi che hanno il flag di conferma
  • open: solo i viaggi in stato confirmed con data nel futuro
  • closed: solo i viaggi in stato confirmed ma con data nel passato
  • startDate: limite inferiore sulla data del viaggio. Di tipo date
  • startDate: limite inferiore sulla data del viaggio. Di tipo date
  • endDate: limite superiore sulla data del viaggio. Di tipo date
  • transporter: partita IVA del trasportatore del viaggio
  • pageIndex: numero della pagina di record da restituire, di tipo number
  • pageSize: quanti record restituire per pagina, di tipo number
  • orderDirection: tipo di ordinamento, di tipo string. Può avere come valore asc o desc
  • orderBy: campo su cui effettuare l’ordinamento, di tipo string. Può assumere i seguenti valori:
    • id
    • transporter
    • plant
    • date
    • hour
    • pallet
    • package
  • plant: magazzino del viaggio. Può assumere i seguenti valori:
    • all
    • stradella
    • landriano

 

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.

 

Esempio richiesta

GET https://api.messaggerielibri.it/inbound/transport?status=opened
Authorization: Bearer [TOKEN JWT]

 

Esempio risposta

{
   "totlaCount":1,
   "totalPages ":1,
   "page":{
      "index":1,
      "size":50,
      " from":1,
      "to":1
   },
   "transports":[
      {
         "id":"6",
         "plant":"Landriano",
         "delivery":{
            "date":"2019-05-11",
            "from":"14:00",
            "to":"15:30"
         },
         "pallets":5,
         "packages":3,
         "bolCount":"05",
         "transporter":{
            "type":"operator",
            "country":"IT",
            "vatNumber":"11111111111",
            "name":"AM TRASPORTI"
         }
      }
   ]
}

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • INBOUND_READ

altrimenti viene restituito 403 (Forbidden)

Dettagli Viaggio

Consente di recuperare il dettaglio di un viaggio insieme alle relative ddt dato un id.

Risponde a richieste GET verso: /inbound/transport/{id}, dove {id} rappresenta l'identificativo univoco del viaggio che si vuole recuperare.

L’API può restituire i seguenti codici di errore: 

  • 400 (Bad Request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcun viaggio.

Esempio richiesta

GET https://api.messaggerielibri.it/inbound/transport/6
Authorization: Bearer [TOKEN JWT]

 

Esempio risposta

{
	"bols": [],
	"id": "0000000015",
	"plant": "Stradella",
	"delivery": {
		"date": "2019-05-13",
		"from": "11:30",
		"to": "12:00"
	},
	"pallets": 2,
	"packages": 65,
	"transporter": {
		"type": "vendor"
	},
	"bolCount": 0
}

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_read

altrimenti viene restituito 403 (Forbidden)

Generazione pdf segnacollo DDT

Consente di stampare il pdf del segnacollo per una DDT.

Risponde a richieste GET verso /inbound/barcode

E' possibile passare in querystring i seguenti parametri, tutti opzionali:

  • vendorCode: codice dell’editore. Per il non venditore è un campo obbligatorio; per il venditore deve esistere nella “vendor list” del chiamante.
  • billOfLading: numero DDT. Obbligatorio, di tipo stringa, massimo 6 caratteri, solo numeri o lettere.
  • owner: codice mittente. Opzionale, da fornire se la DDT è inviata da un operatore terzo (es. legatoria).
  • format: formato da scaricare. Opzionale, consente i seguenti valori: 
    • pdf: segnacollo in formato PDF (valore predefinito),
    • zpl: segnacollo in fomrato ZPL.

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.

 

Esempio richiesta

GET https://api.messaggerielibri.it/inbound/barcode?vendorCode=0000000015&billOfLading=12345 
Authorization: Bearer [TOKEN JWT] 

 

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_read

altrimenti viene restituito 403 (Forbidden)

Restituisce l'elenco delle fasce orarie e lo stato di occupazione del magazzino

Consente di  recuperare  il calendario di un magazzino

Risponde a richieste GET verso inbound/plant/{plant}/timesheet


L’API può restituire i seguenti codici di errore:
 

  • 400 (Bad Request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcun magazzino.

 

Esempio richiesta

GET https://api.messaggerielibri.it/inbound/plant/ME60/timesheet?startDate=2021-	
01-01&endDate=2021-02-01	
Authorization: Bearer [TOKEN JWT]	

 

Esempio risposta

Come risultato si ottiene una lista di oggetti contente la data e le relative fasce orarie. Di seguito un esempio dell’output:

[
   {
      "date":"2021-01-01",
      "slots":[
         {
            "from":"09:00",
            "to":"10:00",
            "traffic":"mid",
            "amount":234
         }
      ]
   }
]

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_read

altrimenti viene restituito 403 (Forbidden)

Recupero fasce orarie magazzino

Consente di recuperare le fasce orari disponibile del magazzino per una certa data.

Risponde a richieste GET verso: inbound/plant/{plant}/{date}/slot, dove {plant} rappresenta il codice del magazzino (ME60 o ME61) e {date} la data per cui si richiedono le fasce orarie disponibili del magazzino.

 

L’API può restituire i seguenti codici di errore: 

  • 400 (Bad Request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcuna DDT.

 

Esempio richiesta

GET https://api.messaggerielibri.it/inbound/plant/ME60/2021-01-01/slot	
Authorization: Bearer [TOKEN JWT]	

 

Esempio risposta

Come risultato si ottiene una lista di oggetti contenente i dati sulla fascia oraria. Di seguito un esempio dell’output:

[
   {
      "from":"09:00",
      "to":"10:00",
      "traffic":"mid",
      "saturationPercentage": 12.50
   }
]

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_read

altrimenti viene restituito 403 (Forbidden)

Costruzione automatica viaggio-corriere

Associa una DDT ad un viaggio. Da richiamare a seguito della ricezione della notifica di consegna da parte del corriere.

Risponde a richieste POST verso /inbound/transporter/{tansporterVatNumber}/waybill/{waybillNumber}/setTransport

Per identificare la DDT da confermare sono utilizzati i seguenti parametri:

  • transporterVatNumber: di tipo string. Deve contenere il codice nazione (2 caratteri) seguito da “-” e dalla partita IVA del corriere che gestisce la spedizione.

Codici per i corrieri noti:

  • GLS: IT-12144660151
  • SDA: IT-05714511002
  • waybillNumber: di tipo string. Deve contenere il numero di spedizione generato dal corriere.

 

L’API può restituire i seguenti codici di errore: 

  • 400 (Bad Request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcuna P.IVA o numero di spedizione.


Esempio richiesta

POST https://api.messaggerielibri.it/inbound/transporter/IT-12144660151/waybill/1234567890/setTransport
Authorization: Bearer [TOKEN JWT]

 

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_bol_confirm

altrimenti viene restituito 403 (Forbidden)

Download PDF di una DDT

Effettua il download del PDF associato all'ID della DDT in ingresso

Risponde a richieste GET verso: /BOL/{id}/pdfdove {id} rappresenta identificativo univoco della DDT che si vuole recuperare.

 

L’API può restituire i seguenti codici di errore: 

  • 400 (Bad Request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcuna DDT.

 

Esempio richiesta:

GET https://ml-api-dev-mgmt.azure-api.net/BOL/1900000061/pdf
Authorization: Bearer [TOKEN JWT]

 

 

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_read

altrimenti viene restituito 403 (Forbidden)

Aggiunta un viaggio ad una DDT

Consente di aggiungere un viaggio esistente ad una DDT

Risponde a richieste POST verso: /BOL/{idDDT}/transport, dove {idDDT} rappresenta identificativo univoco della DDT che si vuole associare.


L’API può restituire i seguenti codici di errore:
 

  • 400 (Bad Request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcuna DDT.

 

Esempio richiesta:

https://ml-api-dev-mgmt.azure-api.net/inbound/bol/2100000129/transport

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • INBOUND_WRITE

altrimenti viene restituito 403 (Forbidden)

Creazione di un viaggio

Consente di caricare a sistema un viaggio.

Risponde a richieste POST verso /inbound/transport

Per creare il viaggio viene richiesto un oggetto JSON contenente i seguenti campi:

  • bols: codici delle bolle correlate al viaggio - array
  • plant: codice del magazzino - string. Può assumere i seguenti valori:
    • ME60: C&M Book Logistics di Stradella
    • ME61: Geodis Landriano
  • delivery: informazioni del viaggio. È composto dalle seguenti proprietà:
    • date: data del viaggio - date
    • from: orario di inizio slot per il viaggio - string
    • to: orario di fine slot per il viaggio - string
  • pallets: numero bancali - number
  • packages: numero dei colli - number
  • customerCode: codice legatoria dell’operatore terzo - string
  • transporter: informazioni del trasportatore. È composto dalle seguenti proprietà:
    • type: tipo di trasportatore- string
    • customerCode: codice legatoria dell’operatore terzo - string
    • vatNumber: partita IVA dell’operatore terzo - string e di esattamente 11 caratteri

Controlli di validazione

Il metodo API effettua i seguenti controlli di validazione:

  • il customerCode deve corrispondere a un codice legatoria registrato a sistema. È alternativo a vatNumber.
  • il vatNumber deve corrispondere a un operatore terzo registrato a sistema. È alternativo a customerCode.
  • il numero dei bancali, pallets, deve essere compreso tra 1 e 33.
  • il numero dei colli, packages, deve essere compreso tra 0 e 100000.
  • gli EAN devono esistere e appartenente all’editore associato alla DDT.
  • la date deve essere compresa tra il giorno della richiesta e i 5 giorni successivi non comprensivo della domenica.
  • il from e il to devono essere coerenti con gli slot di trasporto.
  • il from e il to, nel caso in cui date della richiesta sia uguale alla data odierna, devono essere corrispondenti a uno slot successivo all' orario della richiesta.

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.


Esempio richiesta

Il seguente esempio crea un viaggio

POST https://api.messaggerielibri.it/inbound/transport 
Authorization: Bearer [TOKEN JWT]

Esempio body richiesta

{
    "bols": ["ASDFDSSD77"],
    "plant": "ME60",
    "delivery": {
        "date": "2022-11-28",
        "from": "16:01",
        "to": "16:30"
    },
    "pallets": 30,
    "packages": 0,
    "customercode": 15,
    "transporter": {
        "type": "operator",
        "vatNumber": "11123423456"
    }
}

Esempio risposta

Se l’esecuzione è terminata con successo, l’API restituisce il numeri identificativo del trasporto

{
    "transportNumber": "0000001171"
}

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_write

altrimenti viene restituito 403 (Forbidden)

Ricerca Carichi

Consente la ricerca di uno o più carichi.

Risponde a richieste GET verso /inbound/load

E' possibile passare in querystring i seguenti parametri:

  • endDateFrom: Data fine carico (da) - string date (yyyy-MM-dd) [obbligatorio]
  • endDateTo: Data fine carico (a) - string date (yyyy-MM-dd) [obbligatorio]
  • sender: Codice editore - string
  • billOfLading: Numero DDT del fornitore - string
  • billOfLadingDate: Data DDT - string date (yyyy-MM-dd)
  • binder: Codice legatore - string
  • shippingAdviceNumber: Riferimento - string 
  • type: Tipo di carico - string
  • ean: Codice EAN - string
  • orderBy: Campo su cui effettuare l’ordinamento - può assumere i seguenti valori di tipo string:
    • billOfLadingDate,
    • quantityGood,
    • quantityBad,
    • endDate,
    • shippingAdviceNumber,
    • loadCode,
    • loadDescription, 
    • senderCode,
    • senderDescription,
    • binderCode,
    • binderDescription
    • billOfLading
    • ean
    • title
  • orderDirection: Direzione dell’ordinamento - può assumere i seguenti valori di tipo string:
    • asc,
    • desc
  • pageSize: Numero massimo di risultati restituiti da una chiamata - number, può assumere valori tra 1 e 1000 e come default 50
  • pageIndex: Numero di pagina dei risultati da restituire - number, può assumere valore maggiore di 0 e come default 1

 

L’operazione restituisce un oggetto JSON contenente i seguenti campi: 

  • totalCount: numero totale di carichi trovati
  • totalPages: numero totale di pagine previste
  • page: informazioni sulla pagina corrente. Contiene:
    • index: indice della pagina corrente
    • size: dimensione della pagina
    • from: indice del primo elemento della pagina (se la pagina ha elementi)
    • to: indice dell'ultimo elemento della pagina (se la pagina ha elementi)
  • loads: elenco dei carichi. Contiene:
    • loadType: tipo di carico. Contiene:
      • code: codice tipo di carico
      • description: descrizione tipo di carico
    • sender: editore. Contiene:
      • code: codice editore
      • description: descrizione editore
    • binder: legatore. Contiene:
      • code: codice legatore
      • description: descrizione legatore
    • billOfLading: DDT. Contiene:
      • number: numero DDT
      • date: data DDT
    • shippingAdviceNumber: riferimento
    • title: titolo. Contiene:
      • eanCode: codice EAN
      • title: titolo
      • vendorCode: codice editore
      • vendorDescription: descrizione editore
    • quantity: copie carico. Contiene:
      • good: copie buone
      • bad: copie guasti
    • endDate: data fine carico

 

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.


Esempio Richiesta

GET https://api.messaggerielibri.it/inbound/load?EndDateFrom=2023-05-01&EndDateTo=2023-05-08
Authorization: Bearer [TOKEN JWT]


Esempio risposta

{
	"totalCount": 7,
	"totalPages": 1,
	"page": {
		"index": 1,
		"size": 50,
		"from": 1,
		"to": 7
	},
	"loads": [
		{
			"loadType": {
				"code": "71",
				"description": "Carico da legatoria"
			},
			"sender": {
				"code": "6684600"
			},
			"binder": {
				"code": "0123456"
			},
			"billOfLading": {
				"number": "000027",
				"date": "2023-05-07T00:00:00"
			},
			"shippingAdviceNumber": "2100000139",
			"title": {
				"eanCode": "9788815000026",
				"title": "CLASSE OPERAIA E RIVOLUZIONE INDUSTRIALE A MILANO",
				"vendorCode": "0000000015",
				"vendorDescription": "IL MULINO"
			},
			"quantity": {
				"good": 9,
				"bad": 1
			},
			"endDate": "2023-05-08T00:00:00"
		},
		{
			"loadType": {
				"code": "71",
				"description": "Carico da legatoria"
			},
			"sender": {
				"code": "6684600"
			},
			"binder": {
				"code": "0123456"
			},
			"billOfLading": {
				"number": "000023",
				"date": "2023-05-03T00:00:00"
			},
			"shippingAdviceNumber": "2300000037",
			"title": {
				"eanCode": "9788815048172",
				"title": "REGIONI E FEDERALISMO FISCALE",
				"vendorCode": "0000000015",
				"vendorDescription": "IL MULINO"
			},
			"quantity": {
				"good": 10,
				"bad": 2
			},
			"endDate": "2023-05-06T00:00:00"
		},
		{
			"loadType": {
				"code": "71",
				"description": "Carico da legatoria"
			},
			"sender": {
				"code": "6684600"
			},
			"binder": {
				"code": "0123456"
			},
			"billOfLading": {
				"number": "000024",
				"date": "2023-05-03T00:00:00"
			},
			"shippingAdviceNumber": "2300000037",
			"title": {
				"eanCode": "9788815048172",
				"title": "REGIONI E FEDERALISMO FISCALE",
				"vendorCode": "0000000015",
				"vendorDescription": "IL MULINO"
			},
			"quantity": {
				"good": 10,
				"bad": 2
			},
			"endDate": "2023-05-06T00:00:00"
		},
		{
			"loadType": {
				"code": "71",
				"description": "Carico da legatoria"
			},
			"sender": {
				"code": "6684600"
			},
			"binder": {
				"code": "0123456"
			},
			"billOfLading": {
				"number": "000025",
				"date": "2023-05-03T00:00:00"
			},
			"shippingAdviceNumber": "2300000037",
			"title": {
				"eanCode": "9788815048172",
				"title": "REGIONI E FEDERALISMO FISCALE",
				"vendorCode": "0000000015",
				"vendorDescription": "IL MULINO"
			},
			"quantity": {
				"good": 10,
				"bad": 2
			},
			"endDate": "2023-05-06T00:00:00"
		},
		{
			"loadType": {
				"code": "71",
				"description": "Carico da legatoria"
			},
			"sender": {
				"code": "6684600"
			},
			"binder": {
				"code": "0123456"
			},
			"billOfLading": {
				"number": "000025",
				"date": "2023-05-04T00:00:00"
			},
			"shippingAdviceNumber": "2200000119",
			"title": {
				"eanCode": "9788815048172",
				"title": "REGIONI E FEDERALISMO FISCALE",
				"vendorCode": "0000000015",
				"vendorDescription": "IL MULINO"
			},
			"quantity": {
				"good": 10,
				"bad": 2
			},
			"endDate": "2023-05-06T00:00:00"
		},
		{
			"loadType": {
				"code": "71",
				"description": "Carico da legatoria"
			},
			"sender": {
				"code": "6684600"
			},
			"binder": {
				"code": "0123456"
			},
			"billOfLading": {
				"number": "000026",
				"date": "2023-05-04T00:00:00"
			},
			"shippingAdviceNumber": "2200000125",
			"title": {
				"eanCode": "9788815048172",
				"title": "REGIONI E FEDERALISMO FISCALE",
				"vendorCode": "0000000015",
				"vendorDescription": "IL MULINO"
			},
			"quantity": {
				"good": 10,
				"bad": 2
			},
			"endDate": "2023-05-06T00:00:00"
		},
		{
			"loadType": {
				"code": "71",
				"description": "Carico da legatoria"
			},
			"sender": {
				"code": "6684600"
			},
			"binder": {
				"code": "0123456"
			},
			"billOfLading": {
				"number": "000027",
				"date": "2023-05-04T00:00:00"
			},
			"shippingAdviceNumber": "2100000240",
			"title": {
				"eanCode": "9788815048172",
				"title": "REGIONI E FEDERALISMO FISCALE",
				"vendorCode": "0000000015",
				"vendorDescription": "IL MULINO"
			},
			"quantity": {
				"good": 10,
				"bad": 2
			},
			"endDate": "2023-05-06T00:00:00"
		}
	]
}

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • LOAD_READ

altrimenti viene restituito 403 (Forbidden)

Rimozione viaggio da una DDT

Consente di rimuovere un viaggio da una DDT 

Risponde a richieste DELETE verso l'endpoint /inbound/BOL/{idDDT}/transport/{idTransport}

Per identificare la DDT da eliminare sono utilizzati i seguenti parametri:

  • idTransport: di tipo string. rapresenta il numero del viaggio da eliminare.
  • idDDT: di tipo string rapresenta l'id del ddt.

Se l’esecuzione è terminata con successo, l’API restituisce 204 No Content senza alcun body.

L'API può restituire i seguenti codici di errore:

  • 400 (Bad request): query malformata.
  • 401 (Unauthorized)il token di autenticazione non è valido oppure è scaduto.
  • 404 (Not Found)ai parametri forniti non corrisponde alcuna DDT o alcun viaggio.


Esempio richiesta

https://api.messaggerielibri.it/inbound/BOL/1900000002/transport/0000000577

Features

Per utilizzare il metodo API è necessario possedere una o più delle seguenti features:

  • inbound_write

altrimenti viene restituito 403 (Forbidden)