curl
Questa pagina contiene le istruzioni su come usare curl per interagire con le API Amica.
Cos'è curl?
curl è uno strumento a riga di comando e una libreria per trasferire dati da o verso un server tramite URL. Supporta moltissimi protocolli, HTTPS incluso. Sebbene il suo utilizzo possa risultare non immediatamente ovvio a chi non lo conosce, è in circolazione fin dai primi tempi dell'informatica ed è supportato su ogni tipo di piattaforma.
Citando il sito web:
curl is also used in cars, television sets, routers, printers, audio equipment, mobile phones, tablets, medical devices, settop boxes, computer games, media players and is the Internet transfer engine for thousands of software applications in over twenty billion installations. curl is used daily by virtually every Internet-using human on the globe.
curl è ovunque.
Usare curl con le API Amica
Per poter usare curl o altri semplici client REST con le API Amica Cloud, ti servono alcune informazioni in anticipo:
- Un access token valido
- La versione dell'API di destinazione (es.
v3) - L'host che memorizza i dati dell'utente
- L'ID Azienda di destinazione (potrebbe non essere necessario per alcuni endpoint)
Autenticazione
Dal punto di vista dell'API, curl è un client come gli altri: ogni richiesta deve includere un access token valido. Per ottenerlo:
- Registra un'app sull'App Store; per gli esperimenti conviene un'app privata dedicata.
-
Ottieni un access token con uno dei flussi di autenticazione. Per provare velocemente con curl, il flusso Client Credentials è il più diretto:
curl -X POST 'https://auth.amica20.it/connect/token' \ -d 'grant_type=client_credentials&client_id=<client_id>&client_secret=<client_secret>&scope=read write'
La risposta contiene l'access_token da inviare poi nell'header Authorization: Bearer.
Host dell'utente
Il token contiene informazioni sull'host dell'utente. Puoi usare un sito come
jwt.io per decodificare il token ed estrarre l'host. L'host
dell'Amica Cloud API in produzione è customerws1.amica20.it.
Versione dell'API e ID Azienda
In generale, gli URL delle API Amica Cloud sono fatti così:
https://{host}/api/{version}/{company_id}/endpoint
Negli esempi seguenti, la versione dell'API è v3 e l'ID Azienda è 1.
Esempi di richieste curl
Recuperare un elenco di nazioni (GET, con query)
curl -i -X GET --location 'https://{host}/api/v3/1/nazione?filter=nome%20%24ct%20cina' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
HTTP/1.1 200 OK
{"$id":"1","$values":[{"$id":"2","nome":"Cina","id":1176,"concurrencyToken":838276}]}
Note
La parte di query dell'URL (?filter=nome $ct cina, ovvero "nome contiene cina")
va inviata codificata in URL: ?filter=nome%20%24ct%20cina.
Recuperare un articolo di magazzino (GET)
curl -i -X GET --location 'https://{host}/api/v3/1/articolo/' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
HTTP/1.1 200 OK
{"$id":"1","categoriaMerceologicaId":null,"categoriaMerceologica":null,"gruppoMerceologicoId":null,"gruppoMerceologico":null,"causaleIvaId":null,"causaleIva":null,"tagliaId":null,"taglia":null,"marcaId":null,"marca":null,"produttoreId":null,"produttore":null,"repartoId":null,"reparto":null,"nome":"Alveari per Scatole Medie","codice":"CELM","nomeBreve":"Alveari Scatole Medie","codiceFornitore":null,"codiceProduttore":null,"gestioneArticolo":"Standard","contestoArticolo":"Sempre","barCode":null,"costoUltimo":0.2,"costoMedio":0.2,"unitàMisuraIntera":false,"articoloComposto":false,"stato":true,"dataInserimento":"2005-01-11T00:00:00Z","unitàMisuraMovimenti":"N","unitàMisuraInventario":"N","fattoreConversioneUnitàMisura":1,"note":null,"mediaFile":null,"contoRawVendita":null,"contoRawAcquisto":null,"distintaBase":null,"id":1,"concurrencyToken":835853}
Aggiornare un articolo di magazzino (PUT)
curl -i -X PUT --location 'https://{host}/api/v3/1/articolo/1' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
--data '{"categoriaMerceologicaId":null,"categoriaMerceologica":null,"gruppoMerceologicoId":null,"gruppoMerceologico":null,"causaleIvaId":null,"causaleIva":null,"tagliaId":null,"taglia":null,"marcaId":null,"marca":null,"produttoreId":null,"produttore":null,"repartoId":null,"reparto":null,"nome":"Alveari per Scatole Medie","codice":"CELM","nomeBreve":"Alveari Scatole Medie","codiceFornitore":null,"codiceProduttore":null,"gestioneArticolo":"Standard","contestoArticolo":"Sempre","barCode":null,"costoUltimo":0.2,"costoMedio":0.2,"unitàMisuraIntera":false,"articoloComposto":false,"stato":true,"dataInserimento":"2005-01-11T00:00:00Z","unitàMisuraMovimenti":"N","unitàMisuraInventario":"N","fattoreConversioneUnitàMisura":1,"note":null,"mediaFile":null,"contoRawVendita":null,"contoRawAcquisto":null,"distintaBase":null,"id":1,"concurrencyToken":835853}'
HTTP/1.1 200 OK
{"$id":"1","categoriaMerceologicaId":null,"categoriaMerceologica":null,"gruppoMerceologicoId":null,"gruppoMerceologico":null,"causaleIvaId":null,"causaleIva":null,"tagliaId":null,"taglia":null,"marcaId":null,"marca":null,"produttoreId":null,"produttore":null,"repartoId":null,"reparto":null,"nome":"Alveari per Scatole Medie","codice":"CELM","nomeBreve":"Alveari Scatole Medie","codiceFornitore":null,"codiceProduttore":null,"gestioneArticolo":"Standard","contestoArticolo":"Sempre","barCode":null,"costoUltimo":0.2,"costoMedio":0.2,"unitàMisuraIntera":false,"articoloComposto":false,"stato":true,"dataInserimento":"2005-01-11T00:00:00Z","unitàMisuraMovimenti":"N","unitàMisuraInventario":"N","fattoreConversioneUnitàMisura":1,"note":null,"mediaFile":null,"contoRawVendita":null,"contoRawAcquisto":null,"distintaBase":null,"id":1,"concurrencyToken":835854}
Rimuovere un articolo di magazzino (DELETE)
curl -i -X DELETE --location 'https://{host}/api/v3/1/articolo/1' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
HTTP/1.1 204 No Content
Aggiungere una nazione (POST)
curl -i --location 'https://{host}/api/v3/1/nazione' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
--data '{ "nome": "Cina" }'
HTTP/1.1 201 Created
{"$id":"1","nome":"Cina","id":1176,"concurrencyToken":838276}