Skip to main content

Kafka API

Alongside our REST API, Hiboo also exposes a Kafka API for customers who need equipment data delivered as a continuous, low-latency stream rather than fetched on demand.

When to use the Kafka API​

The REST API is the primary way to integrate with Hiboo and covers most use cases: fleet browsing, history, snapshots, and reporting. The Kafka API complements it when you need:

  • Real-time data: events are pushed as soon as Hiboo processes them, with no polling delay.
  • Push-based integrations: a natural fit for streaming pipelines, data lakes, and event-driven architectures.
  • High-throughput ingestion: built to handle large fleets without the overhead of pagination or rate management.
note

Not sure which one you need? Start with the REST API. The Kafka API is an add-on for streaming use cases and requires a dedicated onboarding.

Authentication with mTLS​

The Kafka API is secured with mutual TLS (mTLS). Unlike the REST API, it uses no x-access-token header: the client proves its identity with a certificate issued by Hiboo.

When your Kafka access is provisioned, Hiboo provides:

  • A client certificate (.crt)
  • A private key (.key)
  • The CA certificate used to verify the broker (ca.crt)
  • The list of bootstrap brokers and the topic you are authorized to consume
note

Treat the private key like any other secret: store it securely, never commit it to source control, and request a new one if you suspect it has been exposed.

Topic & message format​

Each customer is provisioned with a single dedicated topic carrying all of their time-series data. There is no need to subscribe to multiple topics: every dataKind (positions, fault codes, fuel, operating hours, and so on) flows through the same stream.

Each message is a JSON object. The dataKind field tells you which type of data you are reading.

Key fields to know:

  • assetId: the Hiboo equipment identifier, matching the id returned by the REST fleet endpoints.
  • datetime: the UTC timestamp of the event (ISO 8601). Daily data kinds use date instead.
  • dataKind: the type of data carried by the message. Use it to route each message to the right handler on your side.
  • dataSourceCode: the source provider of the message.

Message types​

Every message has the fields above. Each type below lists its dataKind and its other fields, then an example message.

Position​

dataKind: position

Other fields: latitude, longitude, postalAddress, timezone, altitude, speed, heading, precision, origin

{
"assetId": 123456,
"datetime": "2026-04-22T14:49:07.000Z",
"dataKind": "position",
"dataSourceCode": "ocean",
"latitude": 48.85837,
"longitude": 2.294481,
"postalAddress": "5 Av. Anatole France, 75007 Paris, France",
"timezone": "Europe/Paris",
"altitude": null,
"speed": 26,
"heading": null,
"precision": null,
"origin": null
}

Battery voltage​

dataKind: battery_voltage

Other fields: volts

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "battery_voltage",
"dataSourceCode": "volvotrucks_connect",
"volts": 12.5
}

Fault codes​

dataKind: fault_codes

Other fields: level, label, description, extraInfo, status, failureCategory, system

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "fault_codes",
"dataSourceCode": "volvotrucks_connect",
"level": 2,
"label": "D1DIG.1",
"description": "GPMECU - General Purpose Machine Electronic Control Unit 1",
"extraInfo": {"more": "data"},
"status": "fault",
"failureCategory": "threshold_exceeded",
"system": "refrigeration_unit"
}

Sensor boolean​

dataKind: sensor_boolean

Other fields: type, status

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "sensor_boolean",
"dataSourceCode": "samsara",
"type": "checkEngineLights.stopIsOn",
"status": false
}

Cumulative distance​

dataKind: cumulative_distance

Other fields: kilometers

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "cumulative_distance",
"dataSourceCode": "volvotrucks_connect",
"kilometers": 80853.3
}

Cumulative usage hours​

dataKind: cumulative_usage_hours

Other fields: hours

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "cumulative_usage_hours",
"dataSourceCode": "volvotrucks_connect",
"hours": 1802.4
}

Engine condition​

dataKind: engine_condition

Other fields: running, engineNumber

running is a string: on, off or idle. The REST API gives the same state as a boolean running, true for on and idle.

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "engine_condition",
"dataSourceCode": "volvotrucks_connect",
"running": "on",
"engineNumber": "HC17007"
}

Sensor temperature​

dataKind: temperature

Other fields: type, celsius

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "temperature",
"dataSourceCode": "samsara",
"type": "front - ambientTemperature",
"celsius": 21.96
}

Battery level​

dataKind: battery_level

Other fields: percent

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "battery_level",
"dataSourceCode": "volvotrucks_connect",
"percent": 87.5
}

Cumulative active regeneration hours​

dataKind: cumulative_active_regeneration_hours

Other fields: hours

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "cumulative_active_regeneration_hours",
"dataSourceCode": "volvotrucks_connect",
"hours": 120.5
}

Cumulative fuel​

dataKind: cumulative_fuel

Other fields: liters

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "cumulative_fuel",
"dataSourceCode": "volvotrucks_connect",
"liters": 15234.7
}

Cumulative idle fuel​

dataKind: cumulative_idle_fuel

Other fields: liters, engineNumber, tankDesignation

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "cumulative_idle_fuel",
"dataSourceCode": "volvotrucks_connect",
"liters": 812.3,
"engineNumber": "1",
"tankDesignation": "main"
}

