Questa API consente di gestire le rese.

Per gestire le API delle rese tramite autenticazione è necessario utilizzare lo scope: return_request_api_scope.

Operazioni

L'API espone i seguenti metodi:

Creazione di una resa

Consente la creazione di una resa

Risponde a richieste POST verso /rese/returnrequest/

La creazione di una nuova resa richiede un oggetto JSON contenente i seguenti campi:

  • customerNumber(opzionale): codice identificativo della resa utilizzabile in fase di lettura.
  • typeCode: tipo di resa.
  • barcode: barcode
  • state: stato della resa.
  • items: lista di titoli da inserire nella resa. Contiene:
    • ean: codice EAN del titolo
    • quantity: quantità
    • notes (opzionale): note
  • ddt: ddt. Contiene:
    • code: codice DDT
    • date: data di conferma
    • packageCount: numero di colli 

Controlli di validazione

Il metodo API effettua i seguenti controlli di validazione:

  • il tipo resa deve avere uno dei seguenti valori: RG (resa guasto) o RB (resa buono).
  • lo stato della resa deve aver uno dei seguenti valori: Open (aperta), Pending (in attesa) e Approving (in approvazione).
  • il cliente possa creare la resa con il tipo resa specificato 
  • non ci devono essere EAN duplicati
  • gli EAN devono esistere e appartenere all'utente
  • le quantità devono essere maggiori di 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.
  • 403 (Forbidden): il tipo di resa che si sta cercando di creare è già in uso (esiste già una resa aperta con lo stesso tipo).

 

Esempio richiesta

POST https://api.messaggerielibri.it/rese/ReturnRequest
Authorization: Bearer [TOKEN JWT]
{
    "typeCode": "RB",
    "state": "open",
    "customerNumber": "123456",
    "items":
    [
        {
            "ean": "1000000001150",
            "quantity": 20
        },
        {
            "ean": "9788899997915",
            "quantity": 8
        },
        {
            "ean": "8050539040000",
            "quantity": 4
        }
    ]
}

Esempio risposta

Se la richiesta va a buon fine si ottiene in output l'ID della resa creata:

123

Features

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

  • rese_write
  • rese_write_group
  • rese_write_all

altrimenti viene restituito 403 (Forbidden)

Recupero dati resa

Consente il recupero dei dettagli di una resa

Risponde a richieste GET verso /rese/returnrequest/{id}, dove {id} rappresenta l'id della resa per cui viene richiesto il dettaglio.

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

  • number: numero resa
  • customer: cliente. Contiene:
    • code: codice libreria
    • description: descrizione libreria
  • customerNumber: numero resa cliente fornito in creazione
  • typeCode: tipo della resa
  • state: stato della resa
  • startOfValidity
  • updateDate: data ultima modifica
  • deliveryLimit
  • barcode: barcode
  • ddt: ddt. Contiene:
    • code
    • date
    • packageCount
  • summary: riepilogo. Contiene:
    • eanCount
    • totalQuantity
    • totalPrice
  • delivery: consegna. Contiene:
    • packageCount
    • eanCount
    • deliveredQuantity: quantità consegnata
    • netValue: valore netto
  • items: lista di titoli. Contiene:
    • ean: codice EAN
    • quantity: quantità
    • price: prezzo
    • state: stato
    • messagges: lista di messaggi. Contiene: 
      • code: codice validazione
      • description: descrizione dell'errore
    • deliveredQuantity: quantità consegnata
    • acceptedQuantity: quantità accettate
    • refusedQuantity: quantità rifiutata
    • netValue: valore netto
  • exposure: esposizione. Contiene:
    • amount
    • isOver

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

Esempio richiesta

GET https://api.messaggerielibri.it/rese/ReturnRequest/123
Authorization: Bearer [TOKEN JWT]

Esempio risposta

Se la richiesta va a buon fine si ottiene in output un oggetto json con la seguente struttura:

{
    "number": 142,
    "customerNumber": "123456",
    "typeCode": "RB",
    "state": "Open",
    "items": [
        {
            "ean": "1000000001150",
            "quantity": 20,
            "price": 6,
            "state": "Working"
        },
        {
            "ean": "9788899997915",
            "quantity": 8,
            "price": 14.00,
            "state": "NotReturnable",
            "messages": [
                {
                    "code": "0003",
                    "description": "SETTORE MERCEOLOGICO NON AMMESSO"
                },
                {
                    "code": "RW",
                    "description": "Respinto WM"
                }
            ],
            "deliveredQuantity": 0,
            "acceptedQuantity": 0,
            "refusedQuantity": 8,
            "netValue": 10.66
        },
        {
            "ean": "8050539040000",
            "quantity": 4,
            "price": 14.90,
            "state": "Working",
            "deliveredQuantity": 4,
            "acceptedQuantity": 4,
            "refusedQuantity": 0,
            "netValue": 8.66
        }
    ],
    "startOfValidity": "2020-01-16T12:35:00.024802",
    "summary": {
        "eanCount": 3,
        "totalQuantity": 32
    }
    "delivery": {
        "packageCount": 3,
        "eanCount": 3,
        "deliveredQuantity": 990,
        "netValue": 120.45,
    }
}

