Rhino Fleet Tracking API API Reference

The Rhino Fleet Tracking (RFT) API is the primary way developers can access our new V3 data graph. This API utilizes the GraphQL query language, giving clients the power to ask for exactly what's needed without any extra data. This makes it easier to enable powerful developer tools and get to using our API in your code faster.

The following documentation will get you started with using our API and help get the most out of our newest features. If you are not familiar with GraphQL, we suggest taking a look at the Getting Started with GraphQL section below. If you would rather simply jump into testing in our provided GraphQL Playground, we suggest reading the Using the GraphQL Playground section below.

API Endpoints
Production Server:
https://v3api.rhinofleettracking.com/graphql
Contact: customerservice@rhinofleettracking.com
Version: 2.0.0

Overview

In the following sections, we will cover getting started with the RFT API. We will introduce basic terminology as well as how to quickly get started with prototyping and testing. Within our documentation, we state all Queries as well as the Schema we use for this API. Selecting a Query from the menu (under the "Queries" section) will show a brief description followed by an example request as well as an example response. The "Schema Definitions" section shows all types used by our schema with a description as well as fields and return types.

Terminology

Host URL

All requests require a host url. Requests will be passed to the v3api.rhinofleettracking.com/graphql host URL.

Access Tokens

Access tokens will allow your application to access the RFT API. These tokens hold two main functions:

  • They allow the user access to RFT data and information.
  • They allow us to identify your application as well as the type of data you, as the user, is permitted to gain access to.

Authentication

Obtaining A Token

If you are reading this, you most likey have been given a secret token to use with this API. However, if you do not have a secret token and are looking to utilize this API, please contact customer service to be provisioned a new secret token specific to you. ( customerservice@rhinofleettracking.com)

Using Your Provisioned Token

Once you have obtained a secret token. You will be able to start using the RFT API and all its features. To utilize your secret token when making a request, add the secret key to your request's header with the value you have been given (as a string). For example: headers: { secret: "<SECRET_TOKEN>"} For a more detailed description on how to make requests to our GraphQL API, visit our Getting Started with GraphQL section below. If you are familiar with the GraphQL query language and how it's used, you can quickly jump into prototyping by using the queries we provide to make requests in the GraphQL Playground we provide for you.

Getting Started with GraphQL

Prerequisites

Like many APIs, this GraphQL based API conforms to HTTP. Because of this, it works with any language that can make HTTP calls or has an HTTP library such as curl. Below is a short list of useful tools to assist in making these calls.

  • curl - a command line tool used for data transfers
  • Postman - a GUI based tool to quickly and easily send GraphQL requests
  • Our Provided GraphQL Playground - Although this may be the easiest tool to get a feel for understanding and using this API's schema, this may not help with utilizing this API programatically. (You can read a more detailed description on how to use this in our Using the GraphQL Playground)

In the following examples, we will be using curl commands to request and retrieve data from the RFT API.

Making your First RFT API Call (using curl)

The following code can be copied and pasted into your terminal (replacing <YOUR_SECRET_TOKEN> with your actual token).

  curl --location --request POST 'https://v3api.rhinofleettracking.com/graphql' \
  --header 'secret: "<YOUR_SECRET_TOKEN>"' \
  --header 'Content-Type: application/json' \
  --data-raw '{"query":"query devicesQuery {\n  devices {\n    id\n    alias\n  }\n}","variables":{}}' | json_pp

Details of this command will be discussed below.

Structure

In general, when making a GraphQL call, there are a few commonalities across languages and uses that we should make apparent. - First, a GraphQL call is usually a POST request (always in our case). - This post request is sent to a host server; in our case, https://v3api.rhinofleettracking.com/graphql. - The request body consists of the GraphQL Query in its respective language/syntax. - Lastly, the data returned is in json format. In our case, we require a secret token for authentication, so this value is required in the request's header (as the value of secret).

GraphQL Query

