NAV
shell

Guida alla configurazione API

Con Application Programming Interface (in acronimo API, in italiano interfaccia di programmazione di un'applicazione), in informatica, si indica ogni insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per l'espletamento di un determinato compito all'interno di un certo programma. Wikipedia

Il gestionale possiede un sistema di API basilare che permette di ottenere i dati registrati al suo interno attraverso un'interfaccia comune, oltre che di creare e aggiornare le informazioni dei vari record salvati.

Metodo di accesso

L'accesso all'API viene garantito esclusivamente tramite il token personale di accesso dell'utente, individuabile nella sezione dedicata alle informazioni sull'account.

img1

Cliccando sulla sezione evidenziata in rosso, si apre una pagina dedicata alla visualizzazione delle informazioni personali dell'utente e che permette la modifica della password e della foto profilo, oltre che la visualizzazione del token per l'API.

img2

Gestione degli accessi

E' disponibile un sistema di gestione degli accessi basilare per l'amministratore del gestionale, che può abilitare l'accesso degli utenti attraverso il modulo Utenti e permessi.

Non è al momento disponibile un sistema di permessi per il sistema API, e pertanto chiunque possegga un token può accedere a tutte le informazioni che l'API rende disponibile.

Modalità di utilizzo

Ogni richiesta di comunicazione con l'API deve essere composta di una chiave di accesso e di un'operazione richiesta, e deve essere formattata secondo il formato JSON.

In base al tipo di risorsa che si desidera richiedere, sono disponibili quattro metodi HTTP per la comunicazione:

Maggiori informazioni sulle relative risorse disponibili sono presenti nelle prossime sezioni, oltre che all'interno della tabella zz_api_resources del gestionale.

Retrieve

Le operazioni di retrieve permettono di ottenere le informazioni registrate nel gestionale, e solitamente non influenzano in alcun modo lo stato del software e i dati interni.

In base alle capacità del server in cui il gestionale è installato, è possibile un rallentamento del server in caso di molteplici richieste contemporanee all'API.

Standard di funzionamento

Considerando la potenziale quantità delle informazioni restituite, il sistema API del gestionale restituisce le informazioni richieste presentando una paginazione di default di 200 record (valore modificabile in impostazioni).

Richiesta standard per la comunicazione con l'API in modalità retrieve:

curl "http://<indirizzo_osm>/api/?token=<token_tecnico>&version=v1&resource=<resource>"
Parametri
Nome Descrizione Esempio Tipo
token Token di accesso di un utente string
resource Risorsa richiesta string
page Intero compreso tra 0 e il valore del campo pages restituito dalla prima richiesta page=1 integer
display Array che indica un filtro sui campi da restituire alla richiesta display=[id, name] array
filter Array composto che indica dei filtri da applicare sui contenuti dei risultati alla richiesta filter[ragione_sociale]=[Mario Rossi]&filter[telefono]=[0429%] array
order Lista di campi che indicano l'ordinamento da impostare sulla richiesta order=[descrizione|desc] array
upd Chiede di ottenere i record modificati dopo la data specificata upd=2023-01-01 23:45:00 date
crd Chiede di ottenere i record creati dopo la data specificata crd=2023-01-01 23:45:00 date

Il rispetto delle opzioni sopra indicate, come per la gestione della paginazione automatica, è riservato alla singola risorsa: in casi specifici e documentati, la risorsa potrebbe ignorare le opzioni indicate a favore di un comportamento personalizzato.

Create

La funzione Create è una funzione utilizzata per effettuare una richiesta di tipo POST ad un'API, utilizzando un linguaggio di programmazione. La richiesta POST permette di inviare dati ad un server, che poi li processerà e restituirà una risposta.

La funzione post può includere parametri come l'URL dell'API da chiamare, i dati da inviare al server e le eventuali informazioni di autenticazione o autorizzazione. La risposta ricevuta può essere gestita nel codice per eseguire ulteriori operazioni o restituire risultati all'utente.

Update

La funzione Update è una funzione che consente di aggiornare o modificare un elemento sul server. Il metodo "put" viene utilizzato per sostituire completamente le informazioni di un elemento esistente con nuovi dati forniti dal chiamante. Il chiamante deve specificare l'ID dell'elemento da modificare e fornire i nuovi dati per completare l'operazione di sostituzione.

Delete

La funzione delete è un'operazione che permette di rimuovere o eliminare i dati o le informazioni presenti in un server. Questa operazione può essere eseguita attraverso una richiesta utilizzando un metodo HTTP DELETE. Tale richiesta deve essere indirizzata all'URL corretto, specificando gli eventuali parametri necessari per identificare l'elemento da eliminare.

Risorse disponibili

Anagrafiche

Richiesta elenco dei clienti

curl "http://<indirizzo_osm>/api/?token=<token_tecnico>&version=v1&resource=clienti"

Risposta

{
  "records": {
    "0": {
      "idanagrafica": 2,
      "codice": "00000002",
      "ragione_sociale": "Cliente",
      "tipo": "Privato",
      "piva": "05024030287",
      "codice_fiscale": "05024030287",
      "capitale_sociale": "",
      "data_nascita": null,
      "luogo_nascita": "",
      "sesso": "",
      "indirizzo": "Via Roma",
      "indirizzo2": "",
      "citta": "Este",
      "cap": "35042",
      "provincia": "",
      "km": "0.00",
      "id_nazione": 82,
      "telefono": "",
      "fax": "",
      "cellulare": "",
      "email": "",
      "pec": "",
      "sitoweb": "",
      "note": "",
      "codiceri": "",
      "codicerea": "",
      "riferimento_amministrazione": "",
      "appoggiobancario": "",
      "filiale": "",
      "codiceiban": "",
      "bic": "",
      "diciturafissafattura": "",
      "idpagamento_vendite": 0,
      "idpagamento_acquisti": 0,
      "id_piano_sconto_vendite": 0,
      "id_piano_sconto_acquisti": 0,
      "id_listino": 0,
      "idiva_vendite": null,
      "idiva_acquisti": null,
      "id_ritenuta_acconto_vendite": 0,
      "id_ritenuta_acconto_acquisti": 0,
      "idsede_fatturazione": 0,
      "idconto_cliente": 119,
      "idbanca_vendite": null,
      "idbanca_acquisti": null,
      "idconto_fornitore": 0,
      "id_settore": 0,
      "marche": "",
      "dipendenti": 0,
      "macchine": 0,
      "idagente": 0,
      "idrelazione": 0,
      "id_provenienza": null,
      "agentemaster": 0,
      "idzona": 0,
      "foro_competenza": "",
      "nome": "",
      "cognome": "",
      "iscrizione_tribunale": "",
      "n_alboartigiani": "",
      "colore": "#ffffff",
      "created_at": "2023-09-19 09:27:58",
      "updated_at": "2023-09-19 09:28:25",
      "idtipointervento_default": null,
      "id_dichiarazione_intento_default": null,
      "provvigione_default": "0.000000",
      "gaddress": null,
      "lat": null,
      "lng": null,
      "deleted_at": null,
      "codice_destinatario": "",
      "split_payment": 0,
      "enable_newsletter": 1,
      "nazione": "Italia"
    },
  },
  "total-count": 1,
  "pages": 1,
  "status": 200,
  "message": "OK"
}

Richiesta elenco delle anagrafiche

curl "http://<indirizzo_osm>/api/?token=<token_tecnico>&version=v1&resource=anagrafiche"

Risposta

{
  "records": {
    "0": {
      "idanagrafica": 1,
      "codice": "00000001",
      "ragione_sociale": "Admin spa",
      "tipo": "",
      "piva": "05024030289",
      "codice_fiscale": "05024030289",
      "capitale_sociale": "",
      "data_nascita": null,
      "luogo_nascita": "",
      "sesso": "",
      "indirizzo": "Via Rovigo, 51",
      "indirizzo2": "",
      "citta": "Este",
      "cap": "35042",
      "provincia": "",
      "km": "0.00",
      "id_nazione": 82,
      "telefono": "",
      "fax": "",
      "cellulare": "",
      "email": "",
      "pec": "",
      "sitoweb": "",
      "note": "",
      "codiceri": "",
      "codicerea": "",
      "riferimento_amministrazione": "",
      "appoggiobancario": "",
      "filiale": "",
      "codiceiban": "",
      "bic": "",
      "diciturafissafattura": "",
      "idpagamento_vendite": null,
      "idpagamento_acquisti": null,
      "id_piano_sconto_vendite": null,
      "id_piano_sconto_acquisti": null,
      "id_listino": 0,
      "idiva_vendite": null,
      "idiva_acquisti": null,
      "id_ritenuta_acconto_vendite": null,
      "id_ritenuta_acconto_acquisti": null,
      "idsede_fatturazione": 0,
      "idconto_cliente": 0,
      "idbanca_vendite": null,
      "idbanca_acquisti": null,
      "idconto_fornitore": 0,
      "id_settore": 0,
      "marche": "",
      "dipendenti": 0,
      "macchine": 0,
      "idagente": 0,
      "idrelazione": 0,
      "id_provenienza": null,
      "agentemaster": 0,
      "idzona": 0,
      "foro_competenza": "",
      "nome": "",
      "cognome": "",
      "iscrizione_tribunale": "",
      "n_alboartigiani": "",
      "colore": "",
      "created_at": "2023-09-19 09:26:54",
      "updated_at": "2023-09-19 09:27:39",
      "idtipointervento_default": null,
      "id_dichiarazione_intento_default": null,
      "provvigione_default": "0.000000",
      "gaddress": null,
      "lat": null,
      "lng": null,
      "deleted_at": null,
      "codice_destinatario": "",
      "split_payment": 0,
      "enable_newsletter": 1,
      "nazione": "Italia"
    },
    "1": {
      [...]
    },
    "2": {
      [...]
    },
    "3": {
     [...]
    }
  },
  "total-count": 4,
  "pages": 1,
  "status": 200,
  "message": "OK"
}

Aggiunta di una anagrafica

curl -X POST -d '{
    "token": "<token_tecnico>",
    "resource": "anagrafica",
    "data": {
        "ragione_sociale": "Mario Rossi",
        "id_tipo": "1"
    }
}' "http://<indirizzo_osm>/api/"