Features

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

  • rese_read
  • rese_read_group
  • rese_read_all

altrimenti viene restituito 403 (Forbidden)

Ricerca rese

Consente di effettuare una ricerca sulle rese presenti a sistema

Risponde a richieste GET verso /rese/returnrequest

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

  • from: data della resa (da)
  • to: data della resa (a)
  • update: data ultima modifica
  • state: stato della resa (supporta valori multipli). Può assumere i seguenti valori:
    • 1 - Open
    • 2 - Pending
    • 3 - Approving
    • 4 - Approved
    • 5 - Closed
    • 6 - Accepted
    • 7 - Processed
    • 8 - Confirmed
    • 9 - Expired
    • A (10) - Canceled
    • E (11) - Elaborated
  • type: tipo della resa (RG o RB)
  • customerNumber: numero resa cliente fornito in creazione (supporta valori multipli)
  • customerCode: codice libreria

Le date su cui filtrare devono essere passate in formato ISO (yyyy-MM-dd).

Se non vengono passati parametri vengono restituite tutte le rese che sono visibili all'utente.

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

  • number: numero resa
  • customerNumber: numero resa cliente fornito in creazione
  • customer: cliente. Contiene:
    • code: codice libreria
    • description: descrizione libreria
  • typeCode: tipo della resa
  • state: stato della resa
  • updateDate: data ultima modifica

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/rese/ReturnRequest?from=2021-01-01&to=2020-07-01
Authorization: Bearer [TOKEN JWT]

Esempio risposta

Se la richiesta va a buon fine si ottiene in output una lista contente le informazioni principali di ogni resa:

[
    {
        "number": 142,
        "customerNumber": "123456",
        "typeCode": "RG",
        "state": "Open"
    }
]

Features

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

  • rese_read
  • rese_read_group
  • rese_read_all

altrimenti viene restituito 403 (Forbidden)

Modifica di una resa

Consente la modifica di una resa

Risponde a richieste PATCH verso /rese/returnrequest/{id}, dove {id} è l'identificativo della resa che si vuole modificare.

La chiamata può essere usata per aggiungere, modificare o rimuovere degli EAN dalla resa o per agire sulla resa stessa modificando lo stato o aggiungendo la DDT.

Le operazioni possono essere combinate in una singola chiamata.

Per rimuovere un EAN dalla resa si deve impostare la sua quantità a 0.

La modifica di una nuova resa richiede un oggetto JSON contenente i seguenti campi:

  • state: stato della resa.
  • items: lista di titoli da inserire nella resa. Contiene:
    • ean: codice EAN del titolo
    • quantity: quantità
    • notes: note
  • ddt: ddt. Contiene:
    • code: codice DDT
    • date: data di conferma
    • packageCount: numero di colli 

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

  • number: numero della richiesta di reso
  • customer: cliente. Contiene:
    • code: codice libreria
    • description: nome libreria
  • typeCode: tipo di resa
  • state: stato della resa
  • ddt: ddt. Contiene:
    • code: codice DDT
    • date: data di conferma
    • packageCount: numero di colli
  • items: lista di titoli. Contiene:
    • ean: codice EAN
    • quantity: quantità
    • price: prezzo
    • state: stato
    • notes: note
    • messagges: lista di messaggi. Contiene: 
      • code: codice validazione
      • description: descrizione dell'errore
    • deliveredQuantity: quantità consegnata
    • acceptedQuantity: quantità accettate
    • refusedQuantity: quantità rifiutata
    • netValue: valore netto
  • barcode: barcode

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

Esempio richiesta

PATCH https://api.messaggerielibri.it/rese/ReturnRequest/123
Authorization: Bearer [TOKEN JWT]
{
    "state": "closed",
    "items":
    [
        {
            "ean": "9788899997915",
            "quantity": 0
        }
    ],
    "DDT": {
        "code": "ABC124",
        "date": "2021-05-01"
        "packageCount": 2
    }
}

Esempio risposta

Se la richiesta va a buon fine si ottengono in output le informazione sulla resa a seguito dell'aggiornamento:

{
    "number": 142,
    "typeCode": "RB",
    "state": "Closed",
    "items": [
        {
            "ean": "1000000001150",
            "quantity": 20,
            "price": 6,
            "state": "Working"
        },
        {
            "ean": "8050539040000",
            "quantity": 4,
            "price": 14.90,
            "state": "Working"
        }
    ],
    "startOfValidity": "2020-01-16T12:35:00.024802",
    "deliveryLimit": "2020-02-10",
    "ddt": {
        "code": "ABC124",
        "date": "2020-02-06",
        "packageCount": 4
    },
    "summary": {
        "eanCount": 2,
        "totalQuantity": 24,
        "totalPrice": 20.90
    }
}

