Sensium Connect API Documentation

Welcome to the Sensium Connect API Documentation.

See the "Getting Started" section below to begin.

Contact

Sensium Support

support@sensiumlabs.com

License

Proprietary

https://www.sensiumlabs.com

API Endpoints
https://connect.sensium.nz/graphql
Headers
# Your session id returned from the call to `/login`
Authorization: Bearer <SESSION_ID>
Version

1.0.0

Getting Started

To access the API you need to have a "Personal Access Token" (PAT). You can create a PAT by logging into the Sensium Connect UI and navigating to the Settings page of your logged in user.

From the Settings page you can create a PAT. Each PAT can be given a name. We strongly recommend that you do not share PATs between API clients. This way if you ever need to revoke a PAT you can do so easily from the Settings page.

Authentication

login

Your API client should first login by issuing a POST request to the /login endpoint.

e.g.

$ curl -X POST -H"Content-Type: application/json" -d'{"token": "<TOKEN>"}' https://connect.sensium.nz/login
{
   "sid": "abcdef-123456-789012"
}

This request should be a JSON object and include the following parameters:

  • token - the personal access token

The response to this request will be a JSON object containing EITHER:

  • error - if the provided credentials were not accepted
  • sid - the session ID if login was successful

making requests

The returned session id should be provided in all requests to /graphql via an authorization header:

$ curl -X POST -H"Authorization: Bearer abcdef-123456-789012" -dquery='{ me { name } }' https://connect.sensium.nz/graphql
{"data": {"me": {"name": "API User"}}}

logout

A session will persist for up to 30 minutes when not being used. Using the session (by making requests) will extend the session timer. The session can be terminated before timing out by making a POST request to /logout.

$ curl -X POST -H"Authorization: Bearer abcdef-123456-789012" https://connect.sensium.nz/logout

Top Level Query Items

The primary top level query items are:

me

This represents the user that owns the PAT you have logged in with. You can navigate the object tree from here to see the "user" view of the system.

account

This represents the account that the logged in user is a member of. You can navigate the object tree from here to see the "account" view of the system (assuming the logged in user has sufficient permissions on the account).

There are also top level queries for specific objects:

  • unit - Access a unit directly by id
  • driver - Access a driver directly
  • user - Access another user (requires "admin" privelege on the account)
  • alert - Access an alert directly
  • unitgroup - Access a group directly

There are a couple of additional top level query items:

  • brand - Information on the specific brand that this account belongs to (e.g. Sensium Connect NZ)
  • candisplayadvice - Provides information on how to output templated CAN data in a human readable form

CAN data

Automotive CAN data is captured by units using templates designed for specific vehicles (or groups of vehicles). Each template captures potentially different data.

The can data ends up as a simple JSON object where each key refers to a single item of data about the vehicle, e.g. vin for the vehicle identification number.

The can data object includes a key _ whose value is an integer indicating the id of the can template used to collect the data. Information on what keys are collected by this can template and the best way to display them can be accessed via the candisplayadvice top level query.

{
    candisplayadvice(10) {
        keys {
            key label islist units precision
        }
    }
}

This will return "display advice" that lists all the keys that can be present in the data and how to display that data to a human.

CAN data is available on a units point field,

{
    unit(123) {
        point {
            can
        }
    }
}

This would retrieve the current can data for the given unit.

Queries

account

Description

Get the current account

Response

Returns an Account

Example