Risposta

{
  "status": 200,
  "message": "OK"
}

Eliminazione di una anagrafica

curl -X DELETE -d '{
    "token": "<token_tecnico>",
    "resource": "anagrafica",
    "id": "13"
}' "http://<indirizzo_osm>/api/"

Risposta

{
  "status": 200,
  "message": "OK"
}

Modifica di un'anagrafica

curl -X PUT -d '{
    "token": "<token_tecnico>",
    "resource": "anagrafica",
    "data": {
      "id": 2,
      "ragione_sociale": "Franco",
      "indirizzo": "Via Rovigo, 51",
      "citta": "Este"
    }
}' "http://<indirizzo_osm>/api/"

Risposta

{
  "status": 200,
  "message": "OK"
}

Articoli

Richiesta elenco degli articoli a magazzino

curl "http://<indirizzo_osm>/api/?token=<token_tecnico>&version=v1&resource=articoli"

Risposta

[
  {
  "records": {
    "0": {
      "id": 2,
      "codice": "001",
      "descrizione": "Articolo 1",
      "um": "",
      "abilita_serial": 0,
      "immagine": null,
      "note": "",
      "qta": "9.000000",
      "threshold_qta": "0.000000",
      "qta_multipla": "0.000000",
      "ubicazione": "",
      "prezzo_acquisto": "10.000000",
      "coefficiente": "2.000000",
      "prezzo_vendita": "20.000000",
      "prezzo_vendita_ivato": "24.400000",
      "minimo_vendita": "0.000000",
      "minimo_vendita_ivato": "0.000000",
      "idiva_vendita": 171,
      "gg_garanzia": 0,
      "peso_lordo": "0.000000",
      "volume": "0.000000",
      "componente_filename": "",
      "contenuto": "",
      "attivo": 1,
      "created_at": "2023-09-14 09:21:21",
      "updated_at": "2023-09-14 09:55:35",
      "id_categoria": null,
      "id_sottocategoria": null,
      "servizio": 0,
      "idconto_vendita": null,
      "idconto_acquisto": null,
      "deleted_at": null,
      "barcode": "",
      "id_fornitore": null,
      "um_secondaria": null,
      "fattore_um_secondaria": "0.0000000000",
      "id_combinazione": null,
      "categoria": null,
      "sottocategoria": null
    },
    "1": {
      "id": 3,
      "codice": "002",
      "descrizione": "Articolo di Prova",
      "um": "",
      "abilita_serial": 0,
      "immagine": null,
      "note": "",
      "qta": "0.000000",
      "threshold_qta": "0.000000",
      "qta_multipla": "0.000000",
      "ubicazione": "",
      "prezzo_acquisto": "0.000000",
      "coefficiente": "0.000000",
      "prezzo_vendita": "0.000000",
      "prezzo_vendita_ivato": "0.000000",
      "minimo_vendita": "0.000000",
      "minimo_vendita_ivato": "0.000000",
      "idiva_vendita": 171,
      "gg_garanzia": 0,
      "peso_lordo": "0.000000",
      "volume": "0.000000",
      "componente_filename": "",
      "contenuto": null,
      "attivo": 1,
      "created_at": "2023-09-14 09:25:52",
      "updated_at": "2023-09-14 09:25:52",
      "id_categoria": null,
      "id_sottocategoria": null,
      "servizio": 0,
      "idconto_vendita": null,
      "idconto_acquisto": null,
      "deleted_at": null,
      "barcode": "",
      "id_fornitore": null,
      "um_secondaria": null,
      "fattore_um_secondaria": "0.0000000000",
      "id_combinazione": null,
      "categoria": null,
      "sottocategoria": null
    }
  },
  "total-count": 2,
  "pages": 1,
  "status": 200,
  "message": "OK"
  }
]

