Skip to main content

Content types

Token routes in the API Reference: Dashboard user token · API key token.

Response envelope

Successful operations return the payload directly (200 OK with DTO JSON). There is no global wrapper like { "data": ... }. Service-layer results use ApiResult / ApiResult<T> internally; controllers map them to HTTP status codes and return either the DTO or the error object as the JSON body (see Errors).
V1 endpoints are not rate-limited. There are no X-RateLimit-* response headers on V1 responses. Rate limiting applies only to V2 (/api/v2/...) endpoints.

Pagination

Only one V1 endpoint is paginated: POST /api/GetCompanyVehiclesBatteryHealth. All other V1 endpoints return their full result set. The paginated response envelope is:
Pagination parameters:

Date and time

  • JSON serialization for DateTime uses custom converters (SimplifiedDateTimeConverter) that write without fractional seconds, e.g. 2026-04-07T14:32:00.
  • Request parameters: pass ISO-like strings that DateTime.Parse accepts (e.g. 2026-04-07T14:32:00 or 2026-04-07T14:32:00Z depending on client). Many actions call DateTime.SpecifyKind(..., Utc) in code—treat replay and position ranges as UTC unless the controller comment says otherwise.
  • TimeSpan in JSON (e.g. trip Duration) uses standard .NET format.

Legacy JSON field names

Several DTOs use legacy spellings for backward compatibility:
  • UserTimeFormated, LastMovementTimeUserFormated (missing “t” in “Formatted”)
  • ConnectionStrengh (missing “g” in “Strength”)
  • LastTimeUTC / secondsAgo on last-time-online DTOs
Clients should bind to these exact names.

Null vs omitted

  • Nullable reference fields may be omitted or null depending on serializer defaults; treat absent optional fields as null.
  • For PositionDto, isOnline is only set in snapshot-based paths; record-based paths may omit or default it.