The graphQL request body contains whats referred to as a "GraphQL Query". These Queries consist of types as well as the fields of those types required to request exactly what is needed by the user. Below is a formatted version of the query we called in the above curl command.

  query devicesQuery { // state we are using a GraphQL query within the brackets
    devices { // one of the provided queries for our API
      id // a field we chose to retrieve from this query
      alias // a field we chose to retrieve from this query
    }
  }
  • For a specific list of the allowed query types, refer to the queries in the "Queries" section.

  • For a list of the allowed field types, please visit the "Schema Definitions" section below.

    Wrapping Query Type

    Each Query consists of a query type that defines what general data we are wanting. In the above case, our query type used is devicesQuery. This wrapping is used to simply state, "I want to make a query request that I'm calling 'devicesQuery'".

    Schema Query Type

    Wrapped inside the the devicesQuery is the query type devices. This query type is defined within our schema and allows you to access data on the devices associated with your account. Placing this type in your request is what tells us which general data you are looking for.

    Query Fields

    Finally, wrapped within the requested query (In our case, the devices query) is the specific fields that you as a user will request. These fields consist of types (as well as nested types) that specifically tell the server exactly what you are wanting to recieve from the general query. In this case, we want to specifically obtain the id and alias for each device returned from the server. All possible fields for a given query/type are listed below in the "Schema Definitions" section.

Using the GraphQL Playground

For your convenience, we host a GraphQL Playground, allowing you to quickly test and prototype your queries. The quickest way to get started with the playground is to navigate to one of the queries we provide below such as "Devices". Simply click " Try it now" and you will automatically be taken to the playground and the query will be placed in the editor.

  • Note that you will need to expand "HTTP HEADERS" at the bottom of the screen and place your secret token like so:
    {
    "secret": "<YOUR_SECRET_TOKEN>"
    }
    
  • Also, if your query requires variables ("Devices" does not), you can simply copy and paste the example variables into the "QUERY VARIABLES" tab below the query and simply replace the values.
    {
    "begin": "<YOUR_VALUE>",
    "end": "<YOUR_VALUE>",
    "eventTypes": [
      "<YOUR_VALUE>"
    ],
    "deviceIds": [
      "<YOUR_VALUE>"
    ]
    }
    

API Limiting

Query Rate Limiting

There are limits to the amount of data that can be requested from the Rhino Fleet Tracking API based on both call counts as well as data size.

Call Count Limit

Currently, all queries are limitted to a 15 call per minute rate. Exceeding this limit will return the error message: "Rate Limit exceeded". If met with this error, simply wait a few seconds before requesting the same query.

Data Size Limit

In most cases, each query also has a limit on the amount of data you can query in a single request. If this amount is exceeded, you will be met with the error message: "The data you are requesting exceeds the allowed data size..." To correct this issue, you can either reduce the date range supplied to the query, or reduce the amount of devices/device ids supplied to the query (where applicable).

Versioning and Release Notes

What is the latest API Version?

The latest Rhino Fleet Tracking API version is v2.0.
Effective date: 12-18-2020

v2.0 Release Notes

Events Report

  • argument begin is now startDatetime
  • argument end is now endDatetime
  • The above arguments are now strictly formatted strings and only except the datetime format: "YYYY-MM-DD HH:mm:ss"
  • Fields: Previously, you would need to query rows as well as the fields it contained. Now, you can simply query the content you need.

OLD (V1.0 Deprecated):

  query eventsReport($begin: String!, $end: String!, $eventTypes: [EventEnum]!, $deviceIds: [Int]){
    eventsReport(begin: $begin, end: $end, eventTypes: $eventTypes, deviceIds: $deviceIds){
      rows{
        deviceId
        alias
        lat
        lng
        ...
      }
    }
  }

NEW:

  query eventsReport($startDatetime: String!, $endDatetime: String!, $eventTypes: [EventEnum]!, $deviceIds: [Int]){
    eventsReport(startDatetime: $startDatetime, endDatetime: $endDatetime, eventTypes: $eventTypes, deviceIds: $deviceIds){
      deviceId
      alias
      lat
      lng
      ...
    }
  }

Trips Report

  • argument begin is now startDatetime
  • argument end is now endDatetime
  • The above arguments are now strictly formatted strings and only except the datetime format: "YYYY-MM-DD HH:mm:ss"
  • Fields: Previously, you would need to query rows as well as the fields it contained. Now, you can simply query the content you need.