Creazione di un articolo

curl -X POST -d '{
    "token": "<token_tecnico>",
    "resource": "movimento_articolo",
    "data": {
       "categoria": "Componenti",
       "sottocategoria": "Micro",
       "codice": "Vite01",
       "descrizione": "Vite da 1cm",
       "prezzo_vendita": "0.05"
  }
}' "http://<indirizzo_osm>/api/"

Risposta

{
  "id": 6,
  "status": 200,
  "message": "OK"
}

Modifica di un articolo

curl -X PUT -d '{
    "token": "<token_tecnico>",
    "resource": "articolo",
    "id": 5,
    "data": {
       "categoria": "Usato",
       "sottocategoria": "Micro",
       "descrizione": "Vite da 1cm",
       "prezzo_vendita": "0.08"
  }
}' "http://<indirizzo_osm>/api/"

Risposta

{
  "status": 200,
  "message": "OK"
}

Movimenta articolo

curl -X POST -d '{
    "token": "<token_tecnico>",
    "resource": "movimento_articolo",
    "data": {
        "id_articolo": 1,
        "data": "2023-09-15 12:50:00",
        "descrizione": "Movimentazione da API",
        "qta": 2
    }
}' "http://<indirizzo_osm>/api/"

Risposta

{
  "status": 200,
  "message": "OK"
}