Query
query account {
  account {
    apikey
    id
    name
    plan
    status
    companywebsite
    workstart
    workend
    alertwebhook
    users {
      ...UserFragment
    }
    units {
      ...UnitFragment
    }
    alerts {
      ...AlertFragment
    }
    features
    places {
      ...PlaceFragment
    }
    billingportal
    billing {
      ...BillingFragment
    }
    unitgroups {
      ...UnitGroupFragment
    }
    drivers {
      ...DriverFragment
    }
    primarycontact {
      ...ContactDetailsFragment
    }
    accountscontact {
      ...ContactDetailsFragment
    }
    deliveryaddress {
      ...AddressFragment
    }
    postaladdress {
      ...AddressFragment
    }
    fleetwise {
      ...FleetwiseSettingsFragment
    }
  }
}
Response
{
  "data": {
    "account": {
      "apikey": "1234567890",
      "id": 4,
      "name": "ABC Company",
      "plan": "ESSENTIALS",
      "status": "CURRENT",
      "companywebsite": "https://www.abccompany.org",
      "workstart": "08:00:00",
      "workend": "17:00:00",
      "alertwebhook": "https://backend.abccompany.org/webhook",
      "users": [User],
      "units": [Unit],
      "alerts": [Alert],
      "features": ["abc123"],
      "places": [Place],
      "billingportal": "https://billing.sensium.nz/portal?account=abccompany",
      "billing": Billing,
      "unitgroups": [UnitGroup],
      "drivers": [Driver],
      "primarycontact": ContactDetails,
      "accountscontact": ContactDetails,
      "deliveryaddress": Address,
      "postaladdress": Address,
      "fleetwise": FleetwiseSettings
    }
  }
}

alert

Description

Get an alert by ID

Response

Returns an Alert

Arguments
Name Description
id - ID

Example

