Put simply, the Auto API is a list of predefined APIs for cars which follow a coherent structure and remain the same, irrespective of the car maker or model and is developed by High Mobility. It is one of the key components in the High Mobility Kit, a full product name for HMKit, that provides a container for the several parameters seen above.
The parameters
Client Serial: a unique identifier which specifies which application is sending the data
Vehicle Serial: a unique identifier which identifies the vehicle to which data is being sent
Auto API: the data format with which the data is passed between the vehicle and the application
Cryptographic signature: a digital signature that enables data verification
The Auto API consists of three levels: capabilities, properties and components. It should be noted that Auto API is a list of predefined APIs - meaning that each capability, property and component is grouped into smaller API categories (e.g. “Diagnostics” or “Charging”).
Capability
Capabilities describe a technical category of related Auto API properties.
ID: the unique identifier for a capability;
Message type: a message transmitted, for instance - “get diagnostics state”;
Size: the size of the properties payload.
Property
Properties describe the technical names for Auto API data points.
ID: the unique identifier for a property;
Size: the size of the components payload.
Component
The component includes the value and a timestamp — which indicates when the value was read — or a failure message.
Code example
In the below graphic, you can see 0’s and 1’s in the hex messages, which is the orange text at the top. After parsing it with the iOS library, we get the first section of white text, a human-readable text describing the Vehicle Status.
The Vehicle Status (a Capability) includes the car's VIN (a Property) and its name, as well as other details about the car and powertrain, as well as the latest updates on the requested vehicle states (Capabilities). In this example, the Vehicle Status also indicates that the Trunk (a Capability) is unlocked and open (both Properties).