NOTE:

La chiamata aggiorna solo il valore dei campi forniti, mantenendo invariato il valore degli altri campi.

Ad esempio, se si desidera solo cambiare lo stato della resa, senza modificarne il contenuto, è possibile passare i seguenti dati:

{
    "state": "closed"
}

Oppure, è possibile cambiare un singolo campo della DDT, ad esempio la data:

{
    "DDT": {
        "date": "2021-05-24"
    }
 }

Features

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

  • rese_write
  • rese_write_group
  • rese_write_all

altrimenti viene restituito 403 (Forbidden)

Recupero dei segnacolli di una resa

Consente di recuperare le etichette associate alle DDT della resa, una volta che questa è in stato "Chiusa"

Risponde a richieste GET verso /rese/returnrequest/{id}/pdf, dove {id} è l'identificativo della resa per cui si vogliono recuperare le etichette delle sue DDT.

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

Esempio richiesta

GET https://api.messaggerielibri.it/rese/ReturnRequest/123/pdf
Authorization: Bearer [TOKEN JWT]

Se la richiesta va a buon fine si ottiene un file PDF contenente le etichette corrispondenti alle DDT della resa.

Features

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

  • rese_read
  • rese_read_group
  • rese_read_all

altrimenti viene restituito 403 (Forbidden)

Recupero dello stato di rendibilità di un EAN

Consente di recuperare lo stato di rendibilità di un ean, indipendentemente dalla sua presenza o meno all'interno di una resa

Risponde a richieste GET verso /rese/EAN/{eanCode}, dove {eanCode} è il codice EAN.

E' possibile passare in querystring il parametro returnType: tipo di resa. In caso non sia fornita si ipotizza una resa buoni.

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

  • state: stato
  • reasonCode: codice motivo
  • reasonDescription: descrizione motivo

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

Esempio richiesta

GET https://api.messaggerielibri.it/rese/EAN/9788867155958?returnType=RB
Authorization: Bearer [TOKEN JWT]

Esempio risposta

In caso la richiesta vada a buon fine viene ritornato un oggetto json contenente lo stato di rendibilità dell'EAN e, in caso di titolo non rendibile, le relative motivazioni:

{
    "state": "Returnable"
}
{
    "state": "NotReturnable",
    "reasonCode": "0003",
    "reasonDescription": "SETTORE MERCEOLOGICO NON AMMESSO"
}

Recupero dello stato di rendibilità per EAN multipli

Consente di recuperare lo stato di rendibilità per EAN multipli, indipendentemente dalla sua presenza o meno all'interno di una resa

Risponde a richieste POST verso /rese/EAN

E' possibile passare in querystring il parametro returnType: tipo di resa per cui si desidera la rendibilità. In caso non sia fornita si ipotizza una resa buoni.

Per identificare la lista dei titoli per cui recuperare lo stato di rendibilità viene richiesto un oggetto JSON contenente un lista di EAN.

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

  • eanCode: codice EAN
  • state: stato
  • reasonCode: codice motivo
  • reasonDescription: descrizione motivo

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/rese/EAN?returnType=RB
["978889858203", "9788867155958", "978A1L99998ZZ"]
Authorization: Bearer [TOKEN JWT]

Esempio risposta

In caso la richiesta vada a buon fine viene ritornato un oggetto json contenente lo stato di rendibilità dell'EAN e , in caso di titolo non rendiibile, le relative motivazioni:

	{
		"eanCode": "9788867155958",
		"state": "Returnable"
	},
	{
		"eanCode": "978A1L99998ZZ",
		"state": "NotReturnable",
		"reasonCode": "0003",
		"reasonDescription": "SETTORE MERCEOLOGICO NON AMMESSO"
	}

Se vengono trovati uno o più EAN non presente a catalogo viene restiuito con "reasonCode" 0002:

	{
		"eanCode": "978889858203",
		"state": "NotReturnable",
		"reasonCode": "0002",
		"reasonDescription": "ANAGRAFICA INESISTENTE"
	},

Recupero della disponibilità delle tipologie di reso

Consente di ottenere informazioni sulla possibilità di creazioni di resi per le varie tipologie

Risponde a richieste GET verso /rese/TypeCode

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

  • code: codice disponibilità reso
  • available: disponibilità (boolean)

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/rese/TypeCode
Authorization: Bearer [TOKEN JWT]

Esempio risposta

[
	{
		"code": "FC",
		"available": true
	},
	{
		"code": "RB",
		"available": false
	},
	{
		"code": "RG",
		"available": false
	}
]