Impianti

Richiesta elenco impianti

curl "http://<indirizzo_osm>/api/?token=<token_tecnico>&version=v1&resource=impianti"

Risposta

{
  "records": {
    "0": {
      "id": 1,
      "idanagrafica": 2,
      "matricola": "01",
      "nome": "Impianto di Prova",
      "descrizione": ""
    }
  },
  "total-count": 1,
  "pages": 1,
  "status": 200,
  "message": "OK"
}

Interventi

Richiedi elenco degli articoli collegati a un intervento

curl "http://<indirizzo_osm>/api/?token=<token_tecnico>&version=v1&resource=articoli_intervento&id_intervento=6"

Risposta

{
  "records": {
    "0": {
      "id": 18,
      "id_articolo": 2,
      "id_intervento": 6,
      "qta": 1,
      "data": "2023-09-19 12:46:34"
    }
  },
  "total-count": 1,
  "pages": 1,
  "status": 200,
  "message": "OK"
}

Aggiunta articolo a un intervento

curl -X POST -d '{
    "token": "<token_tecnico>",
    "resource": "articolo_intervento",
    "data": {
        "id_articolo": 2,
        "id_intervento": 1,
        "qta": 1,
        "um": "ore"
    }
}' "http://<indirizzo_osm>/api/"

Risposta

{
  "status": 200,
  "message": "OK"
}

Elenco degli impianti collegati a un intervento

curl "http://localhost/openstamanager/api/?token=fxh2sluhHWGoOVq9dYDOisbtBsG9iikM&version=v1&resource=impianti_intervento&id_intervento=6"

Risposta

