Documentazione API
Quoparts mette a disposizione un servizio REST API, per integrazioni da sistemi esterni.
Questa documentazione fornisce informazioni sugli endpoint disponibili e su come interagire con essi.
API Endpoint Base
1. Autenticazione
L'API Login consente di autenticarsi al sistema QuoParts e ottenere un token necessario per le chiamate successive.
Parametri URL
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
login | string | SÌ | Nome metodo. |
username | string | SÌ | Username per l'autenticazione. |
password | string | SÌ | Password per l'autenticazione. |
Esempio cURL
curl -X GET "{BASE_URL}/ws_quoparts.php?login=&username=CODICE_UTENTE&password=PASSWORD_UTENTE"
Risposta
Struttura della risposta
La risposta contiene un oggetto JSON con le informazioni di autenticazione.
{
"errorCode": "string",
"error": "string",
"data": [
{
"TOKEN": "string"
}
]
}
Campi Output
| Campo | Descrizione | Tipo | Note |
|---|---|---|---|
errorCode | Codice errore (0 se successo, altro valore se errore) | string | Sempre presente |
error | Descrizione errore (vuoto se successo) | string | Sempre presente |
data | Array contenente il token di autenticazione | array | Sempre presente |
data[].TOKEN | Token di autenticazione | string | Solo se successo |
Esempio Risposta (Successo)
{
"errorCode": "0",
"error": "",
"data": [
{
"TOKEN": "40919716769452007349723.39576135"
}
]
}
Esempio Risposta (Errore)
{
"errorCode": "101",
"error": "Utente non Accreditato",
"data": []
}
Note Tecniche
- Il token restituito deve essere utilizzato per tutte le richieste successive.
- In caso di token scaduto, è necessario effettuare nuovamente il login.
2. Import Clienti
L'API consente di trasmettere anagrafiche cliente al sistema QuoParts e generare le relative credenziali.
Parametri URL
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
importCli | string | SÌ | Nome metodo. |
token | string | SÌ | Token di autenticazione ottenuto tramite API Login. |
Struttura Payload (JSON)
Inviare un oggetto JSON con proprietà data contenente un array di clienti.
Struttura del payload
{
"data": [
{
"DES_NOM": "string",
"DES_IND": "string",
"DES_CTA": "string",
"COD_PRN": "string",
"COD_CAP": "string",
"COD_EML": "string",
"COD_PTA_IVA": "string",
"FLG_ATV": "string",
"COD_CLI_ERP": "string"
}
]
}
Campi Input
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
DES_NOM | string | SÌ | Ragione Sociale. |
DES_IND | string | No | Indirizzo. |
DES_CTA | string | No | Città. |
COD_PRN | string | No | Provincia (es: MI). |
COD_CAP | string | No | CAP. |
COD_EML | string | No | Email. |
COD_PTA_IVA | string | SÌ | Partita IVA. |
FLG_ATV | string | No | Stato (0=non attivo; 1=attivo). Default: 1. |
COD_CLI_ERP | string | SÌ | Codice Cliente Gestionale univoco. |
Esempio cURL
curl -X POST "{BASE_URL}/ws_quoparts.php?importCli=&token=TOKEN" \
-H "Content-Type: application/json" \
-d '{
"data": [
{
"DES_NOM": "Rossi S.r.l.",
"DES_IND": "Via Roma 123",
"DES_CTA": "Milano",
"COD_PRN": "MI",
"COD_CAP": "20121",
"COD_EML": "info@rossisrl.it",
"COD_PTA_IVA": "12345678901",
"FLG_ATV": "1",
"COD_CLI_ERP": "CLI001"
}
]
}'
Risposta
Struttura della risposta
La risposta contiene un array di oggetti con le informazioni per ciascun cliente processato, correlate al COD_CLI_ERP trasmesso.
{
"errorCode": "string",
"error": "string",
"data": [
{
"errorCode": "string",
"error": "string",
"COD_CLI_ERP": "string",
"COD_CLI": "string",
"COD_USR": "string",
"COD_PWD": "string"
}
]
}
Campi Output
| Campo | Descrizione | Tipo | Note |
|---|---|---|---|
errorCode | Codice errore | string | Sempre presente. 0 se successo |
error | Descrizione errore | string | Sempre presente. Vuoto se successo |
data | Array contenente i dati del cliente e relative credenziali | array | Sempre presente. Vuoto se errore |
data[].errorCode | Codice errore creazione cliente | string | Sempre presente. 0 se successo |
data[].error | Descrizione errore creazione cliente | string | Sempre presente. Vuoto se successo |
data[].COD_CLI_ERP | Codice Cliente Gestionale (ricevuto in input) | string | Sempre presente |
data[].COD_CLI | Codice Cliente QuoParts generato/associato | string | Solo se successo |
data[].COD_USR | Username QuoParts generato | string | Solo se successo |
data[].COD_PWD | Password QuoParts generata | string | Solo se successo |
Esempio Risposta (Successo)
{
"errorCode": "0",
"error": "",
"data": [
{
"errorCode": "0",
"error": "",
"COD_CLI_ERP": "CLI001",
"COD_CLI": "000015",
"COD_USR": "M00015",
"COD_PWD": "O8HMER"
}
]
}
Esempio Risposta (Errore)
{
"errorCode": "100",
"error": "Richiesta errata",
"data": []
}
Note Tecniche
- Il campo
FLG_ATV, se omesso, viene automaticamente impostato a 1 (attivo).
3. Import Preventivi
Consente di trasmettere richieste di preventivo al portale QuoParts.
Parametri URL
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
importPvt | string | SÌ | Nome metodo. |
token | string | SÌ | Token di autenticazione ottenuto tramite API Login. |
Struttura Payload (JSON)
Il body deve contenere un oggetto data diviso in testata e articoli.
Struttura del payload
{
"data": {
"testata": {
"COD_CLI": "string",
"COD_CLI_ERP": "string",
"COD_TGA": "string",
"COD_TLO": "string",
"DES_VCL": "string",
"DES_NOM_SPD": "string",
"DES_IND_SPD": "string",
"DES_CTA_SPD": "string",
"COD_PRN_SPD": "string",
"COD_CAP_SPD": "string"
},
"articoli": [
{
"DES_RGR": "string",
"COD_ART_PVT": "string",
"DES_ART_PVT": "string",
"IMP_LST_PVT": number,
"QTA_DET_PVT": number
}
]
}
}
Campi Input Testata
I seguenti campi rappresentano l'intestazione del preventivo e sono presenti una sola volta per richiesta.
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
COD_CLI | string | SÌ* | Codice Cliente QuoParts. *Alternativo a COD_CLI_ERP |
COD_CLI_ERP | string | SÌ* | Codice Cliente Gestionale. *Alternativo a COD_CLI |
COD_TGA | string | SÌ | Targa veicolo. |
DES_VCL | string | SÌ | Descrizione Veicolo. |
COD_TLO | string | No | Telaio. |
DES_NOM_SPD | string | No | Cliente di spedizione. |
DES_IND_SPD | string | No | Indirizzo di spedizione. |
DES_CTA_SPD | string | No | Città di spedizione. |
COD_PRN_SPD | string | No | Provincia di spedizione. (es: MI, RM) |
COD_CAP_SPD | string | No | CAP di spedizione. |
Campi Articoli (Array)
L'array articoli contiene la lista degli articoli da preventivare.
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
DES_RGR | string | SÌ | Descrizione generica dell'articolo. |
COD_ART_PVT | string | SÌ | Codice OE articolo. |
DES_ART_PVT | string | No | Descrizione specifica dell'articolo. |
IMP_LST_PVT | number | No | Importo Listino OE. |
QTA_DET_PVT | number | No | Quantità. |
Esempio cURL
curl -X POST "{BASE_URL}/ws_quoparts.php?importPvt=&token=TOKEN" \
-H "Content-Type: application/json" \
-d '{
"data": {
"testata": {
"COD_CLI": "000015",
"COD_CLI_ERP": "CLI001",
"COD_TGA": "TE001ST",
"DES_VCL": "FORD B-Max 1.6 Ti-VCT Benzina"
},
"articoli": [
{
"DES_RGR": "Filtro olio",
"COD_ART_PVT": "1883037",
"DES_ART_PVT": "Filtro olio motore",
"IMP_LST_PVT": 14.57,
"QTA_DET_PVT": 1
}
]
}
}'
Risposta
Struttura della risposta
La risposta contiene un oggetto JSON con l'esito dell'operazione.
{
"errorCode": "string",
"error": "string",
"data": [
{
"COD_DOC": "string"
}
]
}
Campi Output
| Campo | Descrizione | Tipo | Obbligatorio |
|---|---|---|---|
errorCode | Codice errore (0 se successo, altro valore se errore) | string | Sempre presente |
error | Descrizione errore (vuoto se successo) | string | Sempre presente |
data | Array contenente i dati del preventivo creato | array | Sempre presente. Vuoto se errore |
data[].COD_DOC | Codice Documento/Preventivo QuoParts generato | string | Solo se successo |
Esempio Risposta (Successo)
{
"errorCode": "0",
"error": "",
"data": [
{
"COD_DOC": "000001"
}
]
}
Esempio Risposta (Errore)
{
"errorCode": "107",
"error": "Errore durante la creazione del preventivo",
"data": []
}
Note Tecniche
- È necessario valorizzare almeno uno tra
COD_CLIeCOD_CLI_ERPper identificare il cliente. - Se
COD_CLIeCOD_CLI_ERPsono entrambi valorizzati, il sistema utilizza prioritariamenteCOD_CLI. - L'array
articolideve contenere almeno un elemento. - I campi numerici (IMP_LST_PVT, QTA_DET_PVT) devono essere in formato numerico.
4. Export Preventivi
Consente di esportare i preventivi presenti nel portale QuoParts, filtrati per cliente e per intervallo di date.
Parametri URL
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
exportPvt | string | SÌ | Nome metodo. |
token | string | SÌ | Token di autenticazione ottenuto tramite API Login. |
codCli | string | SÌ | Codice Cliente Gestionale (COD_CLI_ERP) per cui recuperare i preventivi. |
datDocIni | string | SÌ | Data inizio intervallo, formato dd/mm/yyyy. |
datDocFin | string | SÌ | Data fine intervallo, formato dd/mm/yyyy. |
Esempio cURL
curl -X GET "{BASE_URL}/ws_quoparts.php?exportPvt=&token=TOKEN&codCli=CLI001&datDocIni=01/01/2026&datDocFin=30/06/2026"
Risposta
Struttura della risposta
La risposta contiene un oggetto JSON con l'elenco dei preventivi trovati. Ogni preventivo include la testata del documento e un array RICHIESTE, ciascuna delle quali contiene a sua volta un array ARTICOLI con i prodotti preventivati.
{
"errorCode": "string",
"error": "string",
"data": [
{
"DOCUMENTI": [
{
"AAA_ESZ": "string",
"COD_TIP_DOC": "string",
"COD_CLI": "string",
"COD_DOC": "string",
"DES_NOM": "string",
"DAT_DOC": "string",
"IMP_TOT": number,
"DES_NOM_SPD": "string",
"DES_IND_SPD": "string",
"DES_CTA_SPD": "string",
"COD_PRN_SPD": "string",
"COD_CAP_SPD": "string",
"COD_CLI_ERP": "string",
"COD_DOC_ERP": "string",
"COD_CIG": "string",
"COD_CUP": "string",
"COD_TGA": "string",
"COD_TLO": "string",
"DES_VCL": "string",
"RICHIESTE": [
{
"COD_RGR": "string",
"DES_RGR": "string",
"COD_ART_PVT": "string",
"DES_ART_PVT": "string",
"DES_NTE_RGR": "string",
"QTA_DET_PVT": number,
"IMP_LST_PVT": number,
"ARTICOLI": [
{
"COD_ART": "string",
"COD_ART_NOT_MAG": "string",
"DES_RIF": "string",
"QTA_DET": number,
"IMP_UNT": number,
"PER_SCO_1": number,
"PER_SCO_2": number,
"PER_SCO_3": number,
"PER_SCO_4": number,
"COD_FOR_ACQ": "string",
"IMP_ACQ": number,
"PER_SCO_ACQ": number,
"DES_CGA": "string",
"COD_ART_FOR_ACQ": "string"
}
]
}
]
}
]
}
]
}
Campi Output — Testata Documento
Campi presenti a livello di ogni documento nell'array DOCUMENTI.
| Campo | Tipo | Descrizione |
|---|---|---|
AAA_ESZ | string | Anno del documento. |
COD_TIP_DOC | string | Tipo documento. |
COD_CLI | string | Codice Cliente QuoParts. |
COD_DOC | string | Codice Preventivo QuoParts. |
DES_NOM | string | Ragione Sociale. |
DAT_DOC | string | Data del documento, formato dd-mm-yyyy. |
IMP_TOT | number | Importo totale del preventivo. |
DES_NOM_SPD | string | Cliente di spedizione. |
DES_IND_SPD | string | Indirizzo di spedizione. |
DES_CTA_SPD | string | Città di spedizione. |
COD_PRN_SPD | string | Provincia di spedizione (es: MI). |
COD_CAP_SPD | string | CAP di spedizione. |
COD_CLI_ERP | string | Codice Cliente Gestionale. |
COD_DOC_ERP | string | Codice Documento nel gestionale esterno (se presente). |
COD_CIG | string | Codice CIG (se presente). |
COD_CUP | string | Codice CUP (se presente). |
COD_TGA | string | Targa del veicolo. |
COD_TLO | string | Telaio del veicolo. |
DES_VCL | string | Descrizione del veicolo. |
Campi Output — Richieste (Array)
Ogni documento contiene un array RICHIESTE con le singole voci di preventivo.
| Campo | Tipo | Descrizione |
|---|---|---|
COD_RGR | string | Codice richiestatd> |
DES_RGR | string | Descrizione della parte richiesta (es: Paraurti post.). |
COD_ART_PVT | string | Codice OE articolo richiesto. |
DES_ART_PVT | string | Descrizione specifica dell'articolo richiesto. |
DES_NTE_RGR | string | Note aggiuntive sulla richiesta (es: Sensori parcheggio). |
QTA_DET_PVT | number | Quantità richiesta. |
IMP_LST_PVT | number | Importo listino OE dell'articolo richiesto. |
Campi Output — Articoli (Array)
Ogni richiesta contiene un array ARTICOLI con le offerte di prodotti abbinate.
| Campo | Tipo | Descrizione |
|---|---|---|
COD_ART | string | Codice articolo. |
COD_ART_NOT_MAG | string | Codice articolo senza precodice. |
DES_RIF | string | Descrizione articolo. |
QTA_DET | number | Quantità. |
IMP_UNT | number | Importo unitario. |
PER_SCO_1 | number | Percentuale sconto 1. |
PER_SCO_2 | number | Percentuale sconto 2. |
PER_SCO_3 | number | Percentuale sconto 3. |
PER_SCO_4 | number | Percentuale sconto 4. |
COD_FOR_ACQ | string | Codice fornitore di acquisto. |
IMP_ACQ | number | Importo di acquisto dal fornitore. |
PER_SCO_ACQ | number | Percentuale sconto acquisto. |
DES_CGA | string | Descrizione consegna (se presente). |
COD_ART_FOR_ACQ | string | Codice articolo del fornitore di acquisto. |
Esempio Risposta (Successo)
{
"errorCode": "0",
"error": "",
"data": [
{
"DOCUMENTI": [
{
"AAA_ESZ": "2026",
"COD_TIP_DOC": "QP",
"COD_CLI": "000001",
"COD_DOC": "000008",
"DES_NOM": "Rossi S.r.l.",
"DAT_DOC": "10-06-2026",
"IMP_TOT": 0,
"DES_NOM_SPD": "Rossi S.r.l.",
"DES_IND_SPD": "Via Roma 123",
"DES_CTA_SPD": "Milano",
"COD_PRN_SPD": "MI",
"COD_CAP_SPD": "20121",
"COD_CLI_ERP": "CLI001",
"COD_DOC_ERP": null,
"COD_CIG": null,
"COD_CUP": null,
"COD_TGA": "GH478GN",
"COD_TLO": "VF1RJB00367757280",
"DES_VCL": "RENAULT Captur II 1.3 TCe Hybrid, 16v. Ibrida benzina (2020-01 > 2024-04)",
"RICHIESTE": [
{
"COD_RGR": "0",
"DES_RGR": "Paraurti post.",
"COD_ART_PVT": "850B27833R",
"DES_ART_PVT": "Paraurti",
"DES_NTE_RGR": "Sensori parcheggio",
"QTA_DET_PVT": 1,
"IMP_LST_PVT": 376.7,
"ARTICOLI": [
{
"COD_ART": "RN7041071",
"COD_ART_NOT_MAG": "RN7041071",
"DES_RIF": "PARAURTI POSTERIORE-INFERIORE-NERO-GOFFRATO-CON FO",
"QTA_DET": 1,
"IMP_UNT": 0,
"PER_SCO_1": 0,
"PER_SCO_2": 0,
"PER_SCO_3": 0,
"PER_SCO_4": 0,
"COD_FOR_ACQ": "000002",
"IMP_ACQ": 73.83,
"PER_SCO_ACQ": 0,
"DES_CGA": null,
"COD_ART_FOR_ACQ": "RN7041071"
}
]
}
]
}
]
}
]
}
Esempio Risposta (Errore)
{
"errorCode": "100",
"error": "Richiesta errata",
"data": []
}
Note Tecniche
- Le date
datDocIniedatDocFindevono essere nel formatodd/mm/yyyy. - Il parametro
codClicorrisponde al campoCOD_CLI_ERP(codice gestionale) utilizzato nel metodo ImportCli. - La risposta ha una struttura gerarchica a tre livelli: Documento → Richieste → Articoli.
- I campi numerici (importi, sconti, quantità) sono restituiti come number.
- I campi
COD_DOC_ERP,COD_CIG,COD_CUPeDES_CGApossono esserenullse non valorizzati.