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"