Introduzione
API Endpoint
https://api.balin.app/external_api/v1/
Balin.app mette a disposizione un servizio REST API, per integrazioni nelle vostre applicazioni.
Questa documentazione fornisce informazioni sugli endpoint disponibili e su come interagire con essi.
Endpoint REST API: https://api.balin.app/external_api/v1/
Attivazione API
Per attivare il servizo di REST API di Balin.app bisogna andare sulle impostazioni del proprio profilo utente in balin.app.
Dove sarà possibile abilitare/disabilitare il servizio REST API e ottenere api_token da usare per l'autenticazione.
Abilitazione sotto utenti
Per i sotto utenti sarà necessario che il proprietario principale dell'account conceda i permessi di visualizzazione sui veicoli interessati e che nella sezione di creazione/modifica del sotto utente abiliti le seguenti funzionalità:
- Utilizzo dello storico percorsi → per ottenre lo storico posizioni di un localizzatore GPS.
- Utilizzo del report → per ottenre lo storico del viaggio ovvero le tappe effettuate da un localizzatore GPS.
Autenticazione
Example header Basic Auth
--header 'Authorization: Basic <your_btoa_token>'
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
var token = <email> + ":" + <api_token>
var hash = btoa(token);
xhr.setRequestHeader("Authorization", "Basic " + hash);
var request = require('request');
var token = <email> + ":" + <api_token>>
var hash = btoa(token);
var options = {
'method': 'GET',
'url': 'https://api.balin.app/external_api/v1/<api_path>',
'headers': {
'Authorization': 'Basic ' + hash
}
};
import http.client
import base64
conn = http.client.HTTPSConnection("api.balin.app")
hash = base64.b64encode(b'<email>:<api_token>>')
payload = ''
headers = {
'Authorization': 'Basic ' + hash
}
conn.request("GET", "/external_api/v1/<api_path>", payload, headers)
Dopo aver attivato il servizio API dal portale, si potrà utilizzare l'api_token in associazione all'email dell'account per autenticare le richieste HTTP.
Questi parametri andranno inseriti all'interno dell'header delle richieste HTTP come Basic Athentication:
- Username - your email
- Password - api_token
Se l'autenticazione fallisce, sarà restituito un JSON object di tipo Error e con HTTP status 401.
Versioning
Tutte le chiamate API dovrebbero includere nel path la versione con cui desideri effettuare la richiesta. La versione attuale è la v1.
Se non viene passata alcuna versione, verrà utilizzata l'ultima versione dell'API. Assicurati di includere una versione valida in ogni richiesta per evitare problemi nell'integrazione con il tuo sistema.
Example path: https://api.balin.app/external_api/v1/<requested_path>
Paginazione
Example request
curl --location --request GET 'https://api.balin.app/external_api/v1/<api_path>&skip=0&limit=1500' \
--header 'Authorization: Basic <your_btoa_token>'
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
var token = <email> + ":" + <api_token>
var hash = btoa(token);
xhr.open("GET", "https://api.balin.app/external_api/v1/<api_path>&skip=0&limit=1500");
xhr.setRequestHeader("Authorization", "Basic " + hash);
xhr.send();
var request = require('request');
var token = <email> + ":" + <api_token>
var hash = btoa(token);
var options = {
'method': 'GET',
'url': 'https://api.balin.app/external_api/v1/<api_path>&skip=0&limit=1500',
'headers': {
'Authorization': 'Basic ' + hash
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import http.client
import base64
conn = http.client.HTTPSConnection("api.balin.app")
hash = base64.b64encode(b'<email>:<api_token>>')
payload = ''
headers = {
'Authorization': 'Basic ' + hash
}
conn.request("GET", "/external_api/v1/<api_path>&skip=0&limit=1500", payload, headers)
res = conn.getresponse()
data = res.read()
Tutti gli endpoint GET
che restituiscono un elenco di oggetti supportano la paginazione.
Ciò significa che per ottenere tutti gli oggetti, è necessario impaginare i risultati utilizzando sempre gli stessi parametri con il valore di skip
che indica quanti elementi saltare nell'elenco.
Tutti i risultati sono reperiti quando has_more
della risposta è false.
Il numero di elementi massimo in lista è specificato tramite limit
ed è impostato su 1500 ma sono consentiti valori fino a 15000.
Parametri
Parameter | Description |
---|---|
limit optional |
Numero di elementi per chiamata. Valori accettati: 1500 - 15000. Default 1500 |
skip optional |
Numero di elementi da saltare ricevuti da chiamata precedente. Default 0 |
Example response
{
"limit": 1500,
"skip": 0,
"data": [...] /** 1500 elements **/,
"has_more": true
}
Risposta
Parameter | Description |
---|---|
limit numeric, integer |
Numero di elementi richiesti nella chiamata |
skip numeric, integer |
Numero di elementi saltati come richiesti in chiamata |
has_more boolean |
true se ci sono ancora elementi nella lista richiesta ed è quindi necessaria una chiamata successiva di paginazione. |
data array |
Lista di oggetti nella pagina. |
Limiti utilizzo
Le nostre API sono gratuite ma hanno un limite di utilizzo di non più una richiesta al secondo.
Errori
Error response with HTTP error code
{
"type": 1,
"description": "Descrizione dello specifico errore"
}
Tutti gli errori includono un oggetto JSON con campo type
che ne identifica il tipo e una descrizione dell'errore in description
.
Per ogni chiamata descritta in questa documentazione vengono forniti i codici dei relativi errori ad esclusione di quelli comuni a tutte le chiamate API, che sono:
Errori comuni
Example error with code 401
{
"type": 3,
"description": "The user is not enabled for external APIs"
}
Error code | type | Spiegazione |
---|---|---|
401 |
1 | Autenticazione errata, email o api_token invalidi |
401 |
2 | Nessun utente trovato in balin.app con l'email specificata |
401 |
3 | Servizio REST API non abilitato per questo utente |
401 |
4 | Non autorizzato per mancanza di pagamenti in sospeso |
429 |
5 | Hai superato il limite massimo di richieste API, attenti e riprova |
500 |
1 | Errore interno del server |
Device
Oggetto che descrive il dispositivo di localizzazione GPS.
Device resource
{
"imei": "359633109558000",
"serial": "1107710000",
"name": "Vehicle 1",
"numeric_label": 1,
"timestamp_activation": 1608546968000,
"lng": 7.8481616,
"lat": 44.6996966,
"heading": 116,
"odometer": 5657910,
"altitude": 255,
"speed": 15,
"satellites": 14,
"moving": false,
"timestamp_position": 1626097725000,
"timestamp_last_trip_change": 1626071092000,
"has_GPS": true,
"is_connected": false,
"is_power_on": false
}
Field | Type | Description |
---|---|---|
imei |
string | Codice IMEI del localizzatore GPS |
serial |
string | Codice seriale del localizzatore GPS |
name |
string | Nome testuale assegnato dal proprietario sulla nostra piattaforma |
numeric_label |
string | Etichetta numerica assegnata dal proprietario sulla nostra piattaforma |
timestamp_activation |
timestamp in ms | Quando è stato attivato il localizzatore GPS |
lng |
numeric, decimal | Longitudine dell'ultima posizione inviata |
lat |
numeric, decimal | Latitudine dell'ultima posizione inviata |
heading |
numeric, integer | Direzione del dispositivo nell'ultima posizione inviata (0 - 359) |
speed |
numeric, decimal in Km/h | Velocità del veicolo nell'ultima posizione inviata |
odometer |
numeric, integer in metri | Odometro totale del dispositivo nell'ultima posizione registrata |
altitude |
numeric, integer in metri | Altitudine nell'ultima posizione registrata |
satellites |
numeric, integer | Numero di satelliti a cui è collegato il localizzatore. Più satelli sono collegati migliore sarà la precisione della posizione rilevata |
moving |
boolean | true se il localizzatore è in viaggiofalse se il localizzatore è fermo |
timestamp_last_trip_change |
timestamp in ms |
Timestamp in ms dell'ultimo cambio di stato del parametro moving .Se moving == true allora timestamp_last_trip_change indica il timestamp in ms da quando il localizzatore è in viaggioSe moving == false allora timestamp_last_trip_change indica il timestamp in ms da quando il localizzatore è fermo |
timestamp_position |
timestamp in ms | Quando è stata ricevuta l'ultima posizione GPS |
has_GPS |
boolean | Se true significa che il localizzatore è correttamente collegato alla rete GPS |
is_connected |
boolean | Se true significa che il localizzatore è correttamente collegato alla rete internet per la trasmissione dei dati |
is_power_on |
boolean | Se true significa che il localizzatore è correttamente alimentato |
Ottenere i device
Example request
curl --location --request GET 'https://api.balin.app/external_api/v1/devices' \
--header 'Authorization: Basic <your_btoa_token>'
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
var token = <email> + ":" + <api_token>
var hash = btoa(token);
xhr.open("GET", "https://api.balin.app/external_api/v1/devices");
xhr.setRequestHeader("Authorization", "Basic " + hash);
xhr.send();
var request = require('request');
var token = <email> + ":" + <api_token>
var hash = btoa(token);
var options = {
'method': 'GET',
'url': 'https://api.balin.app/external_api/v1/devices',
'headers': {
'Authorization': 'Basic ' + hash
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import http.client
import base64
hash = base64.b64encode(b'<email>:<api_token>>')
conn = http.client.HTTPSConnection("api.balin.app")
payload = ''
headers = {
'Authorization': 'Basic ' + hash
}
conn.request("GET", "/external_api/v1/devices", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Tramite questa API è possibile ottenere l'elenco dei localizzatori GPS disponibili come lista di oggetti JSON di tipo Device.
La lista di localizzatori disponibili varia a seconda del tipo di utente che effettua la chiamata:
- Utente proprietario - L'utente proprietario dell'account vedrà tutti i localizzatori in suo possesso e che risultano attivi.
- Sotto utente - Un sotto-utente vedra solo i localizzatori a cui è stata autorizzata la visualizzazione da parte dell'utente proprietario.
HTTP Request
Questa richiesta necessita di autenticazione e non necessita di paginazione ovvero viene ritornata tutta la lista disponibile.
GET https://api.balin.app/external_api/v1/devices
HTTS Response
Example response
[
{
"imei": "359633109558000",
"serial": "1107710000",
"name": "Vehicle 1",
"numeric_label": 2,
"timestamp_activation": 1606299832000,
"lng": 7.8483633,
"lat": 44.69949,
"heading": 235,
"odometer": 87,
"altitude": 272,
"speed": 22,
"satellites": 11,
"moving": true,
"timestamp_position": 1610612540000,
"timestamp_last_trip_change": 1607080145000,
"has_GPS": false,
"is_connected": false,
"is_power_on": false
},
{
"imei": "359633109558001",
"serial": "1107710001",
"name": "Vehicle 2",
"numeric_label": 2,
"timestamp_activation": 1608546968000,
"lng": 7.8481616,
"lat": 44.6996966,
"heading": 116,
"odometer": 5657910,
"altitude": 255,
"speed": 0,
"satellites": 14,
"moving": false,
"timestamp_position": 1626097725000,
"timestamp_last_trip_change": 1626071092000,
"has_GPS": true,
"is_connected": false,
"is_power_on": false
}
]
Una lista di Device.
HTTP Errors
Oggetto di tipo Error:
Error code | type | Spiegazione |
---|---|---|
401 |
1 | Autenticazione errata, email o api_token invalidi |
401 |
2 | Nessun utente trovato in balin.app con l'email specificata |
401 |
3 | Servizio REST API non abilitato per questo utente |
401 |
4 | L'utente non appartiene a balin.app |
401 |
5 | Non autorizzato per mancanza di pagamenti in sospeso |
500 |
1 | Errore interno del server |
Ottenere un device
Example request
curl --location --request GET 'https://api.balin.app/external_api/v1/device/359633109558000' \
--header 'Authorization: Basic <your_btoa_token>'
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
var token = <email> + ":" + <api_token>
var hash = btoa(token);
xhr.open("GET", "https://api.balin.app/external_api/v1/device/359633109558000");
xhr.setRequestHeader("Authorization", "Basic " + hash);
xhr.send();
var request = require('request');
var token = <email> + ":" + <api_token>
var hash = btoa(token);
var options = {
'method': 'GET',
'url': 'https://api.balin.app/external_api/v1/device/359633109558000',
'headers': {
'Authorization': 'Basic ' + hash
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import http.client
import base64
hash = base64.b64encode(b'<email>:<api_token>>')
conn = http.client.HTTPSConnection("api.balin.app")
payload = ''
headers = {
'Authorization': 'Basic ' + hash
}
conn.request("GET", "/external_api/v1/device/359633109558000", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Ritorna un singolo device specifico, identificato dall'imei
.
HTTP Request
Questa richiesta necessita di autenticazione.
GET https://api.balin.app/external_api/v1/device/:imei
Parametri
Parameter | Location | Description |
---|---|---|
imei string, required |
params | Codice imei del localizzatore GPS |
HTTS Response
Example response
{
"imei": "359633109558000",
"serial": "1107710000",
"name": "Vehicle 1",
"numeric_label": 2,
"timestamp_activation": 1606299832000,
"lng": 7.8483633,
"lat": 44.69949,
"heading": 235,
"odometer": 87,
"altitude": 272,
"speed": 22,
"satellites": 11,
"moving": true,
"timestamp_position": 1610612540000,
"timestamp_last_trip_change": 1607080145000,
"has_GPS": false,
"is_connected": false,
"is_power_on": false
}
Un oggetto JSON di tipo Device.
HTTP Errors
Oggetto di tipo Error:
Error code | type | Spiegazione |
---|---|---|
400 |
1 | Errore nei parametri della chiamata |
400 |
2 | Nessun localizzatore trovato con questo imei |
400 |
3 | L'utente non dispone dei permessi di visualizzazione del localizzatore. |
Position
Oggetto che descrive la posizione GPS. Si differenzia da Device perchè descrive una posizione generica registrata dal dispositivo e quindi utile per le richieste di storico e per la lettura delle varie tipologie di eventi inviati dal localizzatore GPS.
Position resource
{
"lng": 14.771271,
"lat": 40.925031,
"heading": 28,
"altitude": 0,
"speed": 27,
"timestamp": 1637768035000,
"type": 1
}
Field | Type | Description |
---|---|---|
lng |
numeric, decimal | Longitudine della posizione |
lat |
numeric, decimal | Latitudine della posizione |
heading |
numeric, integer | Direzione del dispositivo in questa posizione (0 - 359) |
altitude |
numeric, integer in metri | Altitudine della posizione |
speed |
numeric, decimal in Km/h | Velocità del veicolo in questa posizione |
timestamp_position |
timestamp in ms | Quando è stata registrata questa posizione |
type |
numeric, integer |
Tipologia della posizione:
1 → Posizione GPS semplice, ovvero coordinate geografiche senza specifici eventi avvenuti sul localizzatore;
2 → E' avvenuto un evento di collegamento alimentazione del localizzatore GPS
3 → E' avvenuto un evento di scollegamento alimentazione del localizzatore GPS
4 → E' avvenuto un evento di inizio di viaggio del localizzatore GPS
5 → E' avvenuto un evento di sosta del localizzatore GPS
6 → E' avvenuto un evento movimento del localizzatore GPS in seguito ad una ripartenza o anche solo per il movimento fisico del dispositivo
7 → E' avvenuto un evento fermo del localizzatore GPS in seguito ad una sosta o anche solo per il dispositivo non si muove fisicamente da un po' di tempo
8 → E' avvenuto un evento di on sull'input 1 del localizzatore GPS (solo per il modello FMB920)
9 → E' avvenuto un evento di off sull'input 1 del localizzatore GPS (solo per il modello FMB920)
10 → E' avvenuto un evento di on sull'output 1 del localizzatore GPS (solo per il modello FMB920)
11 → E' avvenuto un evento di off sull'output 1 del localizzatore GPS (solo per il modello FMB920)
|
odometer |
numeric, integer in metri | Presente solo se type == 5 , sono i metri percorsi durante l'ultimo trip |
Storico posizioni
Example request
curl --location --request GET 'https://api.balin.app/external_api/v1/positionsHistory/359633109558000?start=1637756247000&stop=1637842647000&skip=0&limit=1500&filter_type=1&filter_type=2' \
--header 'Authorization: Basic <your_btoa_token>'
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
var token = <email> + ":" + <api_token>
var hash = btoa(token);
xhr.open("GET", "https://api.balin.app/external_api/v1/positionsHistory/359633109558000?start=1637756247000&stop=1637842647000&skip=0&limit=1500&filter_type=1&filter_type=2");
xhr.setRequestHeader("Authorization", "Basic " + hash);
xhr.send();
var request = require('request');
var token = <email> + ":" + <api_token>
var hash = btoa(token);
var options = {
'method': 'GET',
'url': 'https://api.balin.app/external_api/v1/positionsHistory/359633109558000?start=1637756247000&stop=1637842647000&skip=0&limit=1500&filter_type=1&filter_type=2',
'headers': {
'Authorization': 'Basic ' + hash
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import http.client
import base64
hash = base64.b64encode(b'<email>:<api_token>>')
conn = http.client.HTTPSConnection("api.balin.app")
payload = ''
headers = {
'Authorization': 'Basic ' + hash
}
conn.request("GET", "/external_api/v1/positionsHistory/359633109558000?start=1637756247000&stop=1637842647000&skip=0&limit=1500&filter_type=1&filter_type=2", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Ritorna un oggetto di tipo Paginazione con una lista di Position,
registrate dal dispositivo, in un determinato
intervallo temporale ed eventualmente filtrate per tipologia (campo
type
di Position).
Request LIMITS
La richiesta di storico posizioni deve rispettare i seguenti limiti:
-
Non si possono richiedere posizioni più vecchie di 30 giorni → Il parametro
start
non deve essere un timestamp entro 30 giorni dal momento della richiesta. -
Il range temporale deve essere al massimo di 1 giorno → La differenza tra i parametri
start
estop
non deve essere più grande di 1 giorno.
HTTP Request
Questa richiesta necessita di autenticazione.
GET https://api.balin.app/external_api/v1/positionsHistory/:imei
Parametri
Parameter | Location | Description |
---|---|---|
imei string, required |
params | Codice imei del localizzatore GPS |
start timestamp in ms, required |
query url | Timestamp inizio intervallo richiesta storico |
stop timestamp in ms, required |
query url | Timestamp fine intervallo richiesta storico |
filter_type array di integer, optional |
query url | Lista di type di Position da filtrare, se non specificato non viene applicato alcun filtro sulla tipologia di posizioni |
limit numeric, integer, optional |
query url | Dettagli in Paginazione |
skip numeric, integer, optional |
query url | Dettagli in Paginazione |
HTTS Response
Example response
{
"limit": 1500,
"skip": 0,
"data": [
{
"lng": 14.771271,
"lat": 40.925031,
"heading": 28,
"altitude": 0,
"speed": 27,
"timestamp": 1637768035000,
"type": 1
},
{
"lng": 14.771307,
"lat": 40.925097,
"heading": 23,
"altitude": 0,
"speed": 27,
"timestamp": 1637768036000,
"type": 1
},
{
"lng": 14.771539,
"lat": 40.925631,
"heading": 34,
"altitude": 0,
"speed": 26,
"timestamp": 1637768044000,
"type": 2
},
{
"lng": 14.771426,
"lat": 40.926715,
"heading": 332,
"altitude": 0,
"speed": 41,
"timestamp": 1637768064000,
"type": 1
}
],
"has_more": true
}
Un oggetto JSON di come inficato paginazione con all'interno una lista di oggetti Position.
HTTP Errors
Oggetto di tipo Error:
Error code | type | Spiegazione |
---|---|---|
400 |
1 | Errore nei parametri della richiesta |
400 |
2 | La richiesta non rispetta i limiti temporali di storico delle posizioni del localizzatore |
400 |
3 | Nessun localizzatore trovato con questo imei |
400 |
4 | L'utente non dispone dei permessi di visualizzazione del localizzatore. |
401 |
20 | Solo per sotto-utenti. Il sotto utente non ha i permessi per la visualizzazione dello storico. Deve essere richiesta al proprietario. |
Storico viaggio
Example request
curl --location --request GET 'https://api.balin.app/external_api/v1/tripPositionsHistory/359633109558000?start=1637756247000&stop=1637842647000&skip=0&limit=1500' \
--header 'Authorization: Basic <your_btoa_token>'
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
var token = <email> + ":" + <api_token>
var hash = btoa(token);
xhr.open("GET", "https://api.balin.app/external_api/v1/tripPositionsHistory/359633109558000?start=1637756247000&stop=1637842647000&skip=0&limit=1500");
xhr.setRequestHeader("Authorization", "Basic " + hash);
xhr.send();
var request = require('request');
var token = <email> + ":" + <api_token>
var hash = btoa(token);
var options = {
'method': 'GET',
'url': 'https://api.balin.app/external_api/v1/tripPositionsHistory/359633109558000?start=1637756247000&stop=1637842647000&skip=0&limit=1500',
'headers': {
'Authorization': 'Basic ' + hash
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import http.client
import base64
hash = base64.b64encode(b'<email>:<api_token>>')
conn = http.client.HTTPSConnection("api.balin.app")
payload = ''
headers = {
'Authorization': 'Basic ' + hash
}
conn.request("GET", "/external_api/v1/tripPositionsHistory/359633109558000?start=1637756247000&stop=1637842647000&skip=0&limit=1500", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Ritorna un oggetto di tipo Paginazione con una lista di Position esclusivamente con
type == 4
e type == 5
registrate dal dispositivo
in un determinato intervallo temporale.
Ovvero otterremo una lista di posizioni che descrivono i vari e successivi eventi di cambio stato viaggio/sosta del dispositivo (veicolo).
In questo modo è quindi possibile avere tutte le tappe di un itinerario.
Request LIMITS
La richiesta di storico viaggio deve rispettare i seguenti limiti:
-
Non si possono richiedere posizioni più vecchie di 90 giorni → Il parametro
start
non deve essere un timestamp entro 90 giorni dal momento della richiesta. -
Il range temporale deve essere al massimo di 90 giorni → La differenza tra i parametri
start
estop
non deve essere più grande di 90 giorni.
HTTP Request
Questa richiesta necessita di autenticazione.
GET https://api.balin.app/external_api/v1/tripPositionsHistory/:imei
Parametri
Parameter | Location | Description |
---|---|---|
imei string, required |
params | Codice imei del localizzatore GPS |
start timestamp in ms, required |
query url | Timestamp inizio intervallo richiesta storico |
stop timestamp in ms, required |
query url | Timestamp fine intervallo richiesta storico |
limit numeric, integer, optional |
query url | Dettagli in Paginazione |
skip numeric, integer, optional |
query url | Dettagli in Paginazione |
HTTS Response
Example response
{
"limit": 1500,
"skip": 0,
"data": [
{
"lng": 14.77175,
"lat": 40.925917,
"heading": 9,
"altitude": 0,
"speed": 29,
"timestamp": 1637768049000,
"type": 4,
},
{
"lng": 14.771213,
"lat": 40.92701,
"heading": 330,
"altitude": 0,
"speed": 44,
"timestamp": 1637768067000,
"type": 5,
"odometer": 29084
},
{
"lng": 14.763393,
"lat": 40.92607,
"heading": 144,
"altitude": 0,
"speed": 34,
"timestamp": 1637768131000,
"type": 4,
},
{
"lng": 14.766297,
"lat": 40.919562,
"heading": 160,
"altitude": 0,
"speed": 34,
"timestamp": 1637768212000,
"type": 4,
"odometer": 23085
}
],
"has_more": true
}
Un oggetto JSON di come inficato paginazione con all'interno una lista di oggetti Position.
HTTP Errors
Oggetto di tipo Error:
Error code | type | Spiegazione |
---|---|---|
400 |
1 | Errore nei parametri della richiesta |
400 |
2 | La richiesta non rispetta i limiti temporali di storico delle posizioni del localizzatore |
400 |
3 | Nessun localizzatore trovato con questo imei |
400 |
4 | L'utente non dispone dei permessi di visualizzazione del localizzatore. |
401 |
20 | Solo per sotto-utenti. Il sotto utente non ha i permessi per la visualizzazione del report. Deve essere richiesta al proprietario. |