DaaS API
Docs & Playground
Sync (GetFeed)/GetFeed Trip

GetFeed Triptoken required

One record per trip, when the trip ends.

POST/daas/apiv1— method = "GetFeed", params.typeName = "Trip"

Parameters

typeName is "Trip".

NameTypeRequiredDescription
fromVersionstringoptionalThe toVersion the previous call returned (16 hex digits). Omit on the first call.
search.fromDatedateoptionalFirst call only: start the feed at this time (ISO-8601 UTC). Ignored when fromVersion is sent. Omit both to start 24 hours back.e.g. 2026-10-28T00:00:00Z
resultsLimitnumberoptionalRecords per call. Default and maximum 10,000.e.g. 1000

Sync loop

Call once with search.fromDate (or nothing, to start 24 hours back), then keep sending the last toVersion as fromVersion. Every record is delivered once, in order. An empty data means caught up: wait and call again later with the returned version. Save the version to resume after a restart.

curl
# Requires: jq. Persist $version between runs to resume where you left off.
version=""
while :; do
  if [ -z "$version" ]; then params='{"typeName":"Trip","search":{"fromDate":"2026-10-28T00:00:00Z"}}'
  else params='{"typeName":"Trip","fromVersion":"'$version'"}'; fi
  reply=$(curl -s -X POST 'https://private.develop-1.questar.io/v2/private-questar-units/daas/apiv1' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_TOKEN' \
    -d '{"method":"GetFeed","params":'"$params"'}')
  echo "$reply" | jq -c '.result.data[]'
  version=$(echo "$reply" | jq -r '.result.toVersion')
  [ "$(echo "$reply" | jq '.result.data | length')" = "0" ] && sleep 60
done

Notes

Records come back in version order. Store the reply's toVersion and send it as fromVersion on the next call; an empty data means you are up to date; still store the returned toVersion (it moves to the feed's cutoff) and poll again later. A page never splits records that share a version, so a page can be slightly larger than resultsLimit. Versions are the trip's end time. driver is "UnknownDriverId" when no driver was identified.

Request

curl
curl -X POST 'https://private.develop-1.questar.io/v2/private-questar-units/daas/apiv1' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  --data '{"method":"GetFeed","params":{"typeName":"Trip","search":{"fromDate":"2026-10-28T00:00:00Z"},"resultsLimit":1000}}'
Body
{
  "method": "GetFeed",
  "params": {
    "typeName": "Trip",
    "search": {
      "fromDate": "2026-10-28T00:00:00Z"
    },
    "resultsLimit": 1000
  }
}

Response

200 OK
{
  "jsonrpc": "2.0",
  "result": {
    "data": [
      {
        "id": "1-340951",
        "vehicle": {
          "id": "1-1807952"
        },
        "driver": {
          "id": "1-612132"
        },
        "start": "2026-10-28T04:13:35.000Z",
        "stop": "2026-10-28T04:16:15.000Z",
        "nextTripStart": "2026-10-28T06:26:43.000Z",
        "distance": 0,
        "drivingDuration": "00:02:40",
        "stopDuration": "02:10:28",
        "idlingDuration": "00:02:00",
        "maximumSpeed": 0,
        "averageSpeed": 0,
        "odometer": 210758592,
        "engineHours": 33486480,
        "stopPoint": {
          "x": 34.927434,
          "y": 32.178145
        },
        "speedRange1": 0,
        "speedRange2": 0,
        "speedRange3": 0,
        "version": "000001a180b91298"
      }
    ],
    "toVersion": "000001a180b91298"
  }
}

Errors also come back as HTTP 200, with an error instead of a result. error.data.type says what went wrong: ArgumentException (a bad parameter), MissingMethodException (unknown method) or InvalidOperationException. With no or an invalid token the gateway answers HTTP 401 / 403.

200 OK
{
  "jsonrpc": "2.0",
  "error": {
    "code": -32000,
    "message": "Get does not support typeName 'Media'",
    "name": "JSONRPCError",
    "data": {
      "type": "ArgumentException"
    },
    "errors": [
      {
        "message": "Get does not support typeName 'Media'",
        "name": "ArgumentException"
      }
    ]
  }
}