Twitter
Google plus
Facebook
Vimeo
Pinterest

Data Trak

01767 642 407

Sales – Mon – Fri: 09:00 am – 05:00 pm

Follow

Tracking API

Home  /  Tracking API

Starting from version 3.0 Data Trak Tracking server includes web API to access GPS tracking data from your own applications. Version 3.3 and all later versions are using REST API. Documentation for the API can be found in the swagger.json file and API Reference. There are a lot of tools available to automatically generate client from Swagger format. For more information about Swagger see official website – http://swagger.io/.

There are two authorization options:

View API documentation:

Access token

As an alternative to email and password login, there is an option to use account token for authorization. Token can be set in the corresponding field of the user model. Token can only be used to create a session. It can not be used for basic authorization option.

To create a token use “token” query parameter in session get request:

/api/session?token=USER_TOKEN

WebSocket API

In addition to Data Trak REST API, we provide access to a WebSocket endpoint for live location updates and events. URL for the connection:

/api/socket

Session cookie is the only authorization option for WebSocket connection.

Each message in WebSocket communication uses same universal JSON format:

{
  "devices": [...],
  "positions: [...],
  "events": [...]
}

Each array contains corresponding standard models:

If message does not contain objects of one of the types, the key would not be included in the JSON structure. Most of the time messages contain a single type of objects.


 

Tracking

Base URL: /api, Version: 4.2

Default request content-types: application/json
Default response content-types: application/json
Schemes: http

Summary

Path Operation Description
/attributes/computed GET Fetch a list of Attributes
POST Create an Attribute
/attributes/computed/{id} DELETE Delete an Attribute
PUT Update an Attribute
/calendars GET Fetch a list of Calendars
POST Create a Calendar
/calendars/{id} DELETE Delete a Calendar
PUT Update a Calendar
/commands GET Fetch a list of Saved Commands
POST Create a Saved Command
/commands/send GET Fetch a list of Saved Commands supported by Device at the moment
POST Dispatch commands to device
/commands/types GET Fetch a list of available Commands for the Device or all possible Commands if Device ommited
/commands/{id} DELETE Delete a Saved Command
PUT Update a Saved Command
/devices GET Fetch a list of Devices
POST Create a Device
/devices/{id} DELETE Delete a Device
PUT Update a Device
/devices/{id}/accumulators PUT Update total distance and hours of the Device
/drivers GET Fetch a list of Drivers
POST Create a Driver
/drivers/{id} DELETE Delete a Driver
PUT Update a Driver
/events/{id} GET
/geofences GET Fetch a list of Geofences
POST Create a Geofence
/geofences/{id} DELETE Delete a Geofence
PUT Update a Geofence
/groups GET Fetch a list of Groups
POST Create a Group
/groups/{id} DELETE Delete a Group
PUT Update a Group
/maintenance GET Fetch a list of Maintenance
POST Create a Maintenance
/maintenance/{id} DELETE Delete a Maintenance
PUT Update a Maintenance
/notifications GET Fetch a list of Notifications
POST Create a Notification
/notifications/test POST Send test notification to current user via Email and SMS
/notifications/types GET Fetch a list of available Notification types
/notifications/{id} DELETE Delete a Notification
PUT Update a Notification
/permissions DELETE Unlink an Object from another Object
POST Link an Object to another Object
/positions GET Fetches a list of Positions
/reports/events GET Fetch a list of Events within the time period for the Devices or Groups
/reports/route GET Fetch a list of Positions within the time period for the Devices or Groups
/reports/stops GET Fetch a list of ReportStops within the time period for the Devices or Groups
/reports/summary GET Fetch a list of ReportSummary within the time period for the Devices or Groups
/reports/trips GET Fetch a list of ReportTrips within the time period for the Devices or Groups
/server GET Fetch Server information
PUT Update Server information
/session DELETE Close the Session
GET Fetch Session information
POST Create a new Session
/statistics GET Fetch server Statistics
/users GET Fetch a list of Users
POST Create a User
/users/{id} DELETE Delete a User
PUT Update a User

Security

basicAuth

Type: basic

Description:

Basic HTTP authorization with email and password

Paths

Fetch a list of Attributes

GET /attributes/computed