Query
query alert($id: ID) {
  alert(id: $id) {
    id
    type
    tag
    placeid
    visibility
    place {
      ...PlaceFragment
    }
    parameters {
      ...AlertParametersFragment
    }
    subscribed {
      ...UserFragment
    }
    emailto
    description
    units {
      ...UnitFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "alert": {
      "id": "4",
      "type": "place",
      "tag": "",
      "placeid": 987,
      "visibility": 0,
      "place": Place,
      "parameters": AlertParameters,
      "subscribed": [User],
      "emailto": ["external_user@email.com"],
      "description": "Alert on enter/exit to place",
      "units": [Unit]
    }
  }
}

brand

Description

Get branding information for the vendor of the current account

Response

Returns a Brand

Example

Query
query brand {
  brand {
    name
    weblogourl
    weblogoalt
    logouturl
    faviconurl
    intercomappid
  }
}
Response
{
  "data": {
    "brand": {
      "name": "Monthly Service Fees",
      "weblogourl": "https://s3-ap-southeast-2.amazonaws.com/assets.gpsengine.net/sensium/sensium_connect_reversed.png",
      "weblogoalt": "Sensium Connect",
      "logouturl": null,
      "faviconurl": "https://s3-ap-southeast-2.amazonaws.com/assets.gpsengine.net/sensium/favicon.ico",
      "intercomappid": null
    }
  }
}

candisplayadvice

Description

Get display advice for a can template

Response

Returns a CanDisplayAdvice

Arguments
Name Description
templateid - ID

Example

Query
query candisplayadvice($templateid: ID) {
  candisplayadvice(templateid: $templateid) {
    dashboard
    keys {
      ...CanKeyDisplayAdviceFragment
    }
  }
}
Variables
{"templateid": 4}
Response
{
  "data": {
    "candisplayadvice": {
      "dashboard": null,
      "keys": [CanKeyDisplayAdvice]
    }
  }
}

driver

Description

Get a driver by ID

Response

Returns a Driver

Arguments
Name Description
id - ID

Example

Query
query driver($id: ID) {
  driver(id: $id) {
    id
    name
    fobid
    recenturl
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "driver": {
      "id": 4,
      "name": "Mary Smith",
      "fobid": "1234567890ABC",
      "recenturl": "https://armadaplatform.appspot.com/driver/getassignment?driver=321&crypt=aabbccddff0011"
    }
  }
}

me

Description

Get the current user

Response

Returns a User

Example

Query
query me {
  me {
    lastlogin
    id
    name
    email
    failedattempts
    lockouttime
    emailsent
    units {
      ...UnitFragment
    }
    scheduledreports {
      ...ScheduledReportFragment
    }
    notices {
      ...NoticeFragment
    }
    features
    subscribed {
      ...AlertFragment
    }
    scheduledreport {
      ...ScheduledReportFragment
    }
    accesstokens {
      ...PersonalAccessTokenFragment
    }
  }
}
Response
{
  "data": {
    "me": {
      "lastlogin": "2007-12-03T10:15:30Z",
      "id": 4,
      "name": "Jim Smith",
      "email": "jim@email.com",
      "failedattempts": 0,
      "lockouttime": "2007-12-03T10:15:30Z",
      "emailsent": "2007-12-03T10:15:30Z",
      "units": [Unit],
      "scheduledreports": [ScheduledReport],
      "notices": [Notice],
      "features": ["xyz789"],
      "subscribed": [Alert],
      "scheduledreport": ScheduledReport,
      "accesstokens": [PersonalAccessToken]
    }
  }
}

unit

Description

Get a unit by ID

Response

Returns a Unit

Arguments
Name Description
id - ID

Example

Query
query unit($id: ID) {
  unit(id: $id) {
    id
    phone
    alertnotes
    odoupdate
    odoupdatetime
    huboupdate
    huboupdatetime
    name
    rego
    make
    model
    vin
    notes
    colour
    ptocolour
    vehiclecolour
    vehicletype
    boardtype
    allowdisable
    ruclicence
    ffid
    batteryrange {
      ...VoltageRangeFragment
    }
    point {
      ...PointFragment
    }
    fmi
    alerts {
      ...AlertFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "unit": {
      "id": "4",
      "phone": "+64123456789",
      "alertnotes": "Please contact jim",
      "odoupdate": 111000,
      "odoupdatetime": "2007-12-03T10:15:30Z",
      "huboupdate": 39000,
      "huboupdatetime": "2007-12-03T10:15:30Z",
      "name": "Bobs Unit",
      "rego": "ABC123",
      "make": "Honda",
      "model": "Civic",
      "vin": "FK124432F0",
      "notes": "Jims car",
      "colour": "Red",
      "ptocolour": "Yellow",
      "vehiclecolour": "White",
      "vehicletype": "Car",
      "boardtype": "tb2-21",
      "allowdisable": false,
      "ruclicence": null,
      "ffid": "BU123",
      "batteryrange": VoltageRange,
      "point": Point,
      "fmi": false,
      "alerts": [Alert]
    }
  }
}

unitgroup

Description

Get a unit group by ID

Response

Returns a UnitGroup

Arguments
Name Description
id - ID

Example

Query
query unitgroup($id: ID) {
  unitgroup(id: $id) {
    id
    name
    details
    units {
      ...UnitFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "unitgroup": {
      "id": "4",
      "name": "My Group",
      "details": "Sample group of units",
      "units": [Unit]
    }
  }
}

user

Description

Get a user by ID

Response

Returns a User

Arguments
Name Description
id - ID

Example

Query
query user($id: ID) {
  user(id: $id) {
    lastlogin
    id
    name
    email
    failedattempts
    lockouttime
    emailsent
    units {
      ...UnitFragment
    }
    scheduledreports {
      ...ScheduledReportFragment
    }
    notices {
      ...NoticeFragment
    }
    features
    subscribed {
      ...AlertFragment
    }
    scheduledreport {
      ...ScheduledReportFragment
    }
    accesstokens {
      ...PersonalAccessTokenFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "user": {
      "lastlogin": "2007-12-03T10:15:30Z",
      "id": "4",
      "name": "Jim Smith",
      "email": "jim@email.com",
      "failedattempts": 0,
      "lockouttime": "2007-12-03T10:15:30Z",
      "emailsent": "2007-12-03T10:15:30Z",
      "units": [Unit],
      "scheduledreports": [ScheduledReport],
      "notices": [Notice],
      "features": ["xyz789"],
      "subscribed": [Alert],
      "scheduledreport": ScheduledReport,
      "accesstokens": [PersonalAccessToken]
    }
  }
}

Types

Account

Description

A Sensium Connect customer account.

The "account view" of the system is mostly used for administering the account, the "user view" accessible from the me field is used for the day-to-day operations.

Fields
Field Name Description
apikey - String Account API Key
id - ID! Unique ID
name - String Account/Company name
plan - String Billing plan the account is subscribed to
status - String Billing status of account
companywebsite - String Customer's main website
workstart - String Work start time in format HH:MM:SS where hours are (0-23)
workend - String Work end time in format HH:MM:SS where hours are (0-23)
alertwebhook - String URL to send alerts to
users - [User] List of users on this account
units - [Unit] List of units on this account
alerts - [Alert] Alerts for this account
features - [String] List of features enabled for this account
places - [Place] Places that are associated with this account
billingportal - String Billing portal URL
billing - Billing Billing information for this account
unitgroups - [UnitGroup] List of unit groups that this account owns
drivers - [Driver] List of drivers on this account
primarycontact - ContactDetails Primary contact details for this account
accountscontact - ContactDetails Contact details for dealing with accounts
deliveryaddress - Address Delivery address for this account
postaladdress - Address Postal address for this account
fleetwise - FleetwiseSettings Fleetwise integration settings
Example
{
  "apikey": "1234567890",
  "id": "4",
  "name": "ABC Company",
  "plan": "ESSENTIALS",
  "status": "CURRENT",
  "companywebsite": "https://www.abccompany.org",
  "workstart": "08:00:00",
  "workend": "17:00:00",
  "alertwebhook": "https://backend.abccompany.org/webhook",
  "users": [User],
  "units": [Unit],
  "alerts": [Alert],
  "features": ["xyz789"],
  "places": [Place],
  "billingportal": "https://billing.sensium.nz/portal?account=abccompany",
  "billing": Billing,
  "unitgroups": [UnitGroup],
  "drivers": [Driver],
  "primarycontact": ContactDetails,
  "accountscontact": ContactDetails,
  "deliveryaddress": Address,
  "postaladdress": Address,
  "fleetwise": FleetwiseSettings
}

Address

Fields
Field Name Description
street - String Number and Street (or PO Box)
suburb - String Suburb
city - String City
Example
{"street": "1 First Street", "suburb": "Kamo", "city": "Whangarei"}

Alert

Fields
Field Name Description
id - ID!
type - String Type of alert ("speeding", "alarm", "panic", "accident", "reminder", "time", "distance", etc)
tag - String Tag for this alert, sometimes used to differentiate between unit types
placeid - Int Linked place identifier
visibility - Int Privacy setting for alert (0=public, 1=at least 1 unit, 2=private)
place - Place
parameters - AlertParameters Parameters for this alert
subscribed - [User] Users subscribed to this alert
emailto - [String] List of non-user email addresses to notify when this alert triggers
description - String Textual description of alert
units - [Unit] Units this alert is active on
Example
{
  "id": "4",
  "type": "place",
  "tag": "",
  "placeid": 123,
  "visibility": 0,
  "place": Place,
  "parameters": AlertParameters,
  "subscribed": [User],
  "emailto": ["external_user@email.com"],
  "description": "Alert on enter/exit to place",
  "units": [Unit]
}

AlertParameters

Fields
Field Name Description
remind - Int Duration after alert fires to remind user (s)
notify - Int Duration before alert fires to notify user (s)
due - Int Time that alert is due to fire (unix timestamp)
trigger - Float Value that alert will fire at
debounce - Int Duration after alert fires to prevent further alerts (s)
name - String User specified name of alert
setwarning - Boolean Set warning flag on unit when alert fires
exit - Boolean Alert on exit of linked place
enter - Boolean Alert on enter to linked place
cMin - Float Minimum temperature for alert (celcius)
cMax - Float Maximum temperature for alert (celcius)
arm - Int Time that unit must remain stopped before moving alert will trigger (s)
webhooks - [String] For integration with other systems. Customers should use account webhooks
Example
{
  "remind": 86400,
  "notify": 86400,
  "due": 1671129081,
  "trigger": null,
  "debounce": null,
  "name": "WOF Alert",
  "setwarning": false,
  "exit": null,
  "enter": null,
  "cMin": null,
  "cMax": null,
  "arm": null,
  "webhooks": [null]
}

Billing

Fields
Field Name Description
items - [BillingItem] Invoices, Payments, Credits, and Refunds
balance - Float Outstanding balance on account
Example
{"items": [BillingItem], "balance": 987.65}

BillingItem

Fields
Field Name Description
id - ID ID of billing item (unique only within type)
time - DateTime Time of billing item
description - String Description of billing item
amount - Float Amount of billing item
type - String Type of billing item ('Invoice', 'Payment', 'Refund', 'Credit')
Example
{
  "id": "4",
  "time": "2007-12-03T10:15:30Z",
  "description": "Monthly Service Fees",
  "amount": 10,
  "type": "Invoice"
}

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

Brand

Description

Branding information for vendor that this customer belongs to

Fields
Field Name Description
name - String Name of the product
weblogourl - String URL of the vendor's logo
weblogoalt - String Alt text for the vendor's logo
logouturl - String URL to redirect to when logging out
faviconurl - String URL of the vendor's favicon
intercomappid - String Intercom app ID
Example
{
  "name": "Monthly Service Fees",
  "weblogourl": "https://s3-ap-southeast-2.amazonaws.com/assets.gpsengine.net/sensium/sensium_connect_reversed.png",
  "weblogoalt": "Sensium Connect",
  "logouturl": null,
  "faviconurl": "https://s3-ap-southeast-2.amazonaws.com/assets.gpsengine.net/sensium/favicon.ico",
  "intercomappid": null
}

CanDisplayAdvice

Fields
Field Name Description
dashboard - String Dashboard to display for this can template Using another method to determine dashboard
keys - [CanKeyDisplayAdvice] List of keys and their display advice
Example
{"dashboard": null, "keys": [CanKeyDisplayAdvice]}

CanKeyDisplayAdvice

Fields
Field Name Description
key - String can value this display advice is for
label - String User facing label for this key
islist - Boolean Will this value be a list?
units - String Units of value, e.g. km/h or %
precision - Int Number of decimal places to format the value with (if it is a number)
Example
{
  "key": "vin",
  "label": "Vehicle Identification Number",
  "islist": false,
  "units": "",
  "precision": 0
}

ContactDetails

Fields
Field Name Description
name - String Name of contact
phone - String Phone number of contact
mobile - String Mobile number of contact
email - String Email address of contact
fax - String Fax number of contact
Example
{
  "name": "Joe Bloggs",
  "phone": "+649 330 1234",
  "mobile": "+6421 123 4567",
  "email": "user@email.com",
  "fax": "+649 123 4321"
}

DateTime

Description

The DateTime scalar type represents a DateTime value as specified by iso8601.

Example
"2007-12-03T10:15:30Z"

Driver

Fields
Field Name Description
id - ID! Unique ID
name - String First and last names
fobid - String Key FOB ID (hex digits)
recenturl - String GET this URL to retrieve recent driver assignments
Example
{
  "id": "4",
  "name": "Mary Smith",
  "fobid": "1234567890ABC",
  "recenturl": "https://armadaplatform.appspot.com/driver/getassignment?driver=321&crypt=aabbccddff0011"
}

FleetwiseSettings

Fields
Field Name Description
username - String Fleetwise integration username
password - String Fleetwise integration password
tenant - String Fleetwise integration tenant
Example
{"username": "user@email.com", "password": "**!aoeubcd", "tenant": "sensium"}

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
123.45

GenericScalar

Description

The GenericScalar scalar type represents a generic GraphQL scalar value that could be: String, Boolean, Int, Float, List or Object.

Example
GenericScalar

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
"4"

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31 - 1) and 2^31 - 1 since represented in JSON as double-precision floating point numbers specifiedby IEEE 754.

Example
987

Notice

Description

A banner shown to logged in users.

Fields
Field Name Description
id - ID!
message - String The message to display
entered - DateTime Time when this notice was created
Example
{
  "id": 4,
  "message": "Please contact Sensium Support",
  "entered": "2007-12-03T10:15:30Z"
}

OnBoardMassSensor

Fields
Field Name Description
serial - String serial number of OBM sensor
weights - [Float] weights measured by sensor
Example
{"serial": "xyz789", "weights": [123.45]}

PersonalAccessToken

Fields
Field Name Description
id - ID!
name - String Name of API client that this token is for
token - String The token to use for logging in
created - Int Time when this token was created (unix timestamp)
Example
{
  "id": 4,
  "name": "API Client",
  "token": "MTIzOjNkMDU1NzE3LTliZGUtNDQ4NC1iNzBiLTkxYWExYmQ0MGI0YQo=",
  "created": 1671130184
}

Place

Fields
Field Name Description
id - ID!
name - String Name of place
details - String Details about place
placetype - String Customer designed type of place ("customer", "base", "supplier", "general", "zone", "offroad")
addressoverride - Boolean If true use name of place in reports instead of address
offroad - Boolean Does this place correspond with off-road usage (used by road user charges report)
shape - Polygon Geometry of the place
Example
{
  "id": 4,
  "name": "Home Base",
  "details": "Our home base place",
  "placetype": "zone",
  "addressoverride": false,
  "offroad": true,
  "shape": Polygon
}

Point

Fields
Field Name Description
latitude - Float WGS84 degrees
longitude - Float WGS84 degrees
battery - Float Battery level in V
power - Float Input power to unit in V
speed - Int speed of point in km/h
altitude - Int meters above average sea level of captured point
temperature - Float Captured temperature in degrees celcius
pto - Boolean Is the vehicle's power take off active?
ignition - Boolean Is the vehicle's ignition on?
time - Int Seconds since Jan 1 1970 that this point was captured at (Unix Timestamp)
heading - Int Degrees from true north counter clockwise of travel at time of point capture
state - String Stopped or Moving
warnings - [String] Currently active warning tags (set by alerts, cleared by user)
odo - Float Odometer in kms
hubo - Float Hubometer in kms
ontime - Int Accumulated ignition on time in s
obd - String Onboard Diagnostics data (encoded). Will be replaced by can
j1939 - String J1939 CAN data (encoded). Will be replaced by can
driver - Int ID of assigned driver
obm - [OnBoardMassSensor] On Board Mass measurements
can - GenericScalar Templated CAN data (simple JSON object, 1 key per captured value)
Example
{
  "latitude": -36.851487,
  "longitude": 174.74182,
  "battery": 4,
  "power": 12.4,
  "speed": 23,
  "altitude": 108,
  "temperature": null,
  "pto": false,
  "ignition": true,
  "time": 1671130577,
  "heading": 42,
  "state": "Moving",
  "warnings": [],
  "odo": 109000,
  "hubo": 39221,
  "ontime": 6980,
  "obd": null,
  "j1939": null,
  "driver": 123,
  "obm": [OnBoardMassSensor],
  "can": {"_": 9, "vin": "1FTSW21R8YEC12345", "rpm": 1234}
}

Polygon

Fields
Field Name Description
type - String Geometry type (Polygon, LineString, Point)
coordinates - [Float] Polygon rings
Example
{
  "type": "Polygon",
  "coordinates": [
    [
      [174.74182, -36.851487],
      [174.741821, -36.851488],
      [174.741822, -36.851489],
      [174.74182, -36.851487]
    ]
  ]
}

ScheduledReport

Description

This represents a schedule on which a specific type of report will be run.

Reports are either scheduled weekly (mday == null) or monthly (mday != null).

Fields
Field Name Description
id - ID! Unique ID
mday - Int Day of month to run report (1-31)
wday - Int

The days of the week to run the report. SUM/OR of

  • 1=Monday
  • 2=Tuesday
  • 4=Wednesday
  • 8=Thursday
  • 16=Friday
  • 32=Saturday
  • 64=Sunday
timezone - String Timezone to run report in
nextrun - Int Next time to run report (unix timestamp)
startoffset - Int Offset backward (in s) from the report run time to the start of the report period
endoffset - Int Offset backward (in s) from the report run time to the end of the report period
jobinfo - GenericScalar Report job information
Example
{
  "id": 4,
  "mday": null,
  "wday": 31,
  "timezone": "Pacific/Auckland",
  "nextrun": 1671131256,
  "startoffset": 86400,
  "endoffset": 0,
  "jobinfo": {}
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"abc123"

Unit

Fields
Field Name Description
id - ID! Unique ID
phone - String Phone number of unit (E164 format)
alertnotes - String Notes to include in any alerts generated for this unit
odoupdate - Int Last manual ODO value set
odoupdatetime - DateTime Time of last manual odo value set
huboupdate - Int Last manual hubo value set
huboupdatetime - DateTime Time of last manual hubo value set
name - String Name given to unit by user
rego - String Registration number of vehicle unit is installed in
make - String Make of vehicle unit is installed in
model - String Model of vehicle unit is installed in
vin - String Vehicle Identification Number of vehicle unit is installed in
notes - String Freeform notes about the unit
colour - String Colour of the unit's indicator on the map
ptocolour - String Colour of the unit's indicator on the map when PTO is asserted
vehiclecolour - String Colour of the vehicle the unit is installed in
vehicletype - String Type of vehicle the unit is installed in
boardtype - String Internal product type identifier
allowdisable - Boolean Allow the unit's disabled feature to be used
ruclicence - String Road User Charges License number
ffid - String Freeform Identifier (can be used for any purpose by connected systems)
batteryrange - VoltageRange Normal internal battery voltage range
point - Point Most recent report from the unit
fmi - Boolean Garmin Fleet Management Interface enabled
alerts - [Alert] Alerts referencing this unit
Example
{
  "id": 4,
  "phone": "+64123456789",
  "alertnotes": "Please contact jim",
  "odoupdate": 111000,
  "odoupdatetime": "2007-12-03T10:15:30Z",
  "huboupdate": 39000,
  "huboupdatetime": "2007-12-03T10:15:30Z",
  "name": "Bobs Unit",
  "rego": "ABC123",
  "make": "Honda",
  "model": "Civic",
  "vin": "FK124432F0",
  "notes": "Jims car",
  "colour": "Red",
  "ptocolour": "Yellow",
  "vehiclecolour": "White",
  "vehicletype": "Car",
  "boardtype": "tb2-21",
  "allowdisable": false,
  "ruclicence": null,
  "ffid": "BU123",
  "batteryrange": VoltageRange,
  "point": Point,
  "fmi": false,
  "alerts": [Alert]
}

UnitGroup

Fields
Field Name Description
id - ID! Unique ID
name - String Name of group
details - String Details of group
units - [Unit] Units in this group
Example
{
  "id": "4",
  "name": "My Group",
  "details": "Sample group of units",
  "units": [Unit]
}

User

Fields
Field Name Description
lastlogin - DateTime Time when user last logged in
id - ID!
name - String User's first and last names
email - String User's email address
failedattempts - Int Number of failed login attempts
lockouttime - DateTime Time when user will be unlocked
emailsent - DateTime Time when invite email was sent to user
units - [Unit]
scheduledreports - [ScheduledReport]
notices - [Notice] Notices for this user
features - [String] List of features enabled for this user
subscribed - [Alert] Alerts this user is subscribed to
scheduledreport - ScheduledReport Scheduled report by ID
Arguments
id - ID
accesstokens - [PersonalAccessToken] Access tokens for this user
Example
{
  "lastlogin": "2007-12-03T10:15:30Z",
  "id": "4",
  "name": "Jim Smith",
  "email": "jim@email.com",
  "failedattempts": 0,
  "lockouttime": "2007-12-03T10:15:30Z",
  "emailsent": "2007-12-03T10:15:30Z",
  "units": [Unit],
  "scheduledreports": [ScheduledReport],
  "notices": [Notice],
  "features": ["xyz789"],
  "subscribed": [Alert],
  "scheduledreport": ScheduledReport,
  "accesstokens": [PersonalAccessToken]
}

VoltageRange

Fields
Field Name Description
minimum - Float Minimum voltage (V)
maximum - Float Maximum voltage (V)
Example
{"minimum": 3.3, "maximum": 4.2}