OLD (V1.0 Deprecated):

  query tripsReport($begin: String!, $end: String!, $deviceIds: [Int]){
    tripsReport(begin: $begin, end: $end, deviceIds: $deviceIds){
      rows{
        id
        alias
        trips {
          id
          tripOrder
          duration
          ...
        }
      }
    }
  }

NEW:

  query tripsReport($startDatetime: String!, $endDatetime: String!, $deviceIds: [Int]){
    tripsReport(startDatetime: $startDatetime, endDatetime: $endDatetime, deviceIds: $deviceIds){
      id
      alias
      trips{
        id
        tripOrder
        duration
        ...
      }
    }
  }

Documentation

Much of the documentation has been updated in hopes that we can continue to make this API as easily accessible as possible. We've provided quick links in the side menu as well as within the documentation to help you jump to the resources you need more quickly. We've also added more descriptive information on the various queries as well as some of our schema types to help you better understand the environment we provide.

Lastly, we added documentation on how we limit the API queries. For details on this, visit API Limiting.

Other Resources

Below is a list of some useful links as well as short descriptions as to what you can find from visiting them.

Resources/Reference

Queries

Devices

The Device List Query will return a list containing Devices (Visit the Device type under Schema Definitions for more details). This query is useful for obtaining specific information from all your devices, including their id, alias, and last reported locate.

Note: The example to the right shows only a few of the available fields. To see all possible query fields, click on Device below this description, next to "type" under "Responses". Alternatively, you can visit the Device type under Schema Definitions in the left menu for more details.

Example

Request Content-Types: application/json
Query
query devices{
  devices{
    id
    alias
    locate{
      latitude
      longitude
      speed
      heading
      date
      time
    }
  }
}
Try it now
Response Content-Types: application/json
Response Example (200 OK)
{
  "data": {
    "devices": [
      {
        "id": "integer",
        "alias": "string",
        "locate": {
          "latitude": "number",
          "longitude": "number",
          "speed": "number",
          "heading": "number",
          "date": "string",
          "time": "string"
        }
      }
    ]
  }
}

Events Report

The Events Report returns a list of device events that occurred withing the date/time range specified. This list contains all queried devices' events.

Note: The example to the right shows only a few of the available fields. To see all possible query fields, click on RedshiftEvent below this description, next to "type" under "Responses". Alternatively, you can visit the RedshiftEvent type under Schema Definitions in the left menu for more details.

startDatetime:
string

Begin datetime in UTC. Format "YYYY-MM-DD HH:mm:ss"

endDatetime:
string

End datetime in UTC. Format "YYYY-MM-DD HH:mm:ss"

eventTypes:

Event Types to query

deviceIds:
integer[]

Array of device ids to query. If undefined or null, returns all devices.

Example

Request Content-Types: application/json
Query
query eventsReport($startDatetime: String!, $endDatetime: String!, $eventTypes: [EventEnum]!, $deviceIds: [Int]){
  eventsReport(startDatetime: $startDatetime, endDatetime: $endDatetime, eventTypes: $eventTypes, deviceIds: $deviceIds){
    deviceId
    alias
    lat
    lng
    datetime
    drivers
    eventType
    address
    landmarks
  }
}
Variables
{
  "startDatetime": "string",
  "endDatetime": "string",
  "eventTypes": [
    "string"
  ],
  "deviceIds": [
    "integer"
  ]
}
Try it now
Response Content-Types: application/json
Response Example (200 OK)
{
  "data": {
    "eventsReport": [
      {
        "deviceId": "integer",
        "alias": "string",
        "lat": "number",
        "lng": "number",
        "datetime": "string",
        "drivers": "string",
        "eventType": "string",
        "landmarks": "string"
      }
    ]
  }
}

Trips Report

The Trips Report returns a list of TripsReportDevice(s) which can contain the Device ID, Device Alias, and the Device Trips within the date/time range specified. Note that to see the events that occurred inside a trip, you must also query the events field within trips.

Note: The example to the right shows only a few of the available fields. To see all possible query fields, click on TripsReportDevice below this description, next to "type" under "Responses". Alternatively, you can visit the TripsReportDevice type under Schema Definitions in the left menu for more details.

startDatetime:
string

Begin datetime in UTC. Format "YYYY-MM-DD HH:mm:ss"

endDatetime:
string

End datetime in UTC. Format "YYYY-MM-DD HH:mm:ss"

