FleetPulse Developer Guide

Click here for the full FleetPulse GraphQL schema!

Overview

Welcome to the FleetPulse developer guide. This document walks through the mechanics of common use cases of the FleetPulse API.

The corresponding autogenerated GraphQL documentation for FleetPulse can be found here. Always refer to that site for the latest GraphQL definitions.

Terminology

Common Terms

Term Definition
Customer Your organization, as registered with FleetPulse
Vehicle/Asset A trailer installed with a FleetPulse-compatible sensor box and sensors
Sensor Box A cellular-network connected IoT device which collects sensor data from one or more sensors throughout the vehicle and propogates to FleetPulse
Sensor A physical sensor device can have one or more “logical” sensors. For example, an ABS system can generate both ABS fault readings and odometer readings. We treat each of these as its own sensor. Most physical sensor devices map to a single sensor. E.g. a door sensor.
Sensor Sample/Reading All the details of an event or state of a sensor at a given point in time. E.g. a type of fault changing between active/inactive or the current bogie weight.

Supported Sensor Types

FleetPulse tracks data for a variety of sensor types installed on your fleet.

ID Name Description
7 ABS System Fault Brake System Fault
36 Door Status Door Open/Closed Status
5 Enhanced Weight Moving Average of Net Cargo Weight–Adjusted for Fluctuations in Road Conditions (Grades, Bumps)
1 GPS GPS Coordinates
16 GPS Odometer Cumulative Odometer as Estimated by GPS History
8 Light System Fault Vehicle Electrical Light System Fault
6 Odometer Cumulative ABS-Tracked Odometer (When Installed, More Accurate than GPS Odometer)
18 Sensor Box Sensor Box-level events and metrics such as wake/sleep events, which battery is powering the sensor box, and trailer movement.
13 Sensor Box Battery Sensor Boxes can switch between a dedicated battery and the tractor’s battery. This sensor reads the sensor box’s dedicated battery’s amperage.
10 Tether Change Tractor-trailer tether/un-tether state.
15 Tire Inflation Status Tire leak status
14 Tractor Battery Tractor battery amperage

Technologies

The FleetPulse API serves all data statelessly over HTTPS. The FleetPulse API URL is https://my.fleetpulse.com

GraphQL

Most data is served over GraphQL queries. Writes to the FleetPulse API for activities like user management, trailer management, setting alerts and geofences are done via GraphQL mutations. The FleetPulse GraphQL API specification can be found here.

Querying Flexibly With GraphQL

REST and GraphQL both return a schema of data for each different type of call (endpoint and query, respectively). However, the return schema for REST is “fixed” for each endpoint. For example, if a hypothetical REST endpoint for /things returns:

{
  "data": {
    "things": [
      {
        "id": "1",
        "name": "foo",
        "createdBy": "John Smith"
      },
      {
        "id": "2",
        "name": "bar",
        "createdBy": "Jane Doe"
      }
    ]
  }
}

but you as an API client only need the list of names, there’s no way to convey over REST to omit the other fields without requiring an additional, less verbose endpoint.

An analogous hypothetical GraphQL query returning the same response would look like:

query
{
  things
  {
    id
    name
    createdBy
  }
}

However, GraphQL has baked in support for you to convey to the API that you only need the things’ names–which means fewer varieties of API calls for you to develop against. To request only the names, you would write:

query
{
  things
  {
    name
  }
}

Which would send only the needed subset of data over the network:

{
  "data": {
    "things": [
      {
        "name": "foo"
      },
      {
        "name": "bar"
      }
    ]
  }
}

The above are not real APIs but serve to illustrate that you can add/omit supported fields from the GraphQL queries described in this document to fit your use cases. The queries throughout this document include commonly-used sets of fields.

Always refer to the latest, full FleetPulse GraphQL API specification here.

REST

A small subset of the FleetPulse API is served over REST for activities like authentication and CSV downloads.

Experimenting with the API

Code examples in this document are showed in cURL for simplicty and cross-OS compatability but any HTTP IDE of your choice will work for experimenting with the API. Insomnia, Postman, GraphiQL are all great, free options.

Consuming FleetPulse API From a Back-End API

If you are writing an API that communicates directly with the FleetPulse API, any HTTP/REST library or framework will work for both GraphQL queries/mutations and REST endpoints.

Consuming FleetPulse API In a Web APP

If you are consuming the FleetPulse API in an existing or new web app, any Javascript HTTP/REST library or framework will work for both GraphQL queries/mutations and REST endpoints. However, for GraphQL features, you will likely achieve more readable, shorter code and a better developer experience by leveraging any of the rich front-end GraphQL libraries/frameworks. Popular choices are: Apollo Client, Relay, urql, and graphql.js. If you are React, most of these have a react-specific implementation to further decrease your development effort.

Security

Authentication

Users and API clients authenticate with FleetPulse using standard, basic, username/password auth which returns a JWT. Future implemtations will support standard basic authentication. Subsequent calls to the FleetPulse API are authorized using that JWT in the Authorization header using bearer token authorization. jwt.io is a fantastic resource for quickly and safely inspecting JWTs in the course of your development. Your JWT will only allow you to see data for your organization.

Example Authentication Request

curl --request GET \
  --url https://my.fleetpulse.com/auth/v1/loginV2 \
  --header 'authorization: Basic <base64 username:password>'

Example Authentication Response

{
  "token": "<your jwt>"
}

Customer Master Data

Getting High-Level Details About Your Organization

Example Get Customers Request

QUERY="$(echo 'query {
  customers {
    id
    shortName
    longName
  }
}')" 

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Example Get Customers Response

{
  "data": {
    "customers": [
      {
        "id": "1",
        "shortName": "Acme",
        "longName": "Acme Corporation"
      }
    ]
  }
}

Vehicle Master Data

Listing Vehicles Registered With FleetPulse

Example List Vehicles Request (see FleetPulse GraphQL documentation for a full list of input fields and attributes)