Without params, it returns a list of Attributes the user has access to
all Can only be used by admins or managers to fetch all entities query boolean  #/parameters/all
userId Standard users can use this only with their own userId query integer  #/parameters/userId
deviceId Standard users can use this only with _deviceId_s, they have access to query integer  #/parameters/deviceId
groupId Standard users can use this only with _groupId_s, they have access to query integer  #/parameters/groupId
refresh query boolean  #/parameters/refresh
Uses default content-types: application/json

200 OK

OK

Create an Attribute

POST /attributes/computed

body body object   #/parameters/Attribute
Uses default content-types: application/json

200 OK

OK

Delete an Attribute

DELETE /attributes/computed/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update an Attribute

PUT /attributes/computed/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/Attribute
Uses default content-types: application/json

200 OK

OK

Fetch a list of Calendars

GET /calendars

Without params, it returns a list of Calendars the user has access to
all Can only be used by admins or managers to fetch all entities query boolean  #/parameters/all
userId Standard users can use this only with their own userId query integer  #/parameters/userId
Uses default content-types: application/json

200 OK

OK

Create a Calendar

POST /calendars

body body object   #/parameters/Calendar
Uses default content-types: application/json

200 OK

OK

Delete a Calendar

DELETE /calendars/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update a Calendar

PUT /calendars/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/Calendar
Uses default content-types: application/json

200 OK

OK

Fetch a list of Saved Commands

GET /commands

Without params, it returns a list of Drivers the user has access to
all Can only be used by admins or managers to fetch all entities query boolean  #/parameters/all
userId Standard users can use this only with their own userId query integer  #/parameters/userId
deviceId Standard users can use this only with _deviceId_s, they have access to query integer  #/parameters/deviceId
groupId Standard users can use this only with _groupId_s, they have access to query integer  #/parameters/groupId
refresh query boolean  #/parameters/refresh
Uses default content-types: application/json

200 OK

OK

Create a Saved Command

POST /commands

body body object   #/parameters/Command
Uses default content-types: application/json

200 OK

OK

Fetch a list of Saved Commands supported by Device at the moment

GET /commands/send

Return a list of saved commands linked to Device and its groups, filtered by current Device protocol support
deviceId Standard users can use this only with _deviceId_s, they have access to query integer  #/parameters/deviceId
Uses default content-types: application/json

200 OK

OK

400 Bad Request

Could happen when the user doesn’t have permission for the device

Dispatch commands to device

POST /commands/send

Dispatch a new command or Saved Command if body.id set
Uses default content-types: application/json

Uses default content-types: application/json

200 OK

Command sent

202 Accepted

Command queued

400 Bad Request

Could happen when the user doesn’t have permission or an incorrect command type for the device

Fetch a list of available Commands for the Device or all possible Commands if Device ommited

GET /commands/types

deviceId query integer
textChannel query boolean
Uses default content-types: application/json

200 OK

OK

400 Bad Request

Could happen when trying to fetch from a device the user does not have permission

Delete a Saved Command

DELETE /commands/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update a Saved Command

PUT /commands/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/Command
Uses default content-types: application/json

200 OK

OK

Fetch a list of Devices

GET /devices

Without any params, returns a list of the user’s devices
all Can only be used by admins or managers to fetch all entities query boolean  #/parameters/all
userId Standard users can use this only with their own userId query integer  #/parameters/userId
id To fetch one or more devices. Multiple params can be passed like id=31&id=42 query integer , multiple parameters (id=aaa&id=bbb)
uniqueId To fetch one or more devices. Multiple params can be passed like uniqueId=333331&uniqieId=44442 query string , multiple parameters (uniqueId=aaa&uniqueId=bbb)
Uses default content-types: application/json

200 OK

OK

400 Bad Request

No permission

Create a Device

POST /devices

body body object   #/parameters/Device
Uses default content-types: application/json

200 OK

OK

Delete a Device

DELETE /devices/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update a Device

PUT /devices/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/Device
Uses default content-types: application/json

200 OK

OK

Update total distance and hours of the Device

PUT /devices/{id}/accumulators

Uses default content-types: application/json

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Fetch a list of Drivers

GET /drivers

Without params, it returns a list of Drivers the user has access to
all Can only be used by admins or managers to fetch all entities query boolean  #/parameters/all
userId Standard users can use this only with their own userId query integer  #/parameters/userId
deviceId Standard users can use this only with _deviceId_s, they have access to query integer  #/parameters/deviceId
groupId Standard users can use this only with _groupId_s, they have access to query integer  #/parameters/groupId
refresh query boolean  #/parameters/refresh
Uses default content-types: application/json

