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
querytype that defines what general data we are wanting. In the above case, our query type used isdevicesQuery. 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
devicesQueryis the query typedevices. 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
devicesquery) 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 theidandaliasfor 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
beginis nowstartDatetime - argument
endis nowendDatetime - 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
rowsas 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
...
}
}
}
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
beginis nowstartDatetime - argument
endis nowendDatetime - 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
rowsas 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
...
}
}
}
}
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
- https://graphql.org/code/ - Links to GraphQL documentation in various programming languages
- https://www.apollographql.com/docs/react/ - Apollo Client demonstrated in React.js
- https://gist.github.com/dunglas/05d901cb7560d2667d999875322e690a - A minimalist GraphQL client for PHP (example)
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
query devices{
devices{
id
alias
locate{
latitude
longitude
speed
heading
date
time
}
}
}
Successful operation
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.
Begin datetime in UTC. Format "YYYY-MM-DD HH:mm:ss"
End datetime in UTC. Format "YYYY-MM-DD HH:mm:ss"
Event Types to query
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
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
}
}
{
"startDatetime": "string",
"endDatetime": "string",
"eventTypes": [
"string"
],
"deviceIds": [
"integer"
]
}
Successful operation
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.
Begin datetime in UTC. Format "YYYY-MM-DD HH:mm:ss"
End datetime in UTC. Format "YYYY-MM-DD HH:mm:ss"
(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
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
}
}
}
{
"startDatetime": "string",
"endDatetime": "string",
"deviceIds": [
"integer"
]
}
Successful operation
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:
-
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"
}
Camera: object
return values for cameras
- id:
-
cameraID to be used for put clip request
- vehicleId:
-
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:
-
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:
-
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:
-
Firmware identifier of the device
- networkId:
-
Network identifier of the device
- network:
-
Name of the network of the device
- networkProviderId:
-
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:
-
Minutes duration until a stop begins in an idle
- speedThreshold:
-
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:
-
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": {}
}
Driver: object
A driver from the client
- id:
- 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"
}
EventEnum: string
-
objectSPEEDING
-
A speed limit set by a client for a device was exceeded.
-
objectDISCONNECT
-
The device has been disconnected.
-
objectUNAUTHORIZED_MOVEMENT
-
A device has moved during a specified time
-
objectLANDMARK_EXITED
-
The device has exited the immediate area of a designated landmark
-
objectFAST_START
-
A device fast start has occurred.
-
objectHARD_BRAKING
-
A device hard braking has occurred.
-
objectLANDMARK_ENTERED
-
The device has entered the immediate area of a designated landmark.
-
objectMOVEMENT_INITIATED
-
The device reported on first move.
-
objectRECONNECT
-
The device has been reconnected to a power source.
-
objectMOVEMENT_CONCLUDED
-
The device has come to rest.
-
objectPANIC_BUTTON_ACTIVATED
-
Device Panic Button has been Pressed.
-
objectEXCESSIVE_SPEEDING
-
The device exceeded the posted speed limit.
-
objectDIAGNOSTIC_TROUBLE_CODE
-
A Diagnostic Trouble Code has been reported by your vehicle.
-
objectSTOP
-
The device has stopped for a specified time.
-
objectPTO_PRIMARY_ON
-
Primary PTO Switch On
-
objectPTO_PRIMARY_OFF
-
Primary PTO Switch Off
-
objectPTO_SECONDARY_ON
-
Secondary PTO Switch On
-
objectPTO_SECONDARY_OFF
-
Secondary PTO Switch Off
-
objectIGNITION_ON
-
Ignition on
-
objectIGNITION_OFF
-
Ignition off
-
objectIDLE
-
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
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
Landmark: object
Landmark type used in the V3 system.
- id:
-
id of landmark in gps.dbo.v3_landmark
- name:
-
name of landmark
- points:
-
geom Data
- type:
-
geom type
- clientID:
-
Client
- contactID:
-
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:
-
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:
-
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"
}
]
}
]
}
RedshiftEvent: object
Records from the event table
- deviceId:
-
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:
-
Speed limit of the road
- mosl:
-
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:
-
the trip unique identifier
- tripOrder:
-
order of trip per vehicle
- duration:
-
trip duration in minutes
- distance:
-
distance in miles
- topSpeed:
-
topSpeed of device for trip
- timeToNext:
-
Time in minutes until next trip
- deviceId:
-
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:
-
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:
-
event id
- tripId:
-
trip id the event belongs to
- deviceId:
-
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:
-
speed at event
- heading:
-
direction of vehicle at event
- actualOdometer:
-
actual_odometer
- virtualOdometer:
-
virtual_odometer
- battery:
-
battery
- fob:
-
fob
- roadSpeed:
-
road_speed
- mosl:
-
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:
-
Vehicle ID
- vin:
-
vehicle vin Number
- make:
-
vehicle make
- model:
-
vehicle model
- color:
-
vehicle color
- year:
-
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:
-
id in the VideoClips table
- deviceId:
-
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:
-
latitude
- longitude:
-
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"
}