QUERY="$(echo 'query FleetStatus {
    fleetStatusPageV2(input: { pageNumber: 1, pageSize: 100 }) {
        count
        numTrailers
        numPages
        trailers {
            vin
            unitId
            serialNumber
            sensorBoxMfgrId
            installationDate
            groups
            vehicleId
            vehicleTypeId
            vehicleMfgr
            vehicleType
            vehicleLengthFeet
            bornOnDate
            modelYear
            installedSensorTypeIds
            tkVehicleName
            absOdometer
            gpsOdometer
            tetheredStatus
            timeUntetheredDays
            geofence
            loadStatus
            cargoWeightOnBogieLbs
            restingBogieWeightLbs
            rawWeightLbs
            address
            speed
            doorStatus
            absFault
            absFaultSeverityLevel
            tireInflationStatus
            improvedTireInflationStatus
            lightFault
            trailerBatteryVoltage
            trailerBatteryStatus
            gatewayBatteryStatus
            backupBatteryVoltage
            connectivityStatus
            lat
            lng
            gpsHeading
            lastReport
            timeUntetheredFormattedString
            timeTetheredFormattedString
            tetherStatusChanged
            gpsLastReport
            tetherLastReport
            absOdometerLastReport
            absFaultLastReport
            lightFaultLastReport
            tireInflationLastReport
            doorLastReport
            batteryLastReport
            tirePressureLastReport
            tirePressureStatus
            simStatus
            simStatusChangeDate
            dwellingSince
            timeDwellingFormattedString
            customerId
            customerName
            iccId
            deviceTypeId
            formattedProductType
            baseProductType
            goProductType
            isThermoking
            carrierAssetId
            groupIds
            geofenceNames
            geofenceIds
            wiliotBattery
            trailerHealthStatus
            cargoCameraFullness
            tkUnitOnOrOff
            tkOperatingMode
            tkFuelLevel
            tkAmbientF
            tkHumidity
            interiorTemp1F
            interiorTemp2F
            interiorTemp3F
            interiorTemp4F
            interiorTemp5F
            interiorTemp6F
            setPoint1F
            setPoint2F
            setPoint3F
            dischargeAir1F
            dischargeAir2F
            dischargeAir3F
            returnAir1F
            returnAir3F
            returnAir2F
            tkEngineHours
            tkElectricalHours
            tkTotalHours
            tkUnitBatteryVoltage
            mainAppVersion
            hasSolarPanels
            hasUltrasonicCargoSensor
            cargoCameraDeviceSerialNumber
            frontLeftTireTemperatureA
            frontRightTireTemperatureA
            frontRightTireTemperatureB
            rearLeftTireTemperatureA
            frontLeftTireTemperatureB
            rearLeftTireTemperatureB
            rearRightTireTemperatureA
            rearRightTireTemperatureB
            frontLeftTirePressureA
            frontLeftTirePressureB
            tireTemperatureLastReport
            frontRightTirePressureA
            frontRightTirePressureB
            rearLeftTirePressureA
            rearLeftTirePressureB
            rearRightTirePressureA
            rearRightTirePressureB
            reeferFaults
            shipped
        }
    }
}
')" 

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Example List Vehicles Response

{
    "data": {
        "fleetStatusPageV2": {
            "count": 100,
            "numTrailers": 5917,
            "numPages": 60,
            "trailers": [
                {
                    "vin": "1GR170624TT227708",
                    "unitId": "TT227708",
                    "serialNumber": "110423523118",
                    "sensorBoxMfgrId": 6,
                    "installationDate": "2025-04-10T22:18:55.985981Z",
                    "groups": "All VINs",
                    "vehicleId": "1007fe55-82ff-4bb5-ade0-bcfc826980d2",
                    "vehicleTypeId": 4,
                    "vehicleMfgr": "Great Dane",
                    "vehicleType": "Dry Trailer",
                    "vehicleLengthFeet": 53,
                    "bornOnDate": null,
                    "modelYear": 2026,
                    "installedSensorTypeIds": "1,10,37",
                    "tkVehicleName": null,
                    "absOdometer": null,
                    "gpsOdometer": null,
                    "tetheredStatus": "tethered",
                    "timeUntetheredDays": null,
                    "geofence": "",
                    "loadStatus": null,
                    "cargoWeightOnBogieLbs": null,
                    "restingBogieWeightLbs": 9260,
                    "rawWeightLbs": null,
                    "address": "1822 60th Avct East, North Hill, WA 93575, United States of America",
                    "speed": 0,
                    "doorStatus": null,
                    "absFault": null,
                    "absFaultSeverityLevel": null,
                    "tireInflationStatus": null,
                    "improvedTireInflationStatus": null,
                    "lightFault": null,
                    "trailerBatteryVoltage": null,
                    "trailerBatteryStatus": "NA",
                    "gatewayBatteryStatus": "NA",
                    "backupBatteryVoltage": null,
                    "connectivityStatus": "REPORTING",
                    "lat": 47.090104,
                    "lng": -122.337808,
                    "gpsHeading": 0,
                    "lastReport": "2025-10-07T15:33:49",
                    "timeUntetheredFormattedString": null,
                    "timeTetheredFormattedString": "3 hours, 8 minutes",
                    "tetherStatusChanged": "2025-10-07T15:31:27.949121",
                    "gpsLastReport": "2025-10-07T03:16:18",
                    "tetherLastReport": "2025-10-07T15:33:49",
                    "absOdometerLastReport": null,
                    "absFaultLastReport": null,
                    "lightFaultLastReport": null,
                    "tireInflationLastReport": null,
                    "doorLastReport": null,
                    "batteryLastReport": "2025-10-07T15:33:49",
                    "tirePressureLastReport": null,
                    "tirePressureStatus": "NA",
                    "simStatus": null,
                    "simStatusChangeDate": null,
                    "dwellingSince": "2025-10-06T21:31:48",
                    "timeDwellingFormattedString": "21 hours, 8 minutes",
                    "customerId": 113,
                    "customerName": "GREAT DANE",
                    "iccId": null,
                    "deviceTypeId": 5,
                    "formattedProductType": "Go Track",
                    "baseProductType": "go",
                    "goProductType": "track",
                    "isThermoking": false,
                    "carrierAssetId": null,
                    "groupIds": "73605494-eb2a-4cf9-bb22-877516acb109",
                    "geofenceNames": [],
                    "geofenceIds": [],
                    "wiliotBattery": null,
                    "trailerHealthStatus": "NA",
                    "cargoCameraFullness": null,
                    "tkUnitOnOrOff": null,
                    "tkOperatingMode": null,
                    "tkFuelLevel": null,
                    "tkAmbientF": null,
                    "tkHumidity": null,
                    "interiorTemp1F": null,
                    "interiorTemp2F": null,
                    "interiorTemp3F": null,
                    "interiorTemp4F": null,
                    "interiorTemp5F": null,
                    "interiorTemp6F": null,
                    "setPoint1F": null,
                    "setPoint2F": null,
                    "setPoint3F": null,
                    "dischargeAir1F": null,
                    "dischargeAir2F": null,
                    "dischargeAir3F": null,
                    "returnAir1F": null,
                    "returnAir3F": null,
                    "returnAir2F": null,
                    "tkEngineHours": null,
                    "tkElectricalHours": null,
                    "tkTotalHours": null,
                    "tkUnitBatteryVoltage": null,
                    "mainAppVersion": null,
                    "hasSolarPanels": false,
                    "hasUltrasonicCargoSensor": false,
                    "cargoCameraDeviceSerialNumber": "110135101118",
                    "frontLeftTireTemperatureA": null,
                    "frontRightTireTemperatureA": null,
                    "frontRightTireTemperatureB": null,
                    "rearLeftTireTemperatureA": null,
                    "frontLeftTireTemperatureB": null,
                    "rearLeftTireTemperatureB": null,
                    "rearRightTireTemperatureA": null,
                    "rearRightTireTemperatureB": null,
                    "frontLeftTirePressureA": null,
                    "frontLeftTirePressureB": null,
                    "tireTemperatureLastReport": null,
                    "frontRightTirePressureA": null,
                    "frontRightTirePressureB": null,
                    "rearLeftTirePressureA": null,
                    "rearLeftTirePressureB": null,
                    "rearRightTirePressureA": null,
                    "rearRightTirePressureB": null,
                    "reeferFaults": null,
                    "shipped": null
                }
            ]
        }
    }
}