200 OK

OK

Create a Driver

POST /drivers

body body object   #/parameters/Driver
Uses default content-types: application/json

200 OK

OK

Delete a Driver

DELETE /drivers/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update a Driver

PUT /drivers/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/Driver
Uses default content-types: application/json

200 OK

OK

GET /events/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

200 OK

OK

Fetch a list of Geofences

GET /geofences

Without params, it returns a list of Geofences the user has access to
all Can only be used by admins or managers to fetch all entities query boolean  #/parameters/all
userId Standard users can use this only with their own userId query integer  #/parameters/userId
deviceId Standard users can use this only with _deviceId_s, they have access to query integer  #/parameters/deviceId
groupId Standard users can use this only with _groupId_s, they have access to query integer  #/parameters/groupId
refresh query boolean  #/parameters/refresh
Uses default content-types: application/json

200 OK

OK

Create a Geofence

POST /geofences

body body object   #/parameters/Geofence
Uses default content-types: application/json

200 OK

OK

Delete a Geofence

DELETE /geofences/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update a Geofence

PUT /geofences/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/Geofence
Uses default content-types: application/json

200 OK

OK

Fetch a list of Groups

GET /groups

Without any params, returns a list of the Groups the user belongs to
all Can only be used by admins or managers to fetch all entities query boolean  #/parameters/all
userId Standard users can use this only with their own userId query integer  #/parameters/userId
Uses default content-types: application/json

200 OK

OK

Create a Group

POST /groups

body body object   #/parameters/Group
Uses default content-types: application/json

200 OK

OK

400 Bad Request

No permission

Delete a Group

DELETE /groups/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update a Group

PUT /groups/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/Group
Uses default content-types: application/json

200 OK

OK

Fetch a list of Maintenance

GET /maintenance

Without params, it returns a list of Maintenance the user has access to
all Can only be used by admins or managers to fetch all entities query boolean  #/parameters/all
userId Standard users can use this only with their own userId query integer  #/parameters/userId
deviceId Standard users can use this only with _deviceId_s, they have access to query integer  #/parameters/deviceId
groupId Standard users can use this only with _groupId_s, they have access to query integer  #/parameters/groupId
refresh query boolean  #/parameters/refresh
Uses default content-types: application/json

200 OK

OK

Create a Maintenance

POST /maintenance

body body object   #/parameters/Maintenance
Uses default content-types: application/json

200 OK

OK

Delete a Maintenance

DELETE /maintenance/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update a Maintenance

PUT /maintenance/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/Maintenance
Uses default content-types: application/json

200 OK

OK

Fetch a list of Notifications

GET /notifications

Without params, it returns a list of Notifications the user has access to
all Can only be used by admins or managers to fetch all entities query boolean  #/parameters/all
userId Standard users can use this only with their own userId query integer  #/parameters/userId
deviceId Standard users can use this only with _deviceId_s, they have access to query integer  #/parameters/deviceId
groupId Standard users can use this only with _groupId_s, they have access to query integer  #/parameters/groupId
refresh query boolean  #/parameters/refresh
Uses default content-types: application/json

200 OK

OK

Create a Notification

POST /notifications

body body object   #/parameters/Notification
Uses default content-types: application/json

200 OK

OK

Send test notification to current user via Email and SMS

POST /notifications/test

Uses default content-types: application/json

204 No Content

Successful sending

400 Bad Request

Could happen if sending has failed

Fetch a list of available Notification types

GET /notifications/types

Delete a Notification

DELETE /notifications/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update a Notification

PUT /notifications/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/Notification
Uses default content-types: application/json

200 OK

OK

Unlink an Object from another Object

DELETE /permissions

body body object   #/parameters/Permission
Uses default content-types: application/json

204 No Content

No Content

Link an Object to another Object

POST /permissions

body body object   #/parameters/Permission
Uses default content-types: application/json

200 OK

OK

400 Bad Request

No permission

Fetches a list of Positions

GET /positions

Without any params, it returns a list of last known positions for all the user’s Devices. from and _to_ fields are not required with _id_
application/json text/csv application/gpx+xml
deviceId deviceId is optional, but requires the from and _to_ parameters when used query integer
from in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)
to in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)
id To fetch one or more positions. Multiple params can be passed like id=31&id=42 query integer , multiple parameters (id=aaa&id=bbb)
application/json text/csv application/gpx+xml