{
  "records": {
    "0": {
      "id_impianto": 1,
      "id_intervento": 6
    }
  },
  "total-count": 1,
  "pages": 1,
  "status": 200,
  "message": "OK"
}

Aggiunta impianto a un intervento

curl -X POST -d '{
    "token": "<token_tecnico>",
    "resource": "impianti_intervento",
    "data": {
        "id_intervento": 6,
        "impianti": 2
    }
}' "http://<indirizzo_osm>/api/"

Risposta

{
  "status": 200,
  "message": "OK"
}

Elenco degli interventi

curl "http://<indirizzo_osm>/api/?token=<token_tecnico>&version=v1&resource=interventi"

Risposta

{
  "records": {
    "0": {
      "id": 3,
      "codice": "1",
      "data_richiesta": "2023-09-19 09:32:00",
      "richiesta": "<p>Test</p>",
      "descrizione": "",
      "km": "0.00",
      "idtipointervento": 1,
      "nomefile": "",
      "idanagrafica": 2,
      "idreferente": 0,
      "idagente": 0,
      "idstatointervento": 3,
      "informazioniaggiuntive": "",
      "prezzo_ore_unitario": "0.00",
      "idsede_partenza": 0,
      "idsede_destinazione": 0,
      "idclientefinale": 0,
      "info_sede": "",
      "firma_file": "",
      "firma_data": null,
      "firma_nome": "",
      "data_invio": null,
      "data_scadenza": null,
      "created_at": "2023-09-19 09:33:00",
      "updated_at": "2023-09-19 09:33:37",
      "codice_cig": "",
      "codice_cup": "",
      "id_documento_fe": "",
      "num_item": "",
      "deleted_at": null,
      "id_preventivo": null,
      "id_contratto": null,
      "id_ordine": null,
      "id_segment": 12,
      "data": null,
      "tecnici": null,
      "stato": "Fatturato"
    },
    "1": {
      "id": 6,
      "codice": "2",
      "data_richiesta": "2023-09-19 09:48:00",
      "richiesta": "<p>Test</p>",
      "descrizione": "",
      "km": "0.00",
      "idtipointervento": 1,
      "nomefile": "",
      "idanagrafica": 2,
      "idreferente": 0,
      "idagente": 0,
      "idstatointervento": 2,
      "informazioniaggiuntive": "",
      "prezzo_ore_unitario": "0.00",
      "idsede_partenza": 0,
      "idsede_destinazione": 0,
      "idclientefinale": 0,
      "info_sede": "",
      "firma_file": "",
      "firma_data": null,
      "firma_nome": "",
      "data_invio": null,
      "data_scadenza": null,
      "created_at": "2023-09-19 09:48:31",
      "updated_at": "2023-09-21 11:57:02",
      "codice_cig": "",
      "codice_cup": "",
      "id_documento_fe": "",
      "num_item": "",
      "deleted_at": null,
      "id_preventivo": null,
      "id_contratto": null,
      "id_ordine": null,
      "id_segment": 12,
      "data": "2023-09-20 07:15:00",
      "tecnici": null,
      "stato": "Da programmare"
    }
  },
  "total-count": 1,
  "pages": 1,
  "status": 200,
  "message": "OK"
}

Elenco dei tipi di intervento

Stampa rapportino intervento

Richiesta elenco sessioni di un intervento

Richiesta sincronizzazione interventi

Elenco stati degli interventi

Contratti

Elenco stati dei contratti

Ordini

Elenco stati degli ordini

Preventivi

Elenco stati dei preventivi

Stato dei servizi

Richiedi spazio occupato dall'installazione

Utenti

Login

Logout

Messaggi di errore

In base allo stato dell'API e alla richiesta effettuata, è possibile che vengano restituiti dei messaggi di stato che informano l'utilizzatore del risultato della richiesta.

Codice Significato
200 OK -- La richiesta è andata a buon fine.
400 Erorre interno dell'API -- La richiesta effettuata risulta invalida per l'API.
401 Non autorizzato -- Accesso non autorizzato.
404 Non trovato -- La risorsa richiesta non risulta disponibile.
500 Errore del server -- Il gestionale non è in grado di completare la richiesta.
503 Servizio non disponibile -- L'API del gestionale non è abilitata a causa della versione troppo vecchia di MySQL (>= 5.6.5).