Getting Details on a Specific Vehicle and its Current State

Get Vehicle Example Request (NOTE: this list of fields is not comprehensive. See FleetPulse GraphQL documentation for a full list.)

QUERY="$(echo 'query vehicleDetail {
    vehicleDetailV2(vin: "YourVinHere") {
        id
        vin
        extMfgrSerialNum
        specs
        specsV2
        odometerMiles
        ageInDays
        orderNumber
        withinCustomerGeofenceNames
        vehicleLengthFeet
        bornOnDate
        modelYear
        trailerHealthStatus
        connectivityStatus
        cargoCameraDeviceSerialNumber
        cargoCameraDeviceImei
        cargoCameraDeviceIccid
        cargoCameraDeviceImsi
        shipped
        recoveryMode
        formattedProductType
        baseProductType
        goProductType
        isThermoking
        isCarrier
        hasSolarPanels
        customerName
        simStatus
        simStatusChangeDate
        dwellingSince
        timeDwellingFormattedString
        externalDeviceIds
        currentWiliotGatewayMode
        wiliotBattery
        carrierCommands {
            fleetpulseUserId
            commandCompleted
            assetId
            commandId
            commandName
            commandJson
            status
            description
            deviceId
            errorDescription
            created
            updated
        }
        thermoKingCommands {
            fleetpulseUserId
            commandCompleted
            commandValue
            status
            created
            updated
            ackResponseReceived
            completedResponseReceived
            errorType
        }
        firmwareDetails {
            id
            versions
            sensorBoxId
            sensorBoxMfgrId
            activeFrom
        }
        deviceType {
            id
            description
        }
        occupiedCustomerSpecificGeofences {
            id
            name
            categoryId
        }
        sensorBoxMfgr {
            id
            shortName
            longName
            active
            created
            updated
        }
        vehicleSpecs {
            product
            mfgPlant
            year
            packagedOptions
            serialPlate
            overallHeight
            overallLength
            overallWidth
            upperCouplerHeight
            kingpinLocation
            landingGearLocation
            wedge
            undercarriageDesign
        }
        installationMetricSensorTypes {
            id
            name
            longName
        }
        sensorDiagnostics {
            gpsDiagnostics {
                lastCommunicationAt
                displayLastCommunicationAt
                statusIcon
                vehicleDiagnosticTypeEnum
                latitude
                longitude
                latLng
                speed
                sensorManufacturer
                satelliteCount
                vehicleDiagnosticType {
                    title
                    icon
                    key
                }
                vehicleAddress {
                    displayAddressLine1
                    displayCityStateAndZip
                }
            }
            tetherStatusDiagnostics {
                lastCommunicationAt
                displayLastCommunicationAt
                statusIcon
                vehicleDiagnosticTypeEnum
                isTethered
                untetheredSince
                tetheredSince
                liveUntetheredDurationMs
                liveTetheredDurationMs
                installationStabilityStatus {
                    status
                    stableAt
                    sensorInstallationStatus
                    sensorInstallationStatusReason
                    reportAge
                    sensorInstallationStatusColor
                }
            }
            tireInflationStatusDiagnostic {
                lastCommunicationAt
                displayLastCommunicationAt
                statusIcon
                vehicleDiagnosticTypeEnum
                manufacturer
                status
                improvedStatus
            }
            doorStatusDiagnostics {
                lastCommunicationAt
                displayLastCommunicationAt
                timeElapsedFromLastChange
                statusIcon
                vehicleDiagnosticTypeEnum
                manufacturer
                status
            }
            fleetPulseDeviceDiagnostics {
                lastCommunicationAt
                displayLastCommunicationAt
                statusIcon
                vehicleDiagnosticTypeEnum
                deviceManufacturer
                batteryVoltage
                gpsOdometerMiles
                healthStatus
            }
            absDiagnostics {
                lastCommunicationAt
                displayLastCommunicationAt
                statusIcon
                vehicleDiagnosticTypeEnum
                faultCount
                activeFaultCount
            }
        }
        loadStatus {
            status
            cargoWeight
        }
        lastCargoImage {
            id
            trailerId
            level
            imageUrl
            rawResponse
            capturedAt
            created
        }
        vehiclePreventativeMaintenanceTaskAgeSchedules {
            frequency
            tolerance
            recurrenceCount
            formattedRangeDescription
            measurementUnit {
                id
                name
                baseUnit
            }
        }
        vehiclePreventativeMaintenanceTaskDistanceSchedules {
            frequency
            tolerance
            recurrenceCount
            formattedRangeDescription
            measurementUnit {
                id
                name
                baseUnit
                measurementSystem {
                    id
                    name
                }
                measurementType {
                    id
                    name
                }
            }
            vehiclePreventativeMaintenanceTask {
                id
                description
            }
        }
        vehicleMfgr {
            id
            shortName
            longName
        }
        vehicleInspections {
            id
            inspectionDate
            notes
            created
            updated
        }
    }
}
')" 

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Get Vehicle Example Response

Omitted for brevity. Execute cURL above to explore response.

Vehicle Transactional Data

Trailer History

Trailer History Example Request