200 OK

OK

Fetch a list of Events within the time period for the Devices or Groups

GET /reports/events

At least one deviceId or one groupId must be passed
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
deviceId query integer[] , multiple parameters (deviceId=aaa&deviceId=bbb)  #/parameters/deviceIdArray
groupId query integer[] , multiple parameters (groupId=aaa&groupId=bbb)  #/parameters/groupIdArray
type % can be used to return events of all types query string[]
from in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/fromTime
to in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/toTime
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

200 OK

OK

Fetch a list of Positions within the time period for the Devices or Groups

GET /reports/route

At least one deviceId or one groupId must be passed
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
deviceId query integer[] , multiple parameters (deviceId=aaa&deviceId=bbb)  #/parameters/deviceIdArray
groupId query integer[] , multiple parameters (groupId=aaa&groupId=bbb)  #/parameters/groupIdArray
from in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/fromTime
to in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/toTime
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

200 OK

OK

Fetch a list of ReportStops within the time period for the Devices or Groups

GET /reports/stops

At least one deviceId or one groupId must be passed
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
deviceId query integer[] , multiple parameters (deviceId=aaa&deviceId=bbb)  #/parameters/deviceIdArray
groupId query integer[] , multiple parameters (groupId=aaa&groupId=bbb)  #/parameters/groupIdArray
from in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/fromTime
to in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/toTime
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

200 OK

OK

Fetch a list of ReportSummary within the time period for the Devices or Groups

GET /reports/summary

At least one deviceId or one groupId must be passed
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
deviceId query integer[] , multiple parameters (deviceId=aaa&deviceId=bbb)  #/parameters/deviceIdArray
groupId query integer[] , multiple parameters (groupId=aaa&groupId=bbb)  #/parameters/groupIdArray
from in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/fromTime
to in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/toTime
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

200 OK

OK

Fetch a list of ReportTrips within the time period for the Devices or Groups

GET /reports/trips

At least one deviceId or one groupId must be passed
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
deviceId query integer[] , multiple parameters (deviceId=aaa&deviceId=bbb)  #/parameters/deviceIdArray
groupId query integer[] , multiple parameters (groupId=aaa&groupId=bbb)  #/parameters/groupIdArray
from in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/fromTime
to in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/toTime
application/json application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

200 OK

OK

Fetch Server information

GET /server

Uses default content-types: application/json

200 OK

OK

Update Server information

PUT /server

Uses default content-types: application/json

Uses default content-types: application/json

200 OK

OK

Close the Session

DELETE /session

application/x-www-form-urlencoded
Uses default content-types: application/json

204 No Content

No Content

Fetch Session information

GET /session

application/x-www-form-urlencoded
token query string
Uses default content-types: application/json

200 OK

OK

404 Not Found

Not Found

Create a new Session

POST /session

application/x-www-form-urlencoded
email formData string
password formData string (password)
Uses default content-types: application/json

200 OK

OK

401 Unauthorized

Unauthorized

Fetch server Statistics

GET /statistics

from in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/fromTime
to in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)   #/parameters/toTime
Uses default content-types: application/json

200 OK

OK

Fetch a list of Users

GET /users

userId Can only be used by admin or manager users query string
Uses default content-types: application/json

200 OK

OK

400 Bad Request

No Permission

Create a User

POST /users

body body object   #/parameters/User
Uses default content-types: application/json

200 OK

OK

Delete a User

DELETE /users/{id}

id path integer   #/parameters/entityId
Uses default content-types: application/json

204 No Content

No Content

Update a User

PUT /users/{id}

id path integer   #/parameters/entityId
body body object   #/parameters/User
Uses default content-types: application/json

200 OK

OK

Parameter definitions

entityId id path integer
all all Can only be used by admins or managers to fetch all entities query boolean
refresh refresh query boolean
userId userId Standard users can use this only with their own userId query integer
deviceId deviceId Standard users can use this only with _deviceId_s, they have access to query integer
groupId groupId Standard users can use this only with _groupId_s, they have access to query integer
Device body body object
Permission body body object
Group body body object
User body body object
Geofence body body object
Calendar body body object
Attribute body body object
Driver body body object
Command body body object
Notification body body object
Maintenance body body object
deviceIdArray deviceId query integer[] , multiple parameters (deviceId=aaa&deviceId=bbb)
groupIdArray groupId query integer[] , multiple parameters (groupId=aaa&groupId=bbb)
fromTime from in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)
toTime to in IS0 8601 format. eg. 1963-11-22T18:30:00Z query string (date-time)

