Questa API consente di creare e gestire prenotazioni.
Per gestire le API delle cedole prenotazioni autenticazione è necessario utilizzare lo scope: order_api_scope.
Operazioni
L'API espone i seguenti metodi:
Creazione prenotazione
Creazione prenotazione
Consente di caricare a sistema una lista di prenotazioni
Risponde a richieste POST verso: /ordini/Reservation
Per identificare la lista delle prenotazioni da inviare viene richiesto un oggetto JSON contenente i seguenti campi:
- couponCode: codice cedola.
- customerCode: codice destinatario.
- orderNumber(opzionale): numero/riferimento ordine cliente.
- titles: lista delle posizioni della prenotazione(ad ogni prenotazione possono essere associate una o più posizioni).
Posizione dell'ordine
La posizione della prenotazione è un oggetto JSON che contiene i seguenti campi:
- ean: codice EAN del titolo da ordinare.
- quantity: quantità totale.
- occasionalDiscount(opzionale): sconto occasionale.
- occasionalPayment(opzionale): pagamento occasionale.
- notes(opzionale): nota di posizione.
Controlli di validazione
Il metodo API effettua i seguenti controlli di validazione:
- couponCode deve esistere e appartenente alla rete creatrice della cedola.
- customerCode deve essere valido.
- eanCode valido e presente all'interno della cedola.
- occasionalDiscount deve essere una percentuale > di 0 e < di 100.
- occasionalPayment deve essere un valore > 0.
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 invia 1 prenotazionoe la quale contiene 3 titoli:
POST https://api.messaggerielibri.it/ordini/Reservation
Authorization: Bearer [TOKEN JWT]
Esempio body richiesta
{
"couponCode": "cedola2",
"customerCode": "0000008400",
"titles": [
{
"ean": "9782849075883",
"quantity": 3,
"OccasionalDiscountPercentage": 23.64,
"OccasionalPayment": 83.5,
"notes": "000000"
},
{
"ean": "9788876180088",
"quantity": 21,
"OccasionalDiscountPercentage": 76.3,
"notes": "000000"
},
{
"ean": "9788876180101",
"quantity": 86,
"OccasionalDiscountPercentage": 1.7,
"notes": "000000"
}
]
}
Features
Per utilizzare il metodo API è necessario possedere una o più delle seguenti
features:
altrimenti viene restituito 403 (Forbidden)
Modifica prenotazione
Modifica prenotazione
Consente di modificare una prenotazione
Risponde a richieste PUT verso: /ordini/reservation/{id}/{item}, dove {id} rappresenta l'identificativo della prenotazione e {item} rappresenta la riga della prenotazione da modificare.
La modifica di una prenotazione richiede un oggetto JSON contenente i seguenti campi:
- quantity: quantità prenotata - int
- occasionalDiscountPercentage: sconto occasionale - decimal
- occasionalPayment: pagamento occasionale - decimal
- orderId: identificativo dell'ordine - string
Controlli di validazione
Il metodo API effettua i seguenti controlli di validazione:
- la percentuale di sconto occasionale (occasionalDiscountPercentage) deve deve essere una percentuale >= di 0 e <= di 100.
- l'ordine (orderId) deve esistere.
- la rete utilizzatrice delle API può modificare solo prenotazioni novità collegate ad una cedola associata alla Rete.
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 prenotazione visibile.
Esempio richiesta
PUT https://api.messaggerielibri.it/ordini/reservation/6/1
Authorization: Bearer [TOKEN JWT]
{
"quantity": "5",
"occasionalDiscountPercentage": "23.50",
"occasionalPayment": "83",
"orderId": 123
}
Esempio risposta
Se l’esecuzione è terminata con successo, l’API restituisce 200 OK senza alcun body.
Features
Per utilizzare il metodo API è necessario possedere una o più delle seguenti
features:
altrimenti viene restituito 403 (Forbidden)
Recupero dettaglio prenotazione
Recupero dettaglio prenotazione
Consente di recuperare i dettagli di una prenotazione.
Risponde a richieste GET verso: /ordini/coupon/{couponCode}/ean/{ean}/reservation, dove {couponCode} rappresenta il codice della cedola e {ean} il codice ean.
E' possibile passare in querystring i seguenti parametri, tutti opzionali:
- customer: lista codici clienti
- startDate: data creazione della prenotazione (da) - date
- endDate: data creazione della prenotazione (a) - date
L’operazione restituisce uno oggetto JSON contenente i seguenti campi:
La testata del coupon è un oggetto JSON che contiene i seguenti campi:
- id: Id prenotazione,
- rowNumber: riga prenotazione,
- couponCode: codice cedola,
- salesAgent: agente
- code: codice,
- description: descrizione.
- customer: cliente
- code: codice,
- description: descrizione.
- eanCode: codice ean,
- quantity: quantità prenotata,
- occasionalDiscountPercentage: sconto occasionale,
- occasionalPayment: pagamento occasionale
- notes: note collegate alla riga prenotazione
- order: informazioni sull'ordine
- id: id ordine
- rowNumber: numero riga ordine
- type: tipo di ordine
- customerNumber: numero ordine cliente
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 cedola visibile.
Esempio richiesta:
GET
https://api.messaggerielibri.it/ordini/coupon/cedolaRR1/ean/9788876670817/reservation?customer=0000008400&startDate=2024-01-25&endDate=2025-06-14
Authorization: Bearer[TOKEN JWT]
Esempio risposta
Se la richiesta va a buon fine si ottiene in output una lista contente le informazioni principali sulla cedola:
[
{
"id": 69,
"rowNumber": 1,
"couponCode": "API8561",
"salesAgent": {
"code": "UD191",
"description": "MAGELLI DANIELE"
},
"customer": {
"code": "0000008400",
"description": "CATTANEO L. DI C. CATTANEO."
},
"eanCode": "9788874714445",
"quantity": 10,
"occasionalDiscountPercentage": 15.00,
"occasionalPayment": 30.00,
"notes": "nessuna",
"order": {
"id": 3134,
"rowNumber": 1,
"type": "newTitle",
"customerNumber": "3134"
}
}
]
Features
Per utilizzare il metodo API è necessario possedere una o più delle seguenti
features:
altrimenti viene restituito 403 (Forbidden)
Rimozione titolo dalla prenotazione
Rimozione titolo dalla prenotazione
Consente di rimuovere un titolo dalla prenotazione.
Risponde a richieste DELETE verso: /ordini/reservation/{id}/{item}, dove {id} rappresenta il codice della prenotazione e {item} rappresenta il codice del titolo da rimuovere.
Se l’esecuzione è terminata con successo, l’API restituisce 204 No Content senza alcun body.
Controlli di validazione
Il metodo API effettua i seguenti controlli di validazione:
- il codice prenotazione(id) deve corrispondere ad una prenotazione esistente.
- l'item(item) da rimuovere deve essere presente nella prenotazione.
- la rete utilizzatrice delle API può eliminare solo le righe delle prenotazioni novità collegate ad una cedola associata alla Rete.
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 cedola visibile o alcun ean.
Esempio richiesta:
DELETE
https://api.messaggerielibri.it/ordini/reservation/1/3
Authorization: Bearer[TOKEN JWT]
Features
Per utilizzare il metodo API è necessario possedere una o più delle seguenti
features:
altrimenti viene restituito 403 (Forbidden)
Trasmissione prenotazioni
Trasmissione prenotazioni
Consente di caricare a sistema una lista di ordini
Risponde a richieste POST verso: /ordini/Reservation/transmit
Per identificare la lista degli ordini da inviare viene richiesto un oggetto JSON contenente i seguenti campi:
- header: intestazione dell'ordine.
- items: lista delle posizioni dell'ordine (ad ogni ordine possono essere associate una o più posizioni).
Intestazione dell'ordine
L’intestazione dell’ordine è un oggetto JSON che contiene i seguenti campi:
- orderNumber(opzionale): numero ordine cliente.
- orderDate(opzionale): data ordine cliente. Opzionale: se non fornita viene considerata la data corrente.
- customerCodes(opzionale): lista codici destinatario della merce.
- documentType: tipo documento / fornitura. Valori ammessi "restock" e "newTitle".
- notes(opzionale): note di testata.
- startDate(opzionale): data creazione della prenotazione
- endDate(opzionale): data creazione della prenotazione
Items dell'ordine
Elenco delle righe cedole da convertire in ordini, un singolo rigo è formato da:
- eanCode: codice ean.
- couponCode: codice coupon.
Controlli di validazione
Il metodo API effettua i seguenti controlli di validazione:
- DocumentType: deve avere uno dei seguenti valori: "restock" (rifornimento), "newTitle" (novità)
- La "Data Prenotazione (dal)" è antecedente alla "Data Prenotazione (al)"
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
POST https://api.messaggerielibri.it/ordini/Reservation/transmit HTTP/1.1
Authorization: Bearer [TOKEN JWT]
Esempio body richiesta
{
"header": {
"orderNumber": "test",
"documentType": "restock",
"customerCodes": ["0000008400", "0000021500"]
"notes": "prova"
},
"items": [
{
"eanCode": "9788874714445"
},
{
"eanCode": "9788874719636",
"couponCode": "cedola1"
}
]
}
Esempio risposta
Se l’esecuzione è terminata con successo, l’API restituisce i numeri d'ordine (orderId) che identifica gli ordini creati:
[
"3045",
"3044",
"3046"
]
Features
Per utilizzare il metodo API è necessario possedere una o più delle seguenti
features:
altrimenti viene restituito 403 (Forbidden)
Ricerca Prenotazioni Raccolte per Riga-Cedola
Ricerca Prenotazioni Raccolte per Riga-Cedola
Consente il recupero delle prenotazioni raccolte per Riga-Cedola
Risponde a richieste GET verso /ordini/reservation
E' possibile passare in querystring i seguenti parametri, tutti opzionali:
- coupon: lista dei codici coupon
- ean: lista dei codici ean
- Customer: lista dei codici cliente
- launchYear: anno di lancio
- launchNumber: numero lancio
- startDate: data di inizio
- endDate: data di fine
- details: flag per indicare se includere anche i dettagli delle prenotazioni - string
- orderBy: campo su cui effettuare l’ordinamento - può assumere i seguenti valori di tipo string:
- coupon,
- ean,
- vendorCode,
- vendorName,
- title,
- author
- orderDirection: direzione dell’ordinamento - può assumere i seguenti valori di tipo string:
- 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
Se non vengono passati parametri viene restituito il sommario di tutte le raccolta per riga-cedola.
L’operazione restituisce uno oggetto JSON contenente i seguenti campi:
- totalCount: numero totale di raccolte trovate.
- totalPages: numero totale di pagine previste.
- page: informazioni sulla pagina corrente:
- index: indice della pagine 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)
- rows: elenco delle raccolte (vedi: elenco delle raccolte).
Elenco delle raccolte
L’elenco degli raccolte riga-cedola è un array di oggetti JSON aventi la seguente struttura:
- couponCode: codice coupon
- eanCode: codice ean
- vendor:
- code: codice,
- description: descrizione.
- title: titolo
- author: autore
- quantity: informazioni sulla quantità
- reserved: quantità prenotata
- transmitted:
- newOrder: quantità trasmessa come nuovo ordine
- restock: quantità trasmessa come restock
- toBeTransmitted: quantità non trasmessa
- reservations: dettaglio delle prenotazioni (vedi: dettaglio prenotazione)
Dettaglio prenotazione
Il dettaglio prenotazione è un array di oggetti JSON aventi la seguente struttura:
- id: id prenotazione
- rowNumber: numero riga prenotazione
- salesAgent: agente
- code: codice,
- description: descrizione.
- customer: cliente
- code: codice,
- description: descrizione.
- quantity: quantità
- occasionalDiscountPercentage: sconto occasionale
- occasionalPayment: pagamento occasionale
- notes: note
- order: informazioni sull'ordine
- id: id ordine
- rowNumber: numero riga ordine
- type: tipo di ordine
- customerNumber: numero ordine cliente
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/ordini/reservation?coupon=API8561.2&ean=9788874714445&details
Authorization: Bearer [TOKEN JWT]
Esempio risposta
Se la richiesta va a buon fine si ottiene in output il sommario delle raccolte riga-cedola presenti a sistema.
{
"totalCount": 1,
"totalPages": 1,
"page": {
"index": 1,
"size": 50,
"from": 1,
"to": 1
},
"rows": [
{
"couponCode": "API8561.2",
"eanCode": "9788874714445",
"vendor": {
"code": "542",
"description": "KAPPA EDIZIONI - PEGASUS"
},
"title": "KAPPA LA SCENA DELL'INFERNO",
"author": "AKUTAGAWA RYUNOSUKE -",
"quantity": {
"reserved": 72,
"transmitted": {
"newOrder": 60,
"restock": 0
},
"toBeTransmitted": 12
},
"reservations": [
{
"id": 66,
"rowNumber": 1,
"salesAgent": {
"code": "UD191",
"description": "MAGELLI DANIELE"
},
"customer": {
"code": "00021500",
"description": "HOEPLI SPA"
},
"quantity": 30,
"occasionalDiscountPercentage": 15.00,
"occasionalPayment": 30.00,
"notes": "nessuna",
"order": {
"id": 3118,
"rowNumber": 1,
"type": "newTitle",
"customerNumber": "1912.02"
}
},
{
"id": 67,
"rowNumber": 1,
"salesAgent": {
"code": "UD191",
"description": "MAGELLI DANIELE"
},
"customer": {
"code": "00173800",
"description": "FAGNANI IDEALE DI P.FAGNANI"
},
"quantity": 20,
"occasionalDiscountPercentage": 15.00,
"occasionalPayment": 30.00,
"notes": "nessuna",
"order": {
"id": 3119,
"rowNumber": 1,
"type": "newTitle",
"customerNumber": "1912.02"
}
},
{
"id": 68,
"rowNumber": 1,
"salesAgent": {
"code": "UD191",
"description": "MAGELLI DANIELE"
},
"customer": {
"code": "00008400",
"description": "CATTANEO L. DI C. CATTANEO."
},
"quantity": 10,
"order": {
"id": 3120,
"rowNumber": 1,
"type": "newTitle",
"customerNumber": "1912.02"
}
},
{
"id": 74,
"rowNumber": 1,
"salesAgent": {
"code": "UD191",
"description": "MAGELLI DANIELE"
},
"customer": {
"code": "00008400",
"description": "CATTANEO L. DI C. CATTANEO."
},
"quantity": 12,
"occasionalDiscountPercentage": 12.00,
"occasionalPayment": 12.00,
"notes": "12",
"order": {
"id": 0,
"rowNumber": 0
}
}
]
}
]
}
Features
Per utilizzare il metodo API è necessario possedere una o più delle seguenti
features:
altrimenti viene restituito 403 (Forbidden)