QUERY="$(echo 'query {
   {vehicleTrackingV2 
    (vin: "1GR1P0620LJ156066"
      , pageSize: 100
      , pageNumber: 0
    ) {
      activityLog {
        vin 
        recorded
        latitude
        longitude
        reverseGeoFullAddress
        tetherStatus
        absFaultDescription
        amberLampStatus
        tisStatus
        loaded
        loadWeight
        batteryVoltageTrailer
        doorOpened
        lightRed
        lightGreen
        lightYellow
        lightBlack
        lightBrown
        odometerAbs
        odometerGps
      }
}}
}')"

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Trailer History Example Response

{
  "data": {
    "vehicleTrackingV2": {
      "activityLog": [
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T16:34:09Z",
          "latitude": null,
          "longitude": null,
          "reverseGeoFullAddress": null,
          "tetherStatus": "Untethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": 38.0,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": null
        },
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T16:32:04Z",
          "latitude": null,
          "longitude": null,
          "reverseGeoFullAddress": null,
          "tetherStatus": "Untethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": null,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": null
        },
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T16:30:03Z",
          "latitude": null,
          "longitude": null,
          "reverseGeoFullAddress": null,
          "tetherStatus": "Tethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": null,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": 200.888921
        },
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T16:28:48Z",
          "latitude": null,
          "longitude": null,
          "reverseGeoFullAddress": null,
          "tetherStatus": "Untethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": null,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": null
        },
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T15:27:21Z",
          "latitude": null,
          "longitude": null,
          "reverseGeoFullAddress": null,
          "tetherStatus": "Untethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": 48.0,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": null
        },
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T15:25:21Z",
          "latitude": null,
          "longitude": null,
          "reverseGeoFullAddress": null,
          "tetherStatus": "Tethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": null,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": 200.888921
        },
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T15:24:44Z",
          "latitude": null,
          "longitude": null,
          "reverseGeoFullAddress": null,
          "tetherStatus": "Untethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": null,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": null
        },
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T15:22:40Z",
          "latitude": null,
          "longitude": null,
          "reverseGeoFullAddress": null,
          "tetherStatus": "Untethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": 38.0,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": null
        },
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T15:20:39Z",
          "latitude": null,
          "longitude": null,
          "reverseGeoFullAddress": null,
          "tetherStatus": "Tethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": null,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": 200.888921
        },
        {
          "vin": "1GR1P0620LJ156066",
          "recorded": "2021-06-15T15:18:22Z",
          "latitude": 32.1650975,
          "longitude": -81.2124305,
          "reverseGeoFullAddress": "131 Technology Circle, Savannah, Georgia 31408, United States",
          "tetherStatus": "Untethered",
          "absFaultDescription": null,
          "amberLampStatus": null,
          "tisStatus": null,
          "loaded": null,
          "loadWeight": null,
          "batteryVoltageTrailer": null,
          "doorOpened": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "odometerAbs": null,
          "odometerGps": null
        }
      ]
    }
  }
}

Search For Trailers By Location

Search For Trailers By Location Example Request

QUERY="$(echo 'query {
  findVehicles(input: {lat: <some latitude>, lng: <some longitude>}) {
    all {
      total
      data {
        vehicle {
          id
          vin
          location {
            lat
            lng
            displayLatAndLong
            displayRecordedAt
          }
        }
      }
    }
    nearby {
      data {
        vehicle {
          id
          vin
          location {
            lat
            lng
            displayLatAndLong
            displayRecordedAt
          }
        }
      }
    }
    recent {
      data {
        vehicle {
          id
          vin
          location {
            lat
            lng
            displayLatAndLong
            displayRecordedAt
          }
        }
      }
    }
  }
}')"

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Search For Trailers By Location Example Response

{
  "data": {
    "findVehicles": {
      "all": {
        "total": 2,
        "data": [
          {
            "vehicle": {
              "id": "13cee1ac-13e2-464c-8a31-cdb258fc86bc",
              "vin": "SCAZS42A1GCX14122",
              "location": {
                "lat": 41.6944522,
                "lng": -88.0209672,
                "displayLatAndLong": "41.694452, -88.020967",
                "displayRecordedAt": "8/12/2019 10:18 AM CDT"
              }
            }
          },
          {
            "vehicle": {
              "id": "dc56f23c-c318-49cd-bd2b-8ed04072e3e5",
              "vin": "VF1CD36B9D2641040",
              "location": {
                "lat": 39.5379948,
                "lng": -87.0596477,
                "displayLatAndLong": "39.537995, -87.059648",
                "displayRecordedAt": "5/30/2019 01:40 PM CDT"
              }
            }
          }
        ]
      },
      "nearby": {
        "data": [
          {
            "vehicle": {
              "id": "13cee1ac-13e2-464c-8a31-cdb258fc86bc",
              "vin": "SCAZS42A1GCX14122",
              "location": {
                "lat": 41.6944522,
                "lng": -88.0209672,
                "displayLatAndLong": "41.694452, -88.020967",
                "displayRecordedAt": "8/12/2019 10:18 AM CDT"
              }
            }
          }
        ]
      },
      "recent": {
        "data": [
          {
            "vehicle": {
              "id": "dc56f23c-c318-49cd-bd2b-8ed04072e3e5",
              "vin": "VF1CD36B9D2641040",
              "location": {
                "lat": 39.5379948,
                "lng": -87.0596477,
                "displayLatAndLong": "39.537995, -87.059648",
                "displayRecordedAt": "5/30/2019 01:40 PM CDT"
              }
            }
          }
        ]
      }
    }
  }
}

Fleet-Wide Trailer Health

This query provides high-level fleet-wide health statistics:

Fleet-Wide Trailer Health Example Request

QUERY="$(echo 'query {
  vehicleFleetStatistics {
    healthyVehiclesCount
    unhealthyVehiclesCount
    sensorTypeStatistics {
      vehiclesCount
      sensorType {
        id
        longName
      }
    }
  }
}')"

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Fleet-Wide Trailer Health Example Response

{
  "data": {
    "vehicleFleetStatistics": {
      "healthyVehiclesCount": 35,
      "unhealthyVehiclesCount": 26,
      "sensorTypeStatistics": [
        {
          "vehiclesCount": 26,
          "sensorType": {
            "id": "8",
            "longName": "Light System Fault"
          }
        },
        {
          "vehiclesCount": 2,
          "sensorType": {
            "id": "7",
            "longName": "ABS System Fault"
          }
        }
      ]
    }
  }
}

Geofencing

FleetPulse supports managing radius (circular) and arbitrary polygon geofences for your fleet. Geofence event notifications are delivered by email.

