PDF

External API

Web Application Terze parti

Questa sezione descrive le API REST per gestire autonomamente le liste UNICAST direttamente da Applicazioni Web di Terze parti senza passare per il portale ufficiale Uploader Cloud Service.

Esse devono avere le credenziali di accesso per le Basic Authentication limitata al Boundary da gestire. Possono ottenere la lista UNICAST, inserire nuovi record ed eliminarli. Possono anche uploadare nuove Release.

Get UNICAST List

Questa GET HTTPS richiede la lista UNICAST della Application specificata nel Boundary di cui si detiene le credenziali di accesso. E' ritornato un oggetto Json con l'esito della chiamata e la lista UNICAST con le coppie {Id,Release}. Se Application non ha elementi in lista o non e' esistente, e' ritornata una lista nulla. Result.Code ha valore negativo in caso di errore.

Sintassi
<url_servizio>/cgi-exec/uploader_list_unicast.cgi?app=<application>

ove
<application>: stringa ASCII di min 3, max 13 caratteri alfanumerici

Risposte positive 
{ "Result" : {"Code":  0,"Unicast":[]}}
{ "Result" : {"Code":  0,"Unicast":[
   {"Id":"ea1-xxyyzzwww","Release":"EAGLE1_EAGLE102.bin"}
  ,{"Id":"ea1-xxyyzzkkk","Release":"EAGLE1_EAGLE103.bin",...}]}}

Rsposte negative
{ "Result" : {"Code": -1,"Detail":"Not authorized" }}
{ "Result" : {"Code": -2,"Detail":"Syntax error" }}


Esempio:

GET https://<url_servizio>/cgi-exec/uploader_list_unicast.cgi?app=EAGLE1 HTTP/1.1
Host: <url_servizio>
Authorization: Basic QfbzdEJlZDp1caXv1WRlci09MZzPODdGyQ==
User-Agent: Mozilla/5.0 Chrome/93.0.4577.63 Safari/537.36

HTTP/1.1 200 OK
Date: Tue, 07 Sep 2021 10:13:40 GMT
Access-Control-Allow-Origin: *, *
Content-Length: 1683
Content-Type: application/json

{"Result":{"Code":0,"Unicast":[
  {"Id":"ea1-EA4DCD5E0","Release":"EAGLE1_EAGLE106.bin"},
  {"Id":"ea1-xxyyzzEEE","Release":"EAGLE1_EAGLE10E.bin"},
  {"Id":"ea1-xxyyzz444","Release":"EAGLE1_EAGLE104.bin"},
  {"Id":"ea1-xxyyzzHHH","Release":"EAGLE1_EAGLE10H.bin"},
  {"Id":"ea1-xxyyzzUUU","Release":"EAGLE1_EAGLE10U.bin"},
  {"Id":"ea1-xxyyzz666","Release":"EAGLE1_EAGLE106.bin"},
  {"Id":"ea1-xxyyzzLLL","Release":"EAGLE1_EAGLE10L.bin"},
  {"Id":"ea1-xxyyzzBBB","Release":"EAGLE1_EAGLE10B.bin"}]}}

Add UNICAST record

Questa GET HTTPS inserisce un nuovo record nella lista UNICAST della Application specificata nel Boundary di cui si detiene le credenziali di accesso. Se il record di quel DeviceId e' gia' presente in lista lo sovrascrive con la nuova Release. E' ritornato un oggetto Json con l'esito della chiamata. Result.Code ha valore negativo in caso di errore.

Sintassi
<url_servizio>/cgi-exec/uploader_add_unicast.cgi?
app=<application>&id=<device_id>&file=<filename>

ove
<application>: stringa ASCII di min 3, max 13 caratteri alfanumerici 
<device_id>  : stringa ASCII di 13 caratteri alfanumerici 
<filename>   : stringa ASCII del file completo di release

Risposta positiva
{"Result":{"Code":0,"Detail":"Unicast record saved"}}


Rsposte negative
{ "Result" : {"Code": -1,"Detail":"Not authorized" }}
{ "Result" : {"Code": -2,"Detail":"Syntax error" }}
{ "Result" : {"Code": -3,"Detail":"Recording error" }}

Esempio:

GET https://<url_servizio>/cgi-exec/uploader_add_unicast.cgi?
    app=EAGLE1&id=ea1-123456789&file=EAGLE1_EAGLE106.bin HTTP/1.1
Host: <url_servizio>    
Authorization: Basic QfbzdEJlZDp1caXv1WRlci09MZzPODdGyQ==
User-Agent: Mozilla/5.0 AppleWebKit/537.36 Chrome/93.0.4577.63