Schema definitions

Attribute: object

id: integer
description: string
attribute: string
expression: string
type: string
String|Number|Boolean

Calendar: object

id: integer
name: string
data: string
base64 encoded in iCalendar format

atributes: object

Command: object

id: integer
deviceId: integer
description: string
type: string
attributes: object

CommandType: object

type: string

Device: object

id: integer
name: string
uniqueId: string
status: string
disabled: boolean
lastUpdate: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

positionId: integer
groupId: integer
phone: string
model: string
contact: string
category: string
geofenceIds: integer[]
integer

attributes: object

DeviceAccumulators: object

deviceId: integer
totalDistance: number
in meters

hours: number

Driver: object

id: integer
name: string
uniqueId: string
atributes: object

Event: object

id: integer
type: string
serverTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

deviceId: integer
positionId: integer
geofenceId: integer
maintenanceId: integer
attributes: object

Geofence: object

id: integer
name: string
description: string
area: string
calendarId: integer
attributes: object

Group: object

id: integer
name: string
groupId: integer
attributes: object

Maintenance: object

id: integer
name: string
type: string
start: number
period: number
atributes: object

Notification: object

id: integer
type: string
always: boolean
web: boolean
mail: boolean
sms: boolean
calendarId: integer
attributes: object

NotificationType: object

type: string

Permission: object

This is a permission map that contain two object indexes. It is used to link/unlink objects. Order is important. Example: { deviceId:8, geofenceId: 16 }
userId: integer
User Id, can be only first parameter

deviceId: integer
Device Id, can be first parameter or second only in combination with userId

groupId: integer
Group Id, can be first parameter or second only in combination with userId

geofenceId: integer
Geofence Id, can be second parameter only

calendarId: integer
Geofence Id, can be second parameter only and only in combination with userId

attributeId: integer
Computed Attribute Id, can be second parameter only

driverId: integer
Driver Id, can be second parameter only

managedUserId: integer
User Id, can be second parameter only and only in combination with userId

Position: object

id: integer
deviceId: integer
protocol: string
deviceTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

fixTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

serverTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

outdated: boolean
valid: boolean
latitude: number
longitude: number
altitude: number
speed: number
in knots

course: number
address: string
accuracy: number
network: string
attributes: object

ReportStops: object

deviceId: integer
deviceName: string
duration: integer
startTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

address: string
lat: number
lon: number
endTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

spentFuel: number
in liters

engineHours: integer

ReportSummary: object

deviceId: integer
deviceName: string
maxSpeed: number
in knots

averageSpeed: number
in knots

distance: number
in meters

spentFuel: number
in liters

engineHours: integer

ReportTrips: object

deviceId: integer
deviceName: string
maxSpeed: number
in knots

averageSpeed: number
in knots

distance: number
in meters

spentFuel: number
in liters

duration: integer
startTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

startAddress: string
startLat: number
startLon: number
endTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

endAddress: string
endLat: number
endLon: number
driverUniqueId: integer
driverName: string

Server: object

id: integer
registration: boolean
readonly: boolean
deviceReadonly: boolean
limitCommands: boolean
map: string
bingKey: string
mapUrl: string
poiLayer: string
latitude: number
longitude: number
zoom: integer
twelveHourFormat: boolean
version: string
forceSettings: boolean
coordinateFormat: string
attributes: object

Statistics: object

captureTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

activeUsers: integer
activeDevices: integer
requests: integer
messagesReceived: integer
messagesStored: integer

User: object

id: integer
name: string
email: string
readonly: boolean
administrator: boolean
map: string
latitude: number
longitude: number
zoom: integer
password: string
twelveHourFormat: boolean
coordinateFormat: string
disabled: boolean
expirationTime: string (date-time)
in IS0 8601 format. eg. 1963-11-22T18:30:00Z

deviceLimit: integer
userLimit: integer
deviceReadonly: boolean
limitCommands: boolean
poiLayer: string
token: string
attributes: object