Listing Geofences

List Geofences Example Request

QUERY="$(echo 'query {
  geofencesV2 {
    geofenceId
    radiusMeters
    geofenceTypeId
    geofenceDeactivated
    customerGeofenceId
    customerId
    name
    description
    customerGeofenceDeactivated
    boundaryCoordinates {
      latitude
      longitude
    }
    centerPointCoordinate {
      latitude
      longitude
    }
  }
}')"

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

List Geofences Example Response

{
  "data": {
    "geofencesV2": [
      {
        "geofenceId": "740a8faf-1f69-4c65-9417-954740e651e3",
        "radiusMeters": 200000.0,
        "geofenceTypeId": 1,
        "geofenceDeactivated": null,
        "customerGeofenceId": "cb421e5e-de0d-4a9d-a492-91e616df7cef",
        "customerId": 0,
        "name": "Houston 200km Radius",
        "description": "Houston 200km Radius",
        "customerGeofenceDeactivated": null,
        "boundaryCoordinates": null,
        "centerPointCoordinate": {
          "latitude": 29.7604,
          "longitude": -95.3698
        }
      },
      {
        "geofenceId": "3365edfb-0fe5-43e6-b4a9-290d3c98c9dc",
        "radiusMeters": null,
        "geofenceTypeId": 2,
        "geofenceDeactivated": null,
        "customerGeofenceId": "2293b5a7-d5e8-4d6b-98d0-5a3e34523331",
        "customerId": 0,
        "name": "test",
        "description": "",
        "customerGeofenceDeactivated": null,
        "boundaryCoordinates": [
          {
            "latitude": 42.7843150113756,
            "longitude": -108.72070275
          },
          {
            "latitude": 44.375895128647045,
            "longitude": -108.193359
          },
          {
            "latitude": 44.751609810531804,
            "longitude": -106.2158199375
          },
          {
            "latitude": 43.041794498605576,
            "longitude": -104.3701168125
          },
          {
            "latitude": 42.428525033683655,
            "longitude": -106.874999625
          },
          {
            "latitude": 42.7843150113756,
            "longitude": -108.72070275
          }
        ],
        "centerPointCoordinate": null
      }
    ]
  }
}

Creating Radius Geofences

Create Radius Geofence Example Request

QUERY="$(echo 'mutation {
   createGeofence(
    geofenceInput: {
      name: "Radius Geo", 
      active: true, 
      geofenceTypeId: 1
      radiusMeters: 100000,
      centerPointCoordinate: {
        latitude: 45.02930,
        longitude: -110.70703,
      }
    }) {
    geofenceId
  }
}')"

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Create Radius Geofence Example Response

{
  "data": {
    "createGeofence": {
      "geofenceId": "dc1cabc3-1e7c-45d9-bf17-7dfa915b8d39"
    }
  }
}

Creating Polygon Geofences

Polygon geofences consist of 3 or more arbitrary coordinates which form a boundary.

Create Polygon Geofence Example Request

QUERY="$(echo 'mutation {
  geofenceInput: {
      name: "Polygon Geo", 
      geofenceTypeId: 2,
      active: true, 
      boundaryCoordinates: [
      {
        latitude: 43.64899454100273, 
        longitude: -96.08642540625
      }, 
      {
        latitude: 42.428525033683655, 
        longitude: -95.20751915625
      }, 
      {
        latitude: 43.07390378795281, 
        longitude: -93.22998009375
      }
      ]}) {
        geofenceId
        name
        geofenceTypeId
        boundaryCoordinates {
          longitude
          latitude
        }
}')"

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Create Polygon Geofence Example Response

{
  "data": {
    "createGeofence": {
      "geofenceId": "cb4ec49c-f41a-4458-8b64-f24fde322417",
      "name": "Polygon Test 4",
      "geofenceTypeId": 2,
      "boundaryCoordinates": [
        {
          "longitude": -96.08642540625,
          "latitude": 43.6489945410027
        },
        {
          "longitude": -95.20751915625,
          "latitude": 42.428525033683655
        },
        {
          "longitude": -93.22998009375,
          "latitude": 43.07390378795281
        },
        {
          "longitude": -96.08642540625,
          "latitude": 43.64899454100273
        }
      ]
    }
  }
}

Deleting Geofences

If you have geofences you no longer need, they can be deleted with deleteGeofence.

Delete Geofence Example Request

QUERY="$(echo 'mutation {
    deleteGeofence(id: "39d82233-75bb-40f2-b4fa-fc98853bdc7f") {
        deletedCount
    }
}')" 

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Alerts

FleetPulse supports the viewing of alerts and alerts data via API.

Active Alerts

getAlerts (Get list of alerts on user account)

List Active Alerts Example Request

QUERY="$(echo 'query {
    getAlerts {
        id
        name
        customerId
        allVehicles
        vehicleIds
        vehicleGroupIds
        alertNotificationRateLimitMs
        oneTimeOnlyPerVehicle
        includeSensorData
        createdById
        notifyEmails
        created
        updated
        deactivated
    }
}')" 

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

List Active Alerts Example Response

{
  "data": {
    "getAlerts": [
      {
        "id": "1ebc36cf-e050-4182-ba51-cb57f87bf9d6",
        "name": "battery alert",
        "customerId": 9,
        "allVehicles": true,
        "vehicleIds": null,
        "vehicleGroupIds": null,
        "alertNotificationRateLimitMs": 86400000,
        "oneTimeOnlyPerVehicle": false,
        "includeSensorData": false,
        "createdById": "c0a27cb8-d465-4e1c-aa10-8cd0be05299e",
        "notifyEmails": [
          "test@test.com"
        ],
        "created": "2024-08-02T15:48:08.739106Z",
        "updated": "2024-08-02T15:48:08.738182Z",
        "deactivated": null
      },
      {
        "id": "39b298b9-12d9-4d12-97db-2bf35e85e2b9",
        "name": "Load test",
        "customerId": 9,
        "allVehicles": true,
        "vehicleIds": null,
        "vehicleGroupIds": null,
        "alertNotificationRateLimitMs": 86400000,
        "oneTimeOnlyPerVehicle": false,
        "includeSensorData": false,
        "createdById": "c0a27cb8-d465-4e1c-aa10-8cd0be05299e",
        "notifyEmails": [
          "test@test.com"
        ],
        "created": "2024-08-02T15:47:54.657886Z",
        "updated": "2024-08-02T15:47:54.654569Z",
        "deactivated": null
      },
      {
        "id": "135c181c-948c-444e-bf09-1e1d749d3590",
        "name": "Lights Tests",
        "customerId": 9,
        "allVehicles": false,
        "vehicleIds": null,
        "vehicleGroupIds": [
          "4d33a4fe-bc19-463c-a5ac-931fbd050a37"
        ],
        "alertNotificationRateLimitMs": 86400000,
        "oneTimeOnlyPerVehicle": false,
        "includeSensorData": false,
        "createdById": "c0a27cb8-d465-4e1c-aa10-8cd0be05299e",
        "notifyEmails": [
          "test@test.com"
        ],
        "created": "2024-07-29T21:01:32.178502Z",
        "updated": "2024-07-29T21:01:32.177533Z",
        "deactivated": null
      },
      {
        "id": "94bc390c-abe2-428a-aeb7-262b5325efa7",
        "name": "ABS Fault Test",
        "customerId": 9,
        "allVehicles": true,
        "vehicleIds": null,
        "vehicleGroupIds": null,
        "alertNotificationRateLimitMs": 86400000,
        "oneTimeOnlyPerVehicle": false,
        "includeSensorData": false,
        "createdById": "c0a27cb8-d465-4e1c-aa10-8cd0be05299e",
        "notifyEmails": [
          "test@test.com"
        ],
        "created": "2024-07-29T21:01:04.244826Z",
        "updated": "2024-07-29T21:01:04.240988Z",
        "deactivated": null
      }
    ]
  }
}