deviceIds:
integer[]

(Optional) Array of device ids to query. If undefined or null, returns all devices.

Example

Request Content-Types: application/json
Query
query tripsReport($startDatetime: String!, $endDatetime: String!, $deviceIds: [Int]){
  tripsReport(startDatetime: $startDatetime, endDatetime: $endDatetime, deviceIds: $deviceIds){
    id
    alias
    trips{
      id
      tripOrder
      duration
      distance
      topSpeed
      timeToNext
      deviceId
      alias
      startTime
      endTime
      startDate
      endDate
      ifCurrentTrip
      endAddress
      endLandmarks
    }
  }
}
Variables
{
  "startDatetime": "string",
  "endDatetime": "string",
  "deviceIds": [
    "integer"
  ]
}
Try it now
Response Content-Types: application/json
Response Example (200 OK)
{
  "data": {
    "tripsReport": [
      {
        "id": "integer",
        "alias": "string",
        "trips": [
          {
            "id": "integer",
            "tripOrder": "integer",
            "duration": "integer",
            "distance": "integer",
            "topSpeed": "integer",
            "timeToNext": "integer",
            "deviceId": "integer",
            "alias": "string",
            "startTime": "string",
            "endTime": "string",
            "startDate": "string",
            "endDate": "string",
            "ifCurrentTrip": "boolean",
            "endLandmarks": [
              null
            ]
          }
        ]
      }
    ]
  }
}

Schema Definitions

Address: object

Address of a locate

id:
Int

Address's identifier

full:

The full address including street address, city, state and zip. If it is null, it will show as No Address

street_address:

The street address

city:

The address city. If it is null, it will show as empty string

state:

The address state. If it is null, it will show as empty string

zip:

The address zip. If it is null, it will show as empty string

Example
{
  "id": "number",
  "full": "string",
  "street_address": "string",
  "city": "string",
  "state": "string",
  "zip": "string"
}

Boolean: boolean

The Boolean scalar type represents true or false.

Example
boolean

Camera: object

return values for cameras

id:

cameraID to be used for put clip request

vehicleId:
Int

vehicleID, this is productkey in our system

status:

Status of camera

data:

dataUsage returned for the current cycle and Maximum data limit for current cycle in (MB)

liveStreamURL:

URL to view the live view of the camera

Example
{
  "id": "string",
  "vehicleId": "number",
  "status": "string",
  "data": "object",
  "liveStreamURL": "string"
}

Device: object

Xirgo, Calamp, GenX, etc. This has list of info about a device.

id:
Int

Identifier for device

client:

The client attached to the device

camera:

gets camera status and information for IMD devices

productKey:

The key attached to the device

alias:

The alias for the device

imei:

IMEI of the device. This can be also MEID but only in mutations. In the mutation it will get converted to IMEI. Therefore, all queries return the IMEI format

serialNumber:

Serial Number of the device. gps.dmi.txtSMSDeviceSN

typeId:
Int

Identifier for device type

type:

The name of device type

unit:

AT? OBD? VTI?

starterInterrupt:

AT? OBD? VTI?

phoneNumber:

Phone number associated with device

simSerial:

Serial number of the SIM card

simCardNumber:

Card number for SIM card. If device is AT&T, this is number to use if you want to contact the device

firmware:

Name of the firmware of the device

firmwareId:
Int

Firmware identifier of the device

networkId:
Int

Network identifier of the device

network:

Name of the network of the device

networkProviderId:
Int

Network provider identifier of the device

networkProvider:

Name of the network provider of the device

warrantyDate:

Expiration date of the warranty for the device

warranty:

green = still in warranty. yellow = almost expired. red = expired

unitName:

Wired Tracker, OBD...

isActive:

Is device active

stopMinutes:
Int

Minutes duration until a stop begins in an idle

speedThreshold:
Int

v3 speed threshold settings for this device

dateEntered:

When device was entered

groups:

The groups the device belong to

labels:

The labels the device has

icon:

The icon object, v3 icon

locate:

Devices last location

address_deprecated:

inline On the fly Address

address:

The locate address

driver:

Which driver is assigned to this device at the time the locate happens

currentDriver:

Which driver is currently assigned to the device

status:

If vehicle is moving, stopped or parking

