h1. Web RESTful API Reference h2. [[Web RESTful API Reference#Login|Login]] [[Web RESTful API Reference#Logout|Logout]] [[Web RESTful API Reference#Post-track|Post track]] [[Web RESTful API Reference#Create-new-track|Create new track]] [[Web RESTful API Reference#Get-list-of-existing-tracks|Get list of existing tracks]] [[Web RESTful API Reference#Continue-existing-track|Continue existing track]] [[Web RESTful API Reference#Get-track-info|Get track info]] [[Web RESTful API Reference#Get-track-settings|Get track settings]] [[Web RESTful API Reference#Update-track-settings|Update track settings]] h2. Briefly [[Web RESTful API Reference#Login|Login]] to post GPS data to Wannatrak server. You'll receive the @DEVICE_KEY@ on successful login. You'll use this @DEVICE_KEY@ for further interactions with server as your unique identifier. If you login for the first time and you don't have previous tracks on the server there will be created a new one with your login name. If you already have tracks then you will be linked to the last used track. Your GPS data will be attached to it. To find out a name of your current track call [[Web RESTful API Reference#Get-track-info|Get track info]]. To see your existing tracks use [[Web RESTful API Reference#Get-list-of-existing-tracks|Get list of existing tracks]]. If you want to post data to a new track, first of all, [[Web RESTful API Reference#Create-new-track|Create new track]]. To switch to one of existing tracks use [[Web RESTful API Reference#Continue-existing-track|Continue existing track]]. h2. Login h3. Correct case Request:
POST /device/api/login HTTP/1.1
Content-Type: text/json
{"login":"LOGIN","password":"PASSWORD"}
Response:
HTTP/1.1 200 OK Content-Type: */* %DEVICE_KEY%h3. Incorrect case Request:
POST /device/api/login HTTP/1.1
Content-Type: text/json
{"login":"WRONG LOGIN","password":"WRONG PASSWORD"}
Response:
HTTP/1.1 403 Forbidden[[Web RESTful API Reference#Web-RESTful-API-Reference|top]] h2. Logout h3. Correct case Request:
POST /device/api/logout HTTP/1.1 Content-Type: text/json %DEVICE_KEY%Response:
HTTP/1.1 204 No Contenth3. Incorrect case Request:
POST /device/api/logout HTTP/1.1 Content-Type: text/json %WRONG_DEVICE_KEY%Response:
HTTP/1.1 400 Bad Request[[Web RESTful API Reference#Web-RESTful-API-Reference|top]] h2. Post track h3. Correct case Request:
POST /device/api/trak/%DEVICE_KEY% HTTP/1.1 Content-Type: text/json [[Timestamp,Longitude,Latitude,Speed,Course,Altitude],[Timestamp,Longitude,Latitude,Speed,Course,Altitude], ...]bq. @Timestamp@ - integer number of millis since 1/1/1970 bq. @Longitude@, @Latitude@ and @Course@ - float degrees bq. @Speed@ - float number of kilometers per hour bq. @Altitude@ - float number of meters above sea level Example on js:
var http = new XMLHttpRequest();
http.open("POST", "http://www.wannatrak.com/device/api/trak/%DEVICE_KEY%", true);
var params = '[[127000000,2.5,3.4,4,5,6],[127000001,2.4,3.5,4,5,6]]';
http.setRequestHeader("Content-type", "text/json");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
Response:
HTTP/1.1 204 No Contenth3. Incorrect case Response:
HTTP/1.1 400 Bad Requesth3. Warning! If you try to send track before @sendPeriod@ elapsed server will reject your track. Response:
HTTP/1.1 409 ConflictRead more about @sendPeriod@ [[Web RESTful API Reference#Update-track-settings|here]]. [[Web RESTful API Reference#Web-RESTful-API-Reference|top]] h2. Create new track h3. Correct case Request:
GET /device/api/trak/create/%DEVICE_KEY%/%TRACK_NAME% HTTP/1.1 Accept: text/jsonResponse:
HTTP/1.1 200 OK
Content-Type: text/json
{"savePeriod":5,"sendPeriod":5,"name":"Track name"}
Read more about track settings [[Web RESTful API Reference#Update-track-settings|here]].
h3. Incorrect case
Response:
HTTP/1.1 400 Bad Request[[Web RESTful API Reference#Web-RESTful-API-Reference|top]] h2. Get list of existing tracks h3. Correct case Request:
GET /device/api/trak/list/%DEVICE_KEY% HTTP/1.1 Accept: text/jsonResponse:
HTTP/1.1 200 OK
Content-Type: text/json
[{"id":"%TRACK_ID%","name":"Track name"}, {"id":"%TRACK_ID_2%","name":"Track name 2"}, ...]
h3. Incorrect case
Response:
HTTP/1.1 400 Bad Request[[Web RESTful API Reference#Web-RESTful-API-Reference|top]] h2. Continue existing track h3. Correct case Request:
GET /device/api/trak/continue/%DEVICE_KEY%/%TRACK_ID% HTTP/1.1 Accept: text/jsonResponse:
HTTP/1.1 200 OK
Content-Type: text/json
{"savePeriod":5,"sendPeriod":5,"name":"Track name"}
Read more about track settings [[Web RESTful API Reference#Update-track-settings|here]].
h3. Incorrect case
Response:
HTTP/1.1 400 Bad Request[[Web RESTful API Reference#Web-RESTful-API-Reference|top]] h2. Get track info h3. Correct case Request:
GET /device/api/trak/get/%DEVICE_KEY% HTTP/1.1 Accept: text/jsonResponse:
HTTP/1.1 200 OK
Content-Type: text/json
{"id":"%TRACK_ID%","name":"Track name"}
h3. Incorrect case
Response:
HTTP/1.1 400 Bad Request[[Web RESTful API Reference#Web-RESTful-API-Reference|top]] h2. Get track settings h3. Correct case Request:
GET /device/api/trak/settings/%DEVICE_KEY% HTTP/1.1 Accept: text/jsonResponse:
HTTP/1.1 200 OK
Content-Type: text/json
{"savePeriod":5,"sendPeriod":5,"name":"Track name"}
bq. @savePeriod@ - seconds between points in track
bq. @sendPeriod@ - minutes between sending part of track to server
*Warning! If you try to send track before @sendPeriod@ elapsed server will reject your track.*
h3. Incorrect case
Response:
HTTP/1.1 400 Bad Request[[Web RESTful API Reference#Web-RESTful-API-Reference|top]] h2. Update track settings h3. Correct case Request:
POST /device/api/trak/settings/%DEVICE_KEY% HTTP/1.1
Content-Type: text/json
{"savePeriod":1,"sendPeriod":2,"name":"New track"}
bq. @savePeriod@ - seconds between points in track
bq. @sendPeriod@ - minutes between sending part of track to server
*Warning! If you try to send track before @sendPeriod@ elapsed server will reject your track.*
Response:
HTTP/1.1 204 No Contenth3. Incorrect case Response:
HTTP/1.1 400 Bad Requesth3. Track with such name already exists case Response:
HTTP/1.1 409 Conflict[[Web RESTful API Reference#Web-RESTful-API-Reference|top]]