Alert Details

Alert Details Example Request

QUERY="$(echo 'query {
    getAlert(id: "1ebc36cf-e050-4182-ba51-cb57f87bf9d6") {
        id
        name
        customerId
        allVehicles
        vehicleIds
        vehicleGroupIds
        alertNotificationRateLimitMs
        oneTimeOnlyPerVehicle
        includeSensorData
        createdById
        notifyEmails
        created
        updated
        deactivated
    }
}')" 

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Alert Details Example Response

{
  "data": {
    "getAlert": {
      "id": "1ebc36cf-e050-4182-ba51-cb57f87bf9d6",
      "name": "battery alert",
      "customerId": 9,
      "allVehicles": true,
      "vehicleIds": null,
      "vehicleGroupIds": null,
      "alertNotificationRateLimitMs": 86400000,
      "oneTimeOnlyPerVehicle": false,
      "includeSensorData": false,
      "createdById": "c0a27cb8-d465-4e1c-aa10-8cd0be05299e",
      "notifyEmails": [
        "test@test.com"
      ],
      "created": "2024-08-02T15:48:08.739106Z",
      "updated": "2024-08-02T15:48:08.738182Z",
      "deactivated": null
    }
  }
}

Triggered Alert Data

Note: The naming here is a little confusing. searchAlerts is for finding alerts that have been triggered and the data that triggered them. getAlerts and getAlert are for viewing what alerts are configured.

searchAlerts (Get the contents of any Alerts that were activated)

Search Alert Data Example Request

QUERY="$(echo 'query {
    searchAlerts(
        input: {
            pageSize: 10
            pageNumber: 1
            startDateTime: "2024-07-05T00:00:00+00:00"
            endDateTime: "2024-07-24T00:00:00+00:00"
            notifiedEmail: "test@test.com"
            alertNameSubstring: "My Test Alert"
        }
    ) {
        totalPages
        totalItems
        items {
            id
            rawMessageId
            recorded
            sensorBoxMfgrId
            sensorBoxId
            extMfgrSerialNum
            vehicleId
            vin
            customerId
            customerName
            reportTypeName
            latitude
            longitude
            altitude
            satellitesCount
            speed
            heading
            accelerometerMotion
            lightRed
            lightGreen
            lightYellow
            lightBlack
            lightBrown
            tisStatus
            tetherStatus
            odometerAbs
            odometerGps
            batteryVoltageTractor
            batteryVoltageTrailer
            doorOpened
            bogieWeight
            loaded
            loadWeight
            created
            unitId
            absMilesTraveled
            gpsMilesTraveled
            lightFaults
            absFaults
            brakeLiningInsufficientStatus
            amberLampStatus
            vehicleElectricalSupplyInsufficientStatus
            sensorBoxMfgrName
            reportTypeId
            withinCustomerGeofenceNames
            reverseGeoFullAddress
            absFaultLevelId
            absFaultDescription
            timeElapsedMs
            updated
            durationInStateMs
            idleEventCount
            idleTimeDurationMs
            adjOdometerGps
            adjOdometerAbs
            occupiedCustomerSpecificGeofenceIds
            occupiedGeofenceIds
            occupiedGeofences
            occupiedCustomerSpecificGeofences
            faultLevel
            tseFaults
            backupBatteryVoltage
            originalRecorded
            isRecordedCorrected
            tseFaultDetails
            wheelEndDetails
            tirePressureDetails
            reverseGeo
            absSeverityLevel
            thermoKingDetails
            ultrasonicCargoSensorVoltage
            cargoCameraImageS3Key
            cargoCameraFullness
            thermoKingAlarmCodes
            cargoCameraLat
            cargoCameraLong
            cargoCameraReverseGeo
            reeferFaultDetails
            reeferZoneTemperatureDetails
            reeferLatitude
            reeferLongitude
            reeferReverseGeo
            reeferStatusDetails
            reeferBatteryDetails
            reeferFuelLevelDetails
            reeferHoursDetails
            reeferTemperatureSensorsDetails
        }
    }
}')" 

curl --request POST \
  --url https://my.fleetpulse.com/graphql \
  -H 'authorization: <your jwt>' \
  -H 'content-type: application/json' \
  -d "{ \"query\": \"$QUERY\"}"

Search Alert Data Example Response