geofences:

An array of geofences belong to the device

speedLimit:
Int

A speed limit set in manage device page, mph

vehicle:

vehicle details

fobEnabled:

If the device is fob enabled

Example
{
  "id": "number",
  "client": "string",
  "camera": {
    "id": "string",
    "vehicleId": "number",
    "status": "string",
    "data": "object",
    "liveStreamURL": "string"
  },
  "productKey": "string",
  "alias": "string",
  "imei": "string",
  "serialNumber": "string",
  "typeId": "number",
  "type": "string",
  "unit": {
    "id": "number",
    "name": "string",
    "abbr": "string"
  },
  "starterInterrupt": "object",
  "phoneNumber": "string",
  "simSerial": "string",
  "simCardNumber": "string",
  "firmware": "string",
  "firmwareId": "number",
  "networkId": "number",
  "network": "string",
  "networkProviderId": "number",
  "networkProvider": "string",
  "warrantyDate": "string",
  "warranty": "string",
  "unitName": "string",
  "isActive": "boolean",
  "stopMinutes": "number",
  "speedThreshold": "number",
  "dateEntered": "string",
  "groups": [
    {
      "id": "number",
      "name": "string",
      "color": "string"
    }
  ],
  "labels": [
    {
      "id": "number",
      "name": "string",
      "color": "string"
    }
  ],
  "icon": {
    "type": "string",
    "color": "string",
    "text": "string"
  },
  "locate": {}
}

DeviceStatus: object

The device status, if moving, parking or stopped

state:

if moving, stopped or parking

stoppedMinutes:
Int

if stopped, how long since last stop

Example
{
  "state": "string",
  "stoppedMinutes": "number"
}

DeviceUnit: object

The device unit type id and name, OBD? AT? VTI?

id:
Int

unit type Id

name:

Full name of the device unit type

abbr:

abbr name of the device unit type

Example
{
  "id": "number",
  "name": "string",
  "abbr": "string"
}

Driver: object

A driver from the client

id:
Int
name:
firstName:
lastName:
startTime:
endTime:
dotNumber:
fob:
device:
wexCard:
Example
{
  "id": "number",
  "name": "string",
  "firstName": "string",
  "lastName": "string",
  "startTime": "string",
  "endTime": "string",
  "dotNumber": "string",
  "fob": "string",
  "device": {
    "id": "number",
    "alias": "string"
  },
  "wexCard": "string"
}

DriverDevice: object

The device id and alias assigned to the driver

id:
Int
alias:
Example
{
  "id": "number",
  "alias": "string"
}

EventEnum: string

object
SPEEDING

A speed limit set by a client for a device was exceeded.

object
DISCONNECT

The device has been disconnected.

object
UNAUTHORIZED_MOVEMENT

A device has moved during a specified time

object
LANDMARK_EXITED

The device has exited the immediate area of a designated landmark

object
FAST_START

A device fast start has occurred.

object
HARD_BRAKING

A device hard braking has occurred.

object
LANDMARK_ENTERED

The device has entered the immediate area of a designated landmark.

object
MOVEMENT_INITIATED

The device reported on first move.

object
RECONNECT

The device has been reconnected to a power source.

object
MOVEMENT_CONCLUDED

The device has come to rest.

object
PANIC_BUTTON_ACTIVATED

Device Panic Button has been Pressed.

object
EXCESSIVE_SPEEDING

The device exceeded the posted speed limit.

object
DIAGNOSTIC_TROUBLE_CODE

A Diagnostic Trouble Code has been reported by your vehicle.

object
STOP

The device has stopped for a specified time.

object
PTO_PRIMARY_ON

Primary PTO Switch On

object
PTO_PRIMARY_OFF

Primary PTO Switch Off

object
PTO_SECONDARY_ON

Secondary PTO Switch On

object
PTO_SECONDARY_OFF

Secondary PTO Switch Off

object
IGNITION_ON

Ignition on

object
IGNITION_OFF

Ignition off

object
IDLE

The device has idled for a specified time

Float: number

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

Example
number

Geofence: object

The device geofence

id:
Int

id, numGeofenceID in gps.dbo.VehicleGeofence

name:

geofence name

Example
{
  "id": "number",
  "name": "string"
}

