$schema: https://json-schema.org/draft/2020-12/schema
title: CarlOS telemetry data
description: Telemetry data delivery format for CarlOS routers
type: object
properties:
  modem-signal:
    description: Modem signal levels
    type: array
    items:
      type: object
      properties:
        name:
          description: Modem interface name
          type: string
        gsm:
          description: Signal level when connected using GSM/2G
          type: object
          properties:
            rssi:
              description: Received Signal Strength Indication, dBm
              type: integer
            band:
              description: GSM band used, frequency in MHz
              type: integer
            chains:
              description: Per RX chain (antenna) signal information
              type: array
              items:
                type: object
                properties:
                  rssi:
                    description: RX chain RSSI, dBm, if chain tuned
                    type: integer
          required:
          - rssi
          additionalProperties: false
        umts:
          description: Signal level when connected using UMTS/3G
          type: object
          properties:
            rssi:
              description: Received Signal Strength Indication, dBm
              type: integer
            ecio:
              description: UMTS EC/IO quality indicator, dB
              type: integer
            band:
              description: UMTS UTRA band number used
              type: integer
            chains:
              description: Per RX chain (antenna) signal information
              type: array
              items:
                type: object
                properties:
                  rssi:
                    description: RX chain RSSI, dBm, if chain tuned
                    type: integer
                additionalProperties: false
          required:
          - rssi
          - ecio
          additionalProperties: false
        lte:
          description: Signal level when connected using LTE/4G
          type: object
          properties:
            rssi:
              description: Received Signal Strength Indication, dBm
              type: integer
            rsrp:
              description: Reference Signal Received Power, dBm
              type: integer
            rsrq:
              description: Reference Signal Received Quality, dB
              type: integer
            sinr:
              description: Signal to Interference plus Noise Ratio, dB
              type: integer
            band:
              description: LTE EUTRA band number used
              type: integer
            bandwidth:
              description: Channel bandwidth in MHz
              type: integer
            chains:
              description: Per RX chain (antenna) signal information
              type: array
              items:
                type: object
                properties:
                  rssi:
                    description: RX chain RSSI, dBm, if chain tuned
                    type: integer
                additionalProperties: false
          required:
          - rssi
          - rsrp
          - rsrq
          - sinr
          additionalProperties: false
        5g:
          description: Signal level when connected using 5G (NSA or SA)
          type: object
          properties:
            rsrp:
              description: Reference Signal Received Power, dBm
              type: integer
            rsrq:
              description: Reference Signal Received Quality, dB
              type: integer
            band:
              description: 5G NR band number used
              type: integer
            bandwidth:
              description: Channel bandwidth in MHz
              type: integer
            chains:
              description: Per RX chain (antenna) signal information
              type: array
              items:
                type: object
                properties:
                  rssi:
                    description: RX chain RSSI, dBm, if chain tuned
                    type: integer
                additionalProperties: false
          required:
          - rsrp
          - rsrq
          additionalProperties: false
      required:
      - name
      additionalProperties: false
  modem-connection:
    description: Modem connection state
    type: array
    items:
      type: object
      properties:
        name:
          description: Modem interface name
          type: string
        state:
          description: |
            Modem connection state:
            - `ue`: Modem available
            - `sim`: Modem has a SIM detected
            - `net`: Modem connected to Mobile Network
            - `pdp`: Modem has PDP context established
            - `ip`: Modem has IP networking up and running
          type: string
          enum:
          - ue
          - sim
          - net
          - pdp
          - ip
        addrs:
          description: |
            Modem IP addresses if in `ip` state, in CIDR notation
          type: array
          items:
            type: string
        mcc:
          description: Mobile Country Code, if connected
          type: integer
        mnc:
          description: Mobile Network Code, if connected
          type: integer
        operator:
          description: Mobile Virtual Network Operator name, if connected
          type: string
      required:
      - name
      - state
      additionalProperties: false
  modem-info:
    description: Modem hardware information
    type: array
    items:
      type: object
      properties:
        name:
          description: Modem interface name
          type: string
        driver:
          description: Modem driver description
          type: string
        revision:
          description: Modem firmware version string
          type: string
        imei:
          description: IMEI of modem
          type: string
      required:
      - name
      additionalProperties: false
  modem-sim:
    description: Modem SIM state
    type: array
    items:
      type: object
      properties:
        name:
          description: Modem interface name
          type: string
        slot:
          description: SIM slot associated to the modem, 0 if no association
          type: integer
        imsi:
          description: IMSI of associated SIM
          type: string
        iccid:
          description: ICCID of inserted SIM
          type: string
      required:
      - name
      - slot
      additionalProperties: false
  gps-location:
    description: GPS location data
    type: object
    properties:
      lat:
        description: Latitude in degrees
        type: number
      lon:
        description: Longitude in degrees
        type: number
      alt:
        description: Altitude in meters
        type: number
      elat:
        description: Latitude error estimate in meters
        type: number
      elon:
        description: Longitude error estimate in meters
        type: number
      ealt:
        description: Estimated vertical error in meters
        type: number
    additionalProperties: false
  gps-velocity:
    description: GPS velocity data
    type: object
    properties:
      track:
        description: Course over ground, degrees from true north
        type: number
      speed:
        description: Speed over ground, m/s
        type: number
      climb:
        description: Climb (positive) or sink (negative) rate, m/s
        type: number
      etrack:
        description: Direction error estimate in degrees
        type: number
      espeed:
        description: Speed error estimate in m/s
        type: number
      eclimb:
        description: Climb/sink error estimate in m/s
        type: number
    additionalProperties: false
  gps-satellites:
    description: List of GPS satellites in view
    type: array
    items:
      type: object
      properties:
        id:
          description: PRN ID of the satellite
          type: integer
        used:
          description: Satellite in use for location service
          type: boolean
        azim:
          description: Azimuth, degrees from true north
          type: number
        elev:
          description: Elevation in degrees
          type: number
        sig:
          description: Signal strength in dB
          type: number
      required:
      - id
      - used
      - azim
      - elev
      - sig
      additionalProperties: false
  wifi-ap-stations:
    description: WiFi AP mode station associations
    type: array
    items:
      type: object
      properties:
        name:
          description: WiFi interface name
          type: string
        up:
          description: True if AP is up and operational
          type: boolean
        stas:
          description: Associated stations
          type: array
          items:
            type: object
            properties:
              mac:
                description: Hex encoded station MAC address
                type: string
            required:
            - mac
      required:
      - name
      - up
      - stas
      additionalProperties: false
  wifi-cli-connection:
    description: WiFi client mode connection info
    type: array
    items:
      type: object
      properties:
        name:
          description: WiFi interface name
          type: string
        ssid:
          description: SSID connected to
          type: string
        bssid:
          description: Hex encoded MAC of AP connected to
          type: string
        channel:
          description: Channel number in use
          type: integer
        rx:
          description: RX signal strength of last received PPDU, in dBm
          type: integer
        rx-avg:
          description: RX signal strength average, in dBm
          type: integer
        signal:
          description: RX signal strengths, per antenna, in dBm
          type: array
          items:
            type: integer
        signal-avg:
          description: RX signal strengths, per antenna, in dBm
          type: array
          items:
            type: integer
      required:
      - name
      - ssid
      - bssid
      - channel
      - rx
      - rx-avg
      additionalProperties: false
  wifi-mesh-peers:
    description: WiFi mesh mode connection info
    type: array
    items:
      type: object
      properties:
        name:
          description: WiFi interface name
          type: string
        peers:
          description: List of connected peers
          type: array
          items:
            type: object
            properties:
              mac:
                description: Hex encoded MAC of peer
                type: string
            required:
            - mac
      required:
      - name
      - peers
    additionalProperties: false
  wifi-probes:
    description: Collected WiFi probe request packets
    type: array
    items:
      type: object
      properties:
        name:
          description: WiFi interface name
          type: string
        probes:
          description: Probe entries for each distinct probe data
          type: array
          items:
            type: object
            properties:
              data:
                description: Raw probe data payload after management header
                type: string
              macs:
                description: List of client MAC addresses having sent this probe
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: object
                    properties:
                      t:
                        description: Timestamp, milliseconds since epoch
                        type: integer
                      seq:
                        description: Probe request sequence number
                        type: integer
                      sig:
                        description: Per antenna-index signal level, in dBm
                        type: array
                        items:
                          type: integer
                    required:
                    - t
                    - seq
                    additionalProperties: false
            required:
            - data
            - macs
            additionalProperties: false
      required:
      - name
      - probes
      additionalProperties: false
  voltage:
    description: Voltage measurement
    type: array
    items:
      type: object
      properties:
        name:
          description: Voltage measurement point
          type: string
        voltage:
          description: Current value measured, in mV
          type: integer
        logical:
          description: Logical high/low value for measurement
          type: boolean
      required:
      - name
      - voltage
      - logical
      additionalProperties: false
  temperature:
    description: Temperature measurement
    type: array
    items:
      type: object
      properties:
        name:
          description: Temperature sensor name
          enum:
          - chassis
          - cpu
          - system-disk
          - ssd
          - ssd1
          - ssd2
          - lan0
          - lan1
          - lan2
          - lan3
          - lan4
          - lan5
          - sfp0
          - wfi0
          - wfi1
        voltage:
          description: |
            Current temperature, in milli-degrees Celsius. Can be missing if
            a sensor is availabe, but currently does not provide temperature
            readings.
          type: integer
        threshold:
          description: |
            Threshold temperature, in milli-degrees Celsius. If the current
            temperature exceeds this threshold, the affected component may
            operate in a throttled mode to prevent overheating.
          type: boolean
      required:
      - name
      additionalProperties: false
  cpu-usage:
    description: CPU usage measurement
    type: object
    properties:
      duration:
        description: Duration covered in this measurement, ms
        type: integer
      cores:
        description: Measurement data, per logical core
        type: array
        items:
          type: object
          properties:
            user:
              description: Relative time in user mode, per mill
              type: integer
            nice:
              description: Relative time in niced user mode, per mill
              type: integer
            system:
              description: Relative time in system mode, per mill
              type: integer
            idle:
              description: Relative time core is idling, per mill
              type: integer
            wait:
              description: Relative time waiting for I/O, per mill
              type: integer
            irq:
              description: Relative time core is servicing interrupts, per mill
              type: integer
            softirq:
              description: Relative time in soft interrupts, per mill
              type: integer
            guest:
              description: Relative time running guest virtual machines, per mill
              type: integer
          required:
          - user
          - nice
          - system
          - idle
          - wait
          - irq
          - softirq
          - guest
          additionalProperties: false
    required:
    - duration
    - cores
    additionalProperties: false
  disk-usage:
    description: Disk storage partition usage information
    type: array
    items:
      type: object
      properties:
        location:
          description: Alias for the partition location
          type: string
        total-size:
          description: Total size of mounted partition in bytes
          type: integer
        used-size:
          description: Used size of mounted partition in bytes
          type: integer
      required:
      - location
      - total-size
      - used-size
      additionalProperties: false
  disk-info:
    description: Disk static hardware information
    type: array
    items:
      type: object
      properties:
        name:
          description: Name of the disk
          type: string
          pattern: ^(SSD[12]?|INTERNAL)$
        model:
          description: Disk model string
          type: string
        serial:
          description: Disk serial number string
          type: string
        firmware:
          description: Disk firmware version string
          type: string
        size:
          description: Total size of disk, in bytes
          type: integer
      required:
      - name
      - model
      - serial
      - firmware
      - size
      additionalProperties: false
  disk-health:
    description: Disk health information
    type: array
    items:
      type: object
      properties:
        name:
          description: Name of the disk
          type: string
          pattern: ^(SSD[12]?|INTERNAL)$
        good:
          description: Disk health self assessment status, true if healthy
          type: boolean
        temp-current:
          description: Current disk temperature in °C
          type: integer
        temp-min:
          description: Minimum disk temperature in °C
          type: integer
        temp-max:
          description: Maximum disk temperature in °C
          type: integer
        bad-sectors:
          description: Number of bad sectors on disk
          type: integer
          minimum: 0
        power-on-hours:
          description: Time disk has been powered on, in hours
          type: integer
          minimum: 0
        power-cycles:
          description: Times disk has been power-cycled
          type: integer
          minimum: 0
        power-off-retract-count:
          description: Times unexpectedly powered off
          type: integer
          minimum: 0
      required:
      - name
      additionalProperties: false
  ip-addr:
    description: Layer 3 IP addresses of interfaces
    type: array
    items:
      type: object
      properties:
        name:
          description: Network interface name
          type: string
        addrs:
          description: IPv4 or IPv6 address string with prefix, CIDR notation
          type: array
          items:
            type: string
      required:
      - name
      - addrs
      additionalProperties: false
  mac-addr:
    description: MAC addresses of physical interfaces
    type: array
    items:
      type: object
      properties:
        name:
          description: Network interface name
          type: string
        mac:
          description: MAC address, as hexstring
          type: string
      required:
      - name
      - mac
      additionalProperties: false
  mem-usage:
    description: System memory usage measurement
    type: object
    properties:
      total:
        description: Total system memory available, in kB
        type: integer
      free:
        description: Unused system memory, in kB
        type: integer
      buffers:
        description: Used for buffers or storage for raw block devices, kB
        type: integer
      cached:
        description: Cache for files read from disk, page cache, kB
        type: integer
    required:
    - total
    - free
    - buffers
    - cached
    additionalProperties: false
  network-tests:
    description: Network test results
    type: object
    patternProperties:
      ^[a-zA-Z0-9\-\._~:]+$:
        description: Named network test
        type: object
        properties:
          down-loss:
            description: Pkt losses from server to client, in permille
            type: integer
          up-loss:
            description: Pkt losses from client to server, in permille
            type: integer
          down-duplicate:
            description: Pkt dups from server to client, in permille
            type: integer
          up-duplicate:
            description: Pkt dups from client to server, in permille
            type: integer
          down-reorder:
            description: Pkts arrived out of order, from server to client, in permille
            type: integer
          up-reorder:
            description: Pkts arrived out of order, from client to server, in permille
            type: integer
          connection-reset:
            description: TCP connection resets, absolute value
            type: integer
          success-rate:
            description: Rate of successful operations, in percent
            type: integer
          rtt-average:
            description: Average round-trip time, in us
            type: integer
          rtt-median:
            description: Median of round-trip time, in us
            type: integer
          rtt-median-best:
            description: Median round-trip time of the 20% best measurements, in us
            type: integer
          rtt-median-worst:
            description: Median round-trip time of the 20% worst measurements, in us
            type: integer
          rtt-jitter:
            description: Average round-trip jitter estimation in RTT, as per RFC 3550
            type: integer
          down-rate-peak:
            description: Download rate, in kbit/s
            type: integer
          up-rate-peak:
            description: Peak upload rate, in kbit/s
            type: integer
          down-rate-average:
            description: Average download rate, in kbit/s
            type: integer
          up-rate-average:
            description: Average upload rate, in kbit/s
            type: integer
          progress-average:
            description: Average duration of an operation, in us
            type: integer
          duration-average:
            description: Average completion progress for an operation
            type: integer
        additionalProperties: false
    additionalProperties: false
  service-check:
    description: External Service Monitoring result
    type: object
    properties:
      http:
        description: HTTP request sensor result, if configured
        type: object
        patternProperties:
          ^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*):
            description: External service target URL
            type: object
            properties:
              code:
                description: HTTP response status code, if successful
                type: integer
              error:
                description: |
                  Error string on connection error, one of:
                  - `timeout`: Requested timed out
                  - `interface`: Local interface unavailable
                  - `dns`: DNS lookup failure
                  - `connect`: Connection to server failed
                  - `transfer`: Transferring data failed
                  - `tls`: TLS handshake error
                  - `url`: Invalid or unsupported URL
                  - `redirect`: Too many redirects
                  - `other`: Other unspecified request error
                enum:
                - timeout
                - interface
                - dns
                - connect
                - transfer
                - tls
                - url
                - redirect
                - other
            additionalProperties: false
      icmp:
        description: ICMP ping sensor result, if configured
        type: object
        patternProperties:
          ^([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-f]{0,4}:){2,7}[0-9a-f]{0,4}$:
            description: External service target IP
            type: object
            properties:
              loss-rate:
                description: Percentage of unsuccessful ICMP ping checks
                type: integer
              rtt-average:
                description: Average round-trip time in milliseconds
                type: integer
            required:
            - loss-rate
            - rtt-average
            additionalProperties: false
      snmp:
        description: SNMP sensor OID result, if configured
        type: object
        patternProperties:
          ^([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-f]{0,4}:){2,7}[0-9a-f]{0,4}$:
            description: External service target IP
            type: object
            patternProperties:
              ^([0-2])((\.0)|(\.[1-9][0-9]*))*$:
                description: Checked SNMP OID
                type: object
                properties:
                  value:
                    description: |
                      SNMP value on success. The type of the value is derived
                      from the SNMP type:

                      SNMP type     | JSON type | Remarks
                      ------------- | --------- | ----------
                      `INTEGER`     | integer   | Exact conversion
                      `OCTET_STRING`| string    | If all characters are ASCII
                      `OCTET_STRING`| blob      | If string is non-printable
                      `NULL`        | string    | String with content `(null)`
                      `OID`         | string    | Dotted OID string
                      `IP_ADDRESS`  | string    | IP address as string
                      `COUNTER_32`  | integer   | Exact conversion
                      `GAUGE_32`    | integer   | Exact conversion
                      `UNSIGNED_32` | integer   | Exact conversion
                      `TIME_TICKS`  | integer   | Exact conversion
                      `COUNTER_64`  | integer   | Exact conversion

                      The `blob` type is a base64 encoded string, as outlined
                      in the [Bastard API](bastard.html) specification.
                    type:
                    - integer
                    - string
                  error:
                    description: |
                      Error string on query error, one of:
                      - `timeout`: Requested timed out
                      - `interface`: Local interface unavailable
                      - `access-denied`: The access to the OID was denied
                      - `no-such-object`: No Such Object available at this OID
                      - `no-such-instance`: No Such Instance exists at this OID
                      - `other`: Other unspecified request error
                    type: string
                    enum:
                    - timeout
                    - interface
                    - access-denied
                    - no-such-object
                    - no-such-instance
                    - other
                additionalProperties: false
            additionalProperties: false
    additionalProperties: false
  os-version:
    description: Operating System version information
    type: object
    properties:
      version:
        description: Version information string, `VERSION` from `os-release(5)`
        type: string
      fallback:
        description: If true, the router is in fallback state, else in active
        type: boolean
      uptime:
        description: Unix epoch timestamp of the current system startup
        type: integer
    required:
    - version
    - fallback
    - uptime
    additionalProperties: false
  hostname:
    description: Hostname information
    type: object
    properties:
      hostname:
        description: Hostname of the router
        type: string
    required:
    - hostname
    additionalProperties: false
  hw-info:
    description: Extra hardware information
    type: object
    properties:
      revision:
        description: |
          Hardware revision in unspecified, hardware specific format
        type: string
      production-date:
        description: Production date, in format YYYYMMDD
        type: string
      model-config:
        description: |
          Manufacturer specific config for equipped modules, extensions, etc.
        type: string
      model-variant:
        description: |
          Manufacturer specific variant of hardware: CPU, RAM, connectors, etc.
        type: string
  link-stats:
    description: Link usage statistics
    type: object
    properties:
      duration:
        description: Duration covered in this measurement, ms
        type: integer
      links:
        description: List of network interfaces
        type: array
        items:
          type: object
          properties:
            name:
              description: Network interface name
              type: string
            ^(rx|tx)$:
              description: Inbound/outbound statistics
              type: object
              properties:
                packets:
                  description: Packets received/sent for duration
                  type: integer
                bytes:
                  description: Bytes received/sent for duration
                  type: integer
                errors:
                  description: Send/receive errors during duration
                  type: integer
                dropped:
                  description: Packets dropped due to insufficient buffers
                  type: integer
              required:
              - packets
              - bytes
              - errors
              - dropped
              additionalProperties: false
          required:
          - name
          - rx
          - tx
          additionalProperties: false
    required:
    - duration
    - links
    additionalProperties: false
  link-state:
    description: Physical link state information
    type: array
    items:
      type: object
      properties:
        name:
          description: Physical network interface name
          type: string
        lower-state:
          description: Interface lower state, true if up, false if down
          type: boolean
        speed:
          description: Interface speed in Mbit/s, omitted if `lower-state` down
          type: integer
        full-duplex:
          description: Interface duplex, omitted if `lower-state` down
          type: boolean
      required:
      - name
      - lower-state
      additionalProperties: false
  vpn-stats:
    description: Multipath VPN tunnel statistics
    type: object
    properties:
      duration:
        description: Duration covered in this measurement, ms
        type: integer
      uplinks:
        description: List of active uplinks
        type: array
        items:
          type: object
          properties:
            name:
              description: Interface name of uplink
              type: string
            quality:
              description: |
                Estimated uplink quality, higher is better.

                The VPN uplink quality is a quality indicator of the uplink,
                and includes several metrics to calculate a quality number
                between 0-550. The measured quality is calculated based on
                the sum of multiple characteristics, including modem radio
                access technology and reported signal strength, the measured
                uplink RTT and the current load share when multiple uplinks
                are combined.

                The numbers can be interpreted as follows:

                * `0-50`: Uplink is unusable
                * `50-150`: The uplink has significant quality issues
                * `150-250`: The uplink has bad quality
                * `250-350`: The uplink has acceptable quality
                * `350-500`: The uplink has good quality
                * `500-550`: The uplink has excellent quality
              type: integer
              minimum: 0
              maximum: 550
            latency:
              description: Current measured uplink latency, ms
              type: integer
          patternProperties:
            ^(rx|tx)$:
              description: Receive/send statistics for duration
              type: object
              properties:
                bytes:
                  description: Bytes received/sent for duration
                  type: integer
                pkts:
                  description: Packets received/sent for duration
                  type: integer
              required:
              - bytes
              - pkts
          required:
          - name
          - quality
          - rx
          - tx
          additionalProperties: false
    required:
    - duration
    - uplinks
    additionalProperties: false
  vpn-state:
    description: Multipath VPN tunnel state, load per uplink
    type: object
    patternProperties:
      ^.*$:
        description: Configuration name of tunnel
        type: object
        properties:
          selectors:
            description: Tunnel subnet pairs of established tunnels
            type: array
            items:
              type: object
              properties:
                local:
                  description: Local subnet, CIDR notation
                  type: string
                remote:
                  description: Remote subnet, CIDR notation
                  type: string
                uplinks:
                  description: Physical uplinks carrying traffic for selector
                  type: object
                  patternProperties:
                    ^.*$:
                      description: Interface name of uplink
                      type: object
                      properties:
                        load:
                          description: |
                            Current load share for given selector and uplink,
                            in per-mille
                          type: integer
                      required:
                      - load
                      additionalProperties: false
              required:
              - local
              - remote
              - uplinks
              additionalProperties: false
        required:
        - selectors
        additionalProperties: false
    additionalProperties: false
  can-data:
    description: Recorded CAN bus frames
    type: array
    items:
      type: object
      properties:
        ifname:
          description: Interface name
          type: string
        mode:
          description: Frame capturing mode
          enum:
          - raw
          - j1939
        frames:
          description: Frames captured in the measurement interval
          type: array
          items:
            type: object
            properties:
              id:
                description: |
                  Frame type, hex encoded:
                  - CAN-ID in the raw mode
                  - PGN in the j1939 mode
                type: string
              payloads:
                description: Captured payloads
                type: array
                items:
                  type: object
                  properties:
                    data:
                      description: Unique hex encoded payload value
                      type: string
                    timestamp:
                      description: |
                        List of Unix epoch timestamps frame has been seen, in ms
                      type: array
                      items:
                        type: integer
                  required:
                  - data
                  - timestamp
                  additionalProperties: false
            required:
            - id
            - payloads
            additionalProperties: false
      required:
      - ifname
      - mode
      - frames
      additionalProperties: false
  can-fms-data:
    description: Vehicle FMS CAN bus information
    type: array
    items:
      type: object
      properties:
        name:
          description: Interface name on which the information was received
          type: string
        vehicle-id:
          description: Vehicle identification number (VIN)
          type: string
        driver1:
          description: |
            Driver 1 identification number (driver permit number).
            This field is only available if the vehicle is fitted
            with a tachograph.
          type: string
        driver2:
          description: |
            Driver 2 identification number (driver permit number).
            This field is only available if the vehicle is fitted
            with a tachograph.
          type: string
        speed:
          description: Wheel based speed, km/h
          type: number
          minimum: 0
        current-gear:
          description: Current gear, gear number or P/R/N
          type: string
        odometer:
          description: Odometer value, meters
          type: integer
          minimum: 0
          multipleOf: 5
        engine-temperature:
          description: Engine coolant temperature, degrees Celsius
          type: number
        ambient-temperature:
          description: Outside ambient temperature, degrees Celsius
          type: number
        total-fuel-used:
          description: Total fuel used, milliliters
          type: integer
          minimum: 0
        fuel-level:
          description: Fuel tank level, %
          type: number
          minimum: 0
        fuel2-level:
          description: Secondary fuel tank level, %
          type: number
          minimum: 0
        aftertreat-level:
          description: Diesel aftertreatment exhaust fluid tank level, %
          type: number
          minimum: 0
        version:
          description: FMS protocol version
          type: string
        timestamp:
          description: |
            Time at which the last update was made,
            microseconds since Unix Epoch
          type: integer
          minimum: 0
      required:
      - name
      additionalProperties: false
additionalProperties: false