{
  "data": {
    "searchAlerts": {
      "totalPages": 1,
      "totalItems": 2,
      "items": [
        {
          "id": "0f0422d3-9dd2-4944-a60d-c9883b944bc7",
          "rawMessageId": "e537883e-fb6e-497c-9cc7-ff2917b85e1a",
          "recorded": "2024-07-15T16:24:44Z",
          "sensorBoxMfgrId": 6,
          "sensorBoxId": "b64cf17f-e396-48a5-9477-9be75d4fa5c9",
          "extMfgrSerialNum": "1100240400007",
          "vehicleId": "af102ab3-b3a5-4750-a38b-67eb1840942e",
          "vin": "FPXT5300TEST00007",
          "customerId": 9,
          "customerName": "Morey Test Trailers",
          "reportTypeName": "XT5300_DATA_EVENT_CODE",
          "latitude": 32.016618,
          "longitude": -81.10866,
          "altitude": null,
          "satellitesCount": null,
          "speed": null,
          "heading": null,
          "accelerometerMotion": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "tisStatus": null,
          "tetherStatus": null,
          "odometerAbs": null,
          "odometerGps": null,
          "batteryVoltageTractor": null,
          "batteryVoltageTrailer": null,
          "doorOpened": null,
          "bogieWeight": null,
          "loaded": null,
          "loadWeight": null,
          "created": "2024-07-15T16:24:55.06954Z",
          "unitId": null,
          "absMilesTraveled": null,
          "gpsMilesTraveled": null,
          "lightFaults": null,
          "absFaults": null,
          "brakeLiningInsufficientStatus": null,
          "amberLampStatus": null,
          "vehicleElectricalSupplyInsufficientStatus": null,
          "sensorBoxMfgrName": null,
          "reportTypeId": 71,
          "withinCustomerGeofenceNames": null,
          "reverseGeoFullAddress": "4 Jackson Court, Savannah, GA 31405, United States of America",
          "absFaultLevelId": null,
          "absFaultDescription": null,
          "timeElapsedMs": null,
          "updated": "2024-07-15T16:24:55.06954Z",
          "durationInStateMs": null,
          "idleEventCount": null,
          "idleTimeDurationMs": null,
          "adjOdometerGps": null,
          "adjOdometerAbs": null,
          "occupiedCustomerSpecificGeofenceIds": null,
          "occupiedGeofenceIds": null,
          "occupiedGeofences": "{}",
          "occupiedCustomerSpecificGeofences": "{}",
          "faultLevel": null,
          "tseFaults": null,
          "backupBatteryVoltage": null,
          "originalRecorded": null,
          "isRecordedCorrected": null,
          "tseFaultDetails": null,
          "wheelEndDetails": null,
          "tirePressureDetails": null,
          "reverseGeo": "{\"place\":\"Savannah\",\"region\":\"Georgia\",\"address\":\"4 Jackson Court\",\"country\":\"United States\",\"postcode\":\"31405\",\"regionShortCode\":\"GA\",\"countryShortCode\":\"us\",\"formattedAddress\":\"4 Jackson Court, Savannah, GA 31405, United States of America\"}",
          "absSeverityLevel": null,
          "thermoKingDetails": null,
          "ultrasonicCargoSensorVoltage": null,
          "cargoCameraImageS3Key": null,
          "cargoCameraFullness": "Failed",
          "thermoKingAlarmCodes": null,
          "cargoCameraLat": null,
          "cargoCameraLong": null,
          "cargoCameraReverseGeo": null,
          "reeferFaultDetails": null,
          "reeferZoneTemperatureDetails": null,
          "reeferLatitude": null,
          "reeferLongitude": null,
          "reeferReverseGeo": null,
          "reeferStatusDetails": null,
          "reeferBatteryDetails": null,
          "reeferFuelLevelDetails": null,
          "reeferHoursDetails": null,
          "reeferTemperatureSensorsDetails": null
        },
        {
          "id": "e309c2e6-0c26-4971-a452-808b8bf5fbe9",
          "rawMessageId": "ae0e9548-0b32-41a5-ac00-1bd11491a8ae",
          "recorded": "2024-07-18T21:26:51Z",
          "sensorBoxMfgrId": 6,
          "sensorBoxId": "b64cf17f-e396-48a5-9477-9be75d4fa5c9",
          "extMfgrSerialNum": "1100240400007",
          "vehicleId": "af102ab3-b3a5-4750-a38b-67eb1840942e",
          "vin": "FPXT5300TEST00007",
          "customerId": 9,
          "customerName": "Morey Test Trailers",
          "reportTypeName": "XT5300_DATA_EVENT_CODE",
          "latitude": 34.020355,
          "longitude": -84.548035,
          "altitude": null,
          "satellitesCount": null,
          "speed": null,
          "heading": null,
          "accelerometerMotion": null,
          "lightRed": null,
          "lightGreen": null,
          "lightYellow": null,
          "lightBlack": null,
          "lightBrown": null,
          "tisStatus": null,
          "tetherStatus": null,
          "odometerAbs": null,
          "odometerGps": null,
          "batteryVoltageTractor": null,
          "batteryVoltageTrailer": null,
          "doorOpened": null,
          "bogieWeight": null,
          "loaded": null,
          "loadWeight": null,
          "created": "2024-07-18T21:27:02.452295Z",
          "unitId": null,
          "absMilesTraveled": null,
          "gpsMilesTraveled": null,
          "lightFaults": null,
          "absFaults": null,
          "brakeLiningInsufficientStatus": null,
          "amberLampStatus": null,
          "vehicleElectricalSupplyInsufficientStatus": null,
          "sensorBoxMfgrName": null,
          "reportTypeId": 71,
          "withinCustomerGeofenceNames": "marksGeoFinal",
          "reverseGeoFullAddress": "2844 Cottonwood Drive, Cobb County, GA 30144, United States of America",
          "absFaultLevelId": null,
          "absFaultDescription": null,
          "timeElapsedMs": null,
          "updated": "2024-07-18T21:27:02.452295Z",
          "durationInStateMs": null,
          "idleEventCount": null,
          "idleTimeDurationMs": null,
          "adjOdometerGps": null,
          "adjOdometerAbs": null,
          "occupiedCustomerSpecificGeofenceIds": null,
          "occupiedGeofenceIds": null,
          "occupiedGeofences": "{\"f7ce2348-a878-4430-afc1-28d335a63f15\":{\"name\":\"marksGeoFinal\"}}",
          "occupiedCustomerSpecificGeofences": "{\"f7ce2348-a878-4430-afc1-28d335a63f15\":{\"name\":\"marksGeoFinal\"}}",
          "faultLevel": null,
          "tseFaults": null,
          "backupBatteryVoltage": null,
          "originalRecorded": null,
          "isRecordedCorrected": null,
          "tseFaultDetails": null,
          "wheelEndDetails": null,
          "tirePressureDetails": null,
          "reverseGeo": "{\"place\":\"Cobb County\",\"region\":\"Georgia\",\"address\":\"2844 Cottonwood Drive\",\"country\":\"United States\",\"postcode\":\"30144\",\"regionShortCode\":\"GA\",\"countryShortCode\":\"us\",\"formattedAddress\":\"2844 Cottonwood Drive, Cobb County, GA 30144, United States of America\"}",
          "absSeverityLevel": null,
          "thermoKingDetails": null,
          "ultrasonicCargoSensorVoltage": null,
          "cargoCameraImageS3Key": null,
          "cargoCameraFullness": "Failed",
          "thermoKingAlarmCodes": null,
          "cargoCameraLat": null,
          "cargoCameraLong": null,
          "cargoCameraReverseGeo": null,
          "reeferFaultDetails": null,
          "reeferZoneTemperatureDetails": null,
          "reeferLatitude": null,
          "reeferLongitude": null,
          "reeferReverseGeo": null,
          "reeferStatusDetails": null,
          "reeferBatteryDetails": null,
          "reeferFuelLevelDetails": null,
          "reeferHoursDetails": null,
          "reeferTemperatureSensorsDetails": null
        }
      ]
    }
  }
}