Group: object

This is the another name of company tag

id:
Int

numTagID in gps.dbo.Tags

name:

txtTag in gps.dbo.Tags

color:

tag background color

Example
{
  "id": "number",
  "name": "string",
  "color": "string"
}

Icon: object

vehicle icon details

type:

if can be sedan, suv... verticalRectangle, horizontalRectangle

color:

if can be yellow, green, white....

text:

text for verticalRectangle, horizontalRectangle, circle

Example
{
  "type": "string",
  "color": "string",
  "text": "string"
}

Int: number

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
number

JSON: object

The JSON scalar type represents JSON values as specified by ECMA-404.

Example
object

JSONObject: object

The JSONObject scalar type represents JSON objects as specified by ECMA-404.

Example
object

Label: object

This is the another name of personal tag

id:
Int

numTagID in gps.dbo.Tags

name:

txtTag in gps.dbo.Tags

color:

tag background color

Example
{
  "id": "number",
  "name": "string",
  "color": "string"
}

Landmark: object

Landmark type used in the V3 system.

id:
Int

id of landmark in gps.dbo.v3_landmark

name:

name of landmark

points:

geom Data

type:

geom type

clientID:
Int

Client

contactID:
Int

Client

radius:

radius in meters

center:

center of circle

billable:

billable

groups:

The groups the landmarks belong to

labels:

The labels the landmark has

Example
{
  "id": "number",
  "name": "string",
  "points": [
    {
      "lat": "number",
      "lng": "number"
    }
  ],
  "type": "string",
  "clientID": "number",
  "contactID": "number",
  "radius": "number",
  "center": [
    {
      "lat": "number",
      "lng": "number"
    }
  ],
  "billable": "boolean",
  "groups": [
    {
      "id": "number",
      "name": "string",
      "color": "string"
    }
  ],
  "labels": [
    {
      "id": "number",
      "name": "string",
      "color": "string"
    }
  ]
}

Locate: object

Locate of device

id:
Int

Locate's identifier

latitude:

Locate's latitude

longitude:

Locate's longitude

speed:

Locate's speed in mph, this is a float

heading:

Locate's heading direction, from 0 to 360

date:

Locate's Date, in MM/DD/YYYY

time:

Locate's Time, in hh:mm:ss am/pm

datetimeUTC:

Locate's Datetime, in utc

addressSourceId:
Int

1 is ThinkGeo, 2 is Google

address:

inline ThinkGeo Address

landmarks:

landmarks of locate

Example
{
  "id": "number",
  "latitude": "number",
  "longitude": "number",
  "speed": "number",
  "heading": "number",
  "date": "string",
  "time": "string",
  "datetimeUTC": "string",
  "addressSourceId": "number",
  "address": {
    "full": "string",
    "address": "string",
    "street_address": "string",
    "city": "string",
    "state": "string",
    "zip": "string"
  },
  "landmarks": [
    {
      "id": "number",
      "name": "string",
      "points": [
        {
          "lat": "number",
          "lng": "number"
        }
      ],
      "type": "string",
      "clientID": "number",
      "contactID": "number",
      "radius": "number",
      "center": [
        {
          "lat": "number",
          "lng": "number"
        }
      ],
      "billable": "boolean",
      "groups": [
        {
          "id": "number",
          "name": "string",
          "color": "string"
        }
      ],
      "labels": [
        {
          "id": "number",
          "name": "string",
          "color": "string"
        }
      ]
    }
  ]
}

Point: object

lat/lng coords for v3_landmark

lat:

lat of point

lng:

lng of point

Example
{
  "lat": "number",
  "lng": "number"
}

RedshiftEvent: object

Records from the event table

deviceId:
Int

id of device

alias:

alias of device

lat:

latitude of locate

lng:

longitude of locate

datetime:

device date of locate

date:

device date of locate

time:

device date of locate

speed:

speed of device MPH

heading:

heading of locate in degrees

actualOdometer:

real odometer value from device

virtualOdometer:

virtual odometer values generated by device

battery:

battery voltage

fob:

fob id value

drivers:

driver names and ids

roadSpeed:
Int

Speed limit of the road

mosl:
Int

Miles over the speed limit

eventType:

type of event

address:

address of event

landmarks:

landmarks event is inside

details:

an optional column to show the details for different events, in JSON. This can include data such as DTC or Diagnostic Trouble Codes.

Example
{
  "deviceId": "number",
  "alias": "string",
  "lat": "number",
  "lng": "number",
  "datetime": "string",
  "date": "string",
  "time": "string",
  "speed": "number",
  "heading": "number",
  "actualOdometer": "number",
  "virtualOdometer": "number",
  "battery": "number",
  "fob": "string",
  "drivers": "string",
  "roadSpeed": "number",
  "mosl": "number",
  "eventType": "string",
  "address": "object",
  "landmarks": "string",
  "details": "string"
}

ReportTrip: object

a trip used for reporting

id:
Int

the trip unique identifier

tripOrder:
Int

order of trip per vehicle

duration:
Int

trip duration in minutes

distance:
Int

distance in miles

topSpeed:
Int

topSpeed of device for trip

timeToNext:
Int

Time in minutes until next trip

deviceId:
Int

the id key of vehicleDevice

alias:

vehicle alias

startTime:

The starttime of the trip, based on the client timezone

endTime:

The endtime of the trip, based on the client timezone

startDate:

The starting date of the trip, based on the client timezone (used for ATs)

endDate:

The end date of the trip, based on the client timezone (used for ATs)

ifCurrentTrip:

Check if this vehicle is in a trip and moving right now

drivers:

drivers

endAddress:

endAddress

endLandmarks:

endLandmarks

events:

tripEvents

Example
{
  "id": "number",
  "tripOrder": "number",
  "duration": "number",
  "distance": "number",
  "topSpeed": "number",
  "timeToNext": "number",
  "deviceId": "number",
  "alias": "string",
  "startTime": "string",
  "endTime": "string",
  "startDate": "string",
  "endDate": "string",
  "ifCurrentTrip": "boolean",
  "drivers": [
    {
      "id": "number",
      "name": "string",
      "firstName": "string",
      "lastName": "string",
      "startTime": "string",
      "endTime": "string",
      "dotNumber": "string",
      "fob": "string",
      "device": {
        "id": "number",
        "alias": "string"
      },
      "wexCard": "string"
    }
  ],
  "endAddress": "object",
  "endLandmarks": [
    "object"
  ],
  "events": [
    {
      "id": "number",
      "tripId": "number",
      "deviceId": "number",
      "lat": "number",
      "lng": "number",
      "alias": "string",
      "datetime": "string",
      "date": "string",
      "time": "string",
      "speed": "number",
      "heading": "number",
      "actualOdometer": "number",
      "virtualOdometer": "number",
      "battery": "number",
      "fob": "string",
      "roadSpeed": "number",
      "mosl": "number",
      "event": "string",
      "address": "object"
    }
  ]
}

String: string

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.

ThinkGeoAddress: object

The on the fly address

full:

full address

address:

house number + street name

street_address:

house number + street name

city:

city

state:

the state abbrievation

zip:

zip

Example
{
  "full": "string",
  "address": "string",
  "street_address": "string",
  "city": "string",
  "state": "string",
  "zip": "string"
}

TripsReportDevice: object

trips report device that has trips nested

id:
Int

device id

alias:

device alias

trips:

trips for device

Example
{
  "id": "number",
  "alias": "string",
  "trips": [
    {
      "id": "number",
      "tripOrder": "number",
      "duration": "number",
      "distance": "number",
      "topSpeed": "number",
      "timeToNext": "number",
      "deviceId": "number",
      "alias": "string",
      "startTime": "string",
      "endTime": "string",
      "startDate": "string",
      "endDate": "string",
      "ifCurrentTrip": "boolean",
      "drivers": [
        {
          "id": "number",
          "name": "string",
          "firstName": "string",
          "lastName": "string",
          "startTime": "string",
          "endTime": "string",
          "dotNumber": "string",
          "fob": "string",
          "device": {
            "id": "number",
            "alias": "string"
          },
          "wexCard": "string"
        }
      ],
      "endAddress": "object",
      "endLandmarks": [
        "object"
      ],
      "events": [
        {
          "id": "number",
          "tripId": "number",
          "deviceId": "number",
          "lat": "number",
          "lng": "number",
          "alias": "string",
          "datetime": "string",
          "date": "string",
          "time": "string",
          "speed": "number",
          "heading": "number",
          "actualOdometer": "number",
          "virtualOdometer": "number",
          "battery": "number",
          "fob": "string"
        }
      ]
    }
  ]
}