Cumulative idle hours​

dataKind: cumulative_idle_hours

Other fields: hours

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "cumulative_idle_hours",
"dataSourceCode": "volvotrucks_connect",
"hours": 342.25
}

Cumulative load count​

dataKind: cumulative_load_count

Other fields: count

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "cumulative_load_count",
"dataSourceCode": "volvotrucks_connect",
"count": 4521
}

Cumulative payload​

dataKind: cumulative_payload

Other fields: tons

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "cumulative_payload",
"dataSourceCode": "volvotrucks_connect",
"tons": 9876.5
}

Cumulative power take off hours​

dataKind: cumulative_power_take_off_hours

Other fields: hours

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "cumulative_power_take_off_hours",
"dataSourceCode": "volvotrucks_connect",
"hours": 56.75
}

DEF remaining ratio​

dataKind: def_remaining_ratio

Other fields: percent, tankCapacityLiters

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "def_remaining_ratio",
"dataSourceCode": "volvotrucks_connect",
"percent": 64.0,
"tankCapacityLiters": 40.0
}

Engine coolant temperature​

dataKind: engine_coolant_temperature

Other fields: celsius

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "engine_coolant_temperature",
"dataSourceCode": "volvotrucks_connect",
"celsius": 88.5
}

Engine load percentage​

dataKind: engine_load_percentage

Other fields: percent

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "engine_load_percentage",
"dataSourceCode": "volvotrucks_connect",
"percent": 42.0
}

EV battery charge cycles count​

dataKind: ev_battery_charge_cycles_count

Other fields: count

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_battery_charge_cycles_count",
"dataSourceCode": "volvotrucks_connect",
"count": 312
}

EV battery current​

dataKind: ev_battery_current

Other fields: amperes

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_battery_current",
"dataSourceCode": "volvotrucks_connect",
"amperes": 125.4
}

EV battery health​

dataKind: ev_battery_health

Other fields: percent

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_battery_health",
"dataSourceCode": "volvotrucks_connect",
"percent": 96.5
}

EV battery level​

dataKind: ev_battery_level

Other fields: percent

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_battery_level",
"dataSourceCode": "volvotrucks_connect",
"percent": 78.0
}

EV battery temperature​

dataKind: ev_battery_temperature

Other fields: celsius

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_battery_temperature",
"dataSourceCode": "volvotrucks_connect",
"celsius": 31.5
}

EV battery voltage​

dataKind: ev_battery_voltage

Other fields: volts

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_battery_voltage",
"dataSourceCode": "volvotrucks_connect",
"volts": 398.2
}

EV charging rate​

dataKind: ev_charging_rate

Other fields: watts

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_charging_rate",
"dataSourceCode": "volvotrucks_connect",
"watts": 22000.0
}

EV charging state​

dataKind: ev_charging_state

Other fields: state, chargingMode

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_charging_state",
"dataSourceCode": "volvotrucks_connect",
"state": "charging",
"chargingMode": "ac"
}

EV discharging rate​

dataKind: ev_discharging_rate

Other fields: watts

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_discharging_rate",
"dataSourceCode": "volvotrucks_connect",
"watts": 15000.0
}

EV energy charged​

dataKind: ev_energy_charged

Other fields: wattHours

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_energy_charged",
"dataSourceCode": "volvotrucks_connect",
"wattHours": 1250000
}

EV energy used​

dataKind: ev_energy_used

Other fields: wattHours

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "ev_energy_used",
"dataSourceCode": "volvotrucks_connect",
"wattHours": 980000
}

Fuel remaining​

dataKind: fuel_remaining

Other fields: percent, tankCapacityLiters

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "fuel_remaining",
"dataSourceCode": "volvotrucks_connect",
"percent": 55.5,
"tankCapacityLiters": 300.0
}

Pressure​

dataKind: pressure

Other fields: type, pascal

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "pressure",
"dataSourceCode": "samsara",
"type": "hydraulicOil",
"pascal": 250000.0
}

Sensor level​

dataKind: sensor_level

Other fields: type, percent

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "sensor_level",
"dataSourceCode": "samsara",
"type": "hydraulicOil",
"percent": 72.5
}

Tyre snapshot​

dataKind: tyre_snapshot

Other fields: isoPositionIndex, flags, pressure, referencePressure, temperature, signalQuality, signalQualityScore

{
"assetId": 100,
"datetime": "2024-09-14T13:08:35.000Z",
"dataKind": "tyre_snapshot",
"dataSourceCode": "samsara",
"isoPositionIndex": 11,
"flags": [
"low_pressure"
],
"pressure": 7.2,
"referencePressure": 8.5,
"temperature": 24.0,
"signalQuality": "good",
"signalQualityScore": 0.92
}

Getting access​

The Kafka API is not self-service. To request access:

  1. Contact us at support@hiboo.io with your use case and expected volume.
  2. Our team provisions your certificates and shares the broker endpoints.
  3. Connect from any Kafka-compatible client (Java, Python confluent-kafka, and others) configured for mTLS.