Dwell Analysis

FleetPulse provides time-series metrics for analyzing trailer dwell time trends across fleets, groups, or individual trailers.


Dwell Improvement

The dwellImprovement query measures how much the average stationary time (dwell) has improved or worsened between two comparable periods.

Input: TimeSeriesDwellInput

Field Type Description
groupIds [UUID] Optional list of vehicle group ids.
vins [String] Optional list of VINs.
customerIds [Int] Optional list of customer IDs.
periodDays Int Number of days.

Output: TimeSeriesDwellOutput

Field Type Description
dwellTimeSecondsPreviousNDays Float Total dwell time during the preceding period.
dwellTimeSecondsMostRecentNDays Float Total dwell time during the most recent period.
percentageImprovement Int Percent improvement.

Example Query

query {
    dwellImprovement(
        input: {
            vins: ["1GR170624TT227708"]
            periodDays: 7
        }
    ) {
        dwellTimeSecondsPreviousNDays
        dwellTimeSecondsMostRecentNDays
        percentageImprovement
    }
}

Example Response

{
  "data": {
    "dwellImprovement": {
      "dwellTimeSecondsPreviousNDays": 432000,
      "dwellTimeSecondsMostRecentNDays": 259200,
      "percentageImprovement": 40
    }
  }
}

Trailer Utilization

The trailerUtilization and trailerUtilizationMonthlyDetail queries return time-series utilization metrics that show the ratio between the count of moved trailers (moved at least 1 mile during the given period) and the count of stationary trailers (did not move at least 1 mile).


Input: TrailerUtilizationInput

Field Type Description
groupIds [UUID] Optional list of group IDs.
vins [String] Optional list of trailer VINs.
customerIds [Int] Optional list of customer IDs.
vehicleTypeIds [Int] Optional list of vehicle type IDs.
productTypes [ProductTypeEnum] Optional list of product types.
trailerLengths [TrailerLengthInputEnum] Optional list of trailer lengths.
period TimeSeriesPeriodEnum Defines aggregation level: WEEKLY or MONTHLY.
numPeriods Int Number of time periods to pull (starting from current day, going back in time).
pullComparisonData Boolean Determine whether to pull the fleetpulseSummaryTrailers or customerSummaryTrailers (shown below).

Output: TrailerUtilizationOutput

Field Type Description
trailers [UtilizationPeriod] List of utilization summaries for each requested period, with filters applied (if provided).
fleetpulseSummaryTrailers [UtilizationPeriod] FleetPulse average (all customers) utilization across all trailers. This will be included in the response if pullComparisonData is true and there were no filters applied.
customerSummaryTrailers [UtilizationPeriod] List of unfiltered utilization summaries across all customer trailers. This will be included in the response if pullComparisonData is true and filters were applied.

UtilizationPeriod

Field Type Description
stationary Int Number of trailers that did not move within the period.
moved Int Number of trailers that moved at least 1 mile within the period.
periodStart OffsetDateTime Start date of the summarized period.

Example Query

query {
    trailerUtilization(
        input: {
            period: WEEKLY
            numPeriods: 2
            pullComparisonData: true
        }
    ) {
        trailers {
            stationary
            moved
            periodStart
        }
        fleetpulseSummaryTrailers {
            stationary
            moved
            periodStart
        }
    }
}

Example Response

{
  "data": {
    "trailerUtilization": {
      "trailers": [
        {
          "stationary": 100,
          "moved": 200,
          "periodStart": "2025-09-29T00:00:00Z"
        },
        {
          "stationary": 150,
          "moved": 150,
          "periodStart": "2025-10-06T00:00:00Z"
        }
      ],
      "fleetpulseSummaryTrailers": [
        {
          "stationary": 10000,
          "moved": 40000,
          "periodStart": "2025-09-29T00:00:00Z"
        },
        {
          "stationary": 20000,
          "moved": 30000,
          "periodStart": "2025-10-06T00:00:00Z"
        }
      ]
    }
  }
}

Monthly Utilization Detail


Input: TrailerUtilizationMonthlyDetailInput

Field Type Description
groupIds [UUID] Optional list of group IDs.
vins [String] Optional list of trailer VINs.
customerIds [Int] Optional list of customer IDs.
month OffsetDateTime Timestamp.

Output: TrailerUtilizationMonthlyDetailOutput

Field Type Description
weeks [TrailerUtilizationMonthlyDetailWeek] Weekly utilization details.

TrailerUtilizationMonthlyDetailWeek

Field Type Description
start OffsetDateTime Week start timestamp.
end OffsetDateTime Week end timestamp.
numDays Int Number of days.
stationary Int Count of trailers that did not move during the period.
moved Int Count of trailers that moved at least 1 mile during the period.

Example Query

query {
    trailerUtilizationMonthlyDetail(
        input: {
            month: "2025-09-01T00:00:00Z"
        }
    ) {
        weeks {
            start
            end
            numDays
            stationary
            moved
        }
    }
}

Example Response

{
  "data": {
    "trailerUtilizationMonthlyDetail": {
      "weeks": [
        {
          "start": "2025-09-01T00:00:00Z",
          "end": "2025-09-07T23:59:59Z",
          "numDays": 7,
          "stationary": 100,
          "moved": 200
        },
        {
          "start": "2025-09-08T00:00:00Z",
          "end": "2025-09-14T23:59:59Z",
          "numDays": 7,
          "stationary": 150,
          "moved": 150
        },
        {
          "start": "2025-09-15T00:00:00Z",
          "end": "2025-09-21T23:59:59Z",
          "numDays": 7,
          "stationary": 180,
          "moved": 120
        },
        {
          "start": "2025-09-22T00:00:00Z",
          "end": "2025-09-30T23:59:59Z",
          "numDays": 9,
          "stationary": 200,
          "moved": 100
        }
      ]
    }
  }
}