TripsReportEvent: object

trips Report type

id:
Int

event id

tripId:
Int

trip id the event belongs to

deviceId:
Int

deviceID

lat:

latitude of event

lng:

longitude of event

alias:

vehicle Alias

datetime:

datetime the event occurred

date:

date of event

time:

time of event

speed:
Int

speed at event

heading:
Int

direction of vehicle at event

actualOdometer:
Int

actual_odometer

virtualOdometer:

virtual_odometer

battery:

battery

fob:

fob

roadSpeed:
Int

road_speed

mosl:
Int

mosl

event:

event

address:

address

landmarks:

landmarks

idleEnd:

idleEnd

details:

details of event

videoClip:

related Video Clip if exists

Example
{
  "id": "number",
  "tripId": "number",
  "deviceId": "number",
  "lat": "number",
  "lng": "number",
  "alias": "string",
  "datetime": "string",
  "date": "string",
  "time": "string",
  "speed": "number",
  "heading": "number",
  "actualOdometer": "number",
  "virtualOdometer": "number",
  "battery": "number",
  "fob": "string",
  "roadSpeed": "number",
  "mosl": "number",
  "event": "string",
  "address": "object",
  "landmarks": [
    {
      "id": "number",
      "name": "string",
      "points": [
        {
          "lat": "number",
          "lng": "number"
        }
      ],
      "type": "string",
      "clientID": "number",
      "contactID": "number",
      "radius": "number",
      "center": [
        {
          "lat": "number",
          "lng": "number"
        }
      ],
      "billable": "boolean",
      "groups": [
        {
          "id": "number",
          "name": "string",
          "color": "string"
        }
      ],
      "labels": [
        {
          "id": "number",
          "name": "string",
          "color": "string"
        }
      ]
    }
  ],
  "idleEnd": "string",
  "details": "object",
  "videoClip": {
    "id": "number",
    "deviceId": "number",
    "productKey": "string"
  }
}

Vehicle: object

vehicle details

id:
Int

Vehicle ID

vin:

vehicle vin Number

make:

vehicle make

model:

vehicle model

color:

vehicle color

year:
Int

vehicle year

license:

vehicle license

Example
{
  "id": "number",
  "vin": "string",
  "make": "string",
  "model": "string",
  "color": "string",
  "year": "number",
  "license": "string"
}

VideoClip: object

video clip information for camera devices

id:
Int

id in the VideoClips table

deviceId:
Int

device id

productKey:

product key

datetime:

event datetime

date:

event date

time:

event time

eventType:

event type

eventDetails:

event details

status:

clip status

clipStartDatetime:

clip begin datetime

clipEndDatetime:

clip end datetime

replayURL:

clip link

latitude:
Int

latitude

longitude:
Int

longitude

drivers:

array of drivers

address:

address

landmarks:

landmarks

favorite:

if contact favorited clip

viewed:

if contact favorited clip

Example
{
  "id": "number",
  "deviceId": "number",
  "productKey": "string",
  "datetime": "string",
  "date": "string",
  "time": "string",
  "eventType": "string",
  "eventDetails": "object",
  "status": "string",
  "clipStartDatetime": "string",
  "clipEndDatetime": "string",
  "replayURL": "string",
  "latitude": "number",
  "longitude": "number",
  "drivers": [
    "object"
  ],
  "address": "object",
  "landmarks": [
    {
      "id": "number",
      "name": "string",
      "points": [
        {
          "lat": "number",
          "lng": "number"
        }
      ],
      "type": "string",
      "clientID": "number",
      "contactID": "number",
      "radius": "number",
      "center": [
        {
          "lat": "number",
          "lng": "number"
        }
      ],
      "billable": "boolean",
      "groups": [
        {
          "id": "number",
          "name": "string",
          "color": "string"
        }
      ],
      "labels": [
        {
          "id": "number",
          "name": "string",
          "color": "string"
        }
      ]
    }
  ],
  "favorite": "boolean",
  "viewed": "boolean"
}