Skip to main content

gRPC API

Connection​

Serverapi.vestigeview.app:443 (gRPC over TLS)
Servicevestige.api.v1.ApiService
Service definitionDownload vestige-api.proto
ReflectionEnabled
AuthBearer token, see Authentication

There is no official SDK. Generate a client for your language from vestige-api.proto with the standard gRPC tools. You can also explore the API with Postman or grpcurl, which read the service definition through reflection:

grpcurl -H "authorization: Bearer $TOKEN" api.vestigeview.app:443 list vestige.api.v1.ApiService

grpcurl -H "authorization: Bearer $TOKEN" -d '{}' \
api.vestigeview.app:443 vestige.api.v1.ApiService/GetAssets

Every call sees only the vehicles and drivers of the account your credentials belong to.

Methods​

MethodReturnsAccess
GetAssetsAll vehicles: ID and nameRead
GetAssetStatusesLatest odometer, ignition, location, engine hours, battery level of one vehicleRead
GetAssetExtendedPropertiesVIN, year, make, model, colour of one vehicleRead
GetAssetDiagnosticTroubleCodeDailyBucketsDiagnostic trouble codes per day, for a date rangeRead
GetDriversAll drivers: ID and nameRead
PushDriverAssignmentRecords that a driver took a vehicleWrite
UnassignVehicleRecords that a vehicle has no driverWrite
UnassignDriverRecords that a driver has no vehicleWrite
GetDriverCoachingWorklistSafety events waiting on a manager, a driver or the assignment (preview)Read
GetFleetSafeDrivingThe fleet's safety event rate, band and trend (preview)Read

GetAssets​

Takes no parameters. Returns every vehicle with its Id and Name. Drivers are not included; use GetDrivers for those.

GetAssetStatuses​

Returns the latest known value of each status you ask for.

{
"AssetId": "0b7d9f3e-6a4c-4d8e-9a59-3d2f1c0e8b71",
"StatusTypes": ["LOCATION", "IGNITION", "ODOMETER"]
}
note

List every status you want in StatusTypes. A status you do not list is not returned.

Status typeValueUnit
ODOMETERValuekm
IGNITIONValuetrue = on
LOCATIONLatitude, Longitude, Speed, Address, DisplayNamedegrees, km/h
ENGINEONDURATIONValuehours
ENGINEBATTERYLEVELValuevolts

Each status has its own Date: the time the vehicle reported that value. A status the vehicle has never reported is missing from the reply.

GetAssetExtendedProperties​

Returns the properties of one vehicle that you ask for by key:

KeyMeaning
Asset.Details.VinVIN
Asset.Details.YearModel year
Asset.Details.MakeMake
Asset.Details.ModelModel
Asset.Details.ColorColour

GetAssetDiagnosticTroubleCodeDailyBuckets​

Returns the diagnostic trouble codes of one vehicle, grouped by day. FromDate and ToDate use the format yyyy-MM-dd.

GetDrivers​

Takes no parameters. Returns every driver with its Id and Name.

Driver assignment​

These calls change data in VestigeView, so read-only credentials cannot use them. Credentials without write access receive PERMISSION_DENIED. Contact us if your integration needs to write.

  • PushDriverAssignment records that a driver took a vehicle at a point in time. VehicleId comes from GetAssets, DriverId from GetDrivers.
  • UnassignVehicle records that a vehicle has no driver from a point in time. It does not say where the previous driver went.
  • UnassignDriver records that a driver has no vehicle from a point in time. It does not say who now has the vehicle. Use it when you know the driver finished, not that the vehicle became empty.

For all three:

  • Date is UTC with whole-second resolution. Sub-second values and future dates are rejected.
  • A reply of Accepted: true means the change is queued. It is applied moments later, so a read straight after may not show it yet.

Driver Coaching (preview)​

:::caution Sample data These two calls are a preview. Every account gets the same sample fleet, not its own drivers and events. Every reply has SampleData: true so your integration can tell. Use them to try an integration, not to build on. The message shapes will stay when real data arrives. :::

Rates are safety events per 1,000 miles, because that is how the bands are defined. A lower rate is better. Speeds and the main distance are in km and km/h, as elsewhere in this API.

GetDriverCoachingWorklist​

Returns the safety events that are still waiting on someone, in three queues:

QueueWaiting onStatuses
DRIVER_COACHING_QUEUE_WAITING_ON_YOUA manager: a review, or a dispute to answerPendingReview, Disputed
DRIVER_COACHING_QUEUE_WAITING_ON_DRIVERSThe driver: to acknowledge or disputeReleased
DRIVER_COACHING_QUEUE_WAITING_ON_ASSIGNMENTNobody: the driver assignment window is still openSettling
{
"Queue": "DRIVER_COACHING_QUEUE_WAITING_ON_YOU",
"DriverId": ""
}

Both fields are optional. Leave out Queue for all three queues, and DriverId for every driver.

  • Items come in queue order, then soonest DueAt first. DueAt is when the wait runs out.
  • There is no date range. The oldest item is the most urgent one.
  • Each item has the event, the driver, the vehicle, the event type, the address, Speed in km/h, and whether there is footage.

GetFleetSafeDriving​

Returns what the Fleet safe driving card on the Fleet Safety dashboard shows.

{ "Period": "last30" }

Period is last30 (the default) or a calendar month as yyyy-MM. Any other value returns INVALID_ARGUMENT.

FieldMeaning
SafetyEventsPer1000MilesThe fleet's rate for the period. Missing when the fleet drove too little
FleetBandThe band the rate falls in
BandsAll five bands, best first. Key is the position (top, upper, middle, lower, bottom) and never changes. Name is what the account calls it. UpperLimit is missing for the bottom band
NextThe band above, and the Gap: how much lower the rate must go to reach it. Missing in the best band
SafetyEvents, Distance, DistanceMilesThe totals behind the rate. Distance is in km
DriversRated, DriversTotalDrivers with enough distance in the period to have a rate, out of all drivers
TrendThe last eight weeks, oldest first. It does not follow Period. Pending above zero means the week can still rise
TrendChangeThe newer four weeks against the older four. Negative is better

Errors​

Status codeCause
UNAUTHENTICATEDThe token is missing, wrong or expired
PERMISSION_DENIEDYour credentials cannot do this, for example a write with read-only access
INVALID_ARGUMENTA parameter is malformed, for example an ID that is not a GUID or a bad date
NOT_FOUNDThe vehicle or driver does not exist, or is not in your account