HTTP/1.1 200 OK
Date: Tue, 07 Sep 2021 10:26:05 GMT
Access-Control-Allow-Origin: *, *
Content-Length: 53
Content-Type: application/json

{"Result":{"Code":0,"Detail":"Unicast record saved"}}

Per convenzione il filename ha la seguente forma: application_release.extension

Delete UNICAST record

Questa GET HTTPS elimina un record dalla lista UNICAST della Application specificata nel Boundary di cui si detiene le credenziali di accesso. Se il record di quel DeviceId e' gia' presente in lista lo sovrascrive con la nuova Release. E' ritornato un oggetto Json con l'esito della chiamata. Result.Code ha valore negativo in caso di errore.

Sintassi
<url_servizio>/cgi-exec/uploader_delete_unicast.cgi?
app=<application>&id=<device_id>

ove
<application>: stringa ASCII di min 3, max 13 caratteri alfanumerici 
<device_id>  : stringa ASCII di 13 caratteri alfanumerici

Risposta positiva
{ "Result" : {"Code":  0,"Detail":"Unicast record deleted" }}

Rsposte negative
{ "Result" : {"Code": -1,"Detail":"Not authorized" }}
{ "Result" : {"Code": -2,"Detail":"Syntax error" }}
{ "Result" : {"Code": -3,"Detail":"Unicast record doesn't exist" }}

Esempio:

GET https://<url_servizio>/cgi-exec/uploader_delete_unicast.cgi?
    app=EAGLE1&id=ea1-123456789 HTTP/1.1
Host: <url_servizio>
Authorization: Basic QfbzdEJlZDp1caXv1WRlci09MZzPODdGyQ==
User-Agent: Mozilla/5.0 AppleWebKit/537.36 Chrome/93.0.4577.63

HTTP/1.1 200 OK
Date: Tue, 07 Sep 2021 12:25:57 GMT
Access-Control-Allow-Origin: *, *
Content-Length: 55
Content-Type: application/json

{"Result":{"Code":0,"Detail":"Unicast record deleted"}}

Upload Release

Questa POST HTTPS effettua un upload sul Cloud Service di una nuova release. Si utilizza un Content-Type del tipo multipart/form-data. Se il file esiste viene sovrascritto. E' ritornato un oggetto Json con l'esito della chiamata. Result.Code ha valore negativo in caso di errore.

Sintassi
<url_servizio>/cgi-exec/uploader.cgi?
file=<nome_file_release>

ove
<nome_file_release>:  nel formato <application>_<release>.<extension>

Risposte positive
{"Result":{"Code":0,"Detail":"New one: xxxxxxx bytes"}}
{"Result":{"Code":1,"Detail":"Overwritten: xxxxxx bytes" }}

Rsposte negative
{ "Result" : {"Code": -1,"Detail":"Not authorized" }}
{ "Result" : {"Code": -2,"Detail":"Syntax error" }}


Esempio:

POST https://<url_servizio>/cgi-exec/uploader.cgi?
    file=EAGLE1_EAGLE107.bin HTTP/1.1
Host: <url_servizio>
Content-Length: 1333129
Pragma: no-cache
Cache-Control: no-cache
Authorization: Basic QfbzdEJlZDp1caXv1WRlci09MZzPODdGyQ==
User-Agent: Mozilla/5.0 AppleWebKit/537.36 Safari/537.36
Content-Type: multipart/form-data; boundary=---WebKitFormBoundaryf9ZeC3iX9G
Accept: */*


------WebKitFormBoundaryf9ZeC3iX9G
...


HTTP/1.1 200 OK
Date: Tue, 07 Sep 2021 12:50:52 GMT
Access-Control-Allow-Origin: *, *
Content-Length: 55
Content-Type: application/json

{"Result":{"Code":0,"Detail":"New one: 1332916 bytes"}}

Appendix: esempi wget

wget -qO-  --http-user=user --http-password=password 
     "https://uploader.meshgrid.it/cgi-exec/uploader_list_unicast.cgi?
          app=EAGLE1"

wget -qO-  --http-user=user --http-password=passowrd 
     "https://<url_servizio>/cgi-exec/uploader_add_unicast.cgi?
          app=EAGLE1&id=ea1-123456789&file=EAGLE1_EAGLE106.bin"

wget  -qO- --http-user=user --http-password=password 
     "https://<url_servizio>/cgi-exec/uploader_delete_unicast.cgi?
          app=EAGLE1&id=ea1-xxyyzzkkk"