The Auto API specification is an open source vehicle data model built for the purpose of providing a consistent data protocol for communication between cars and external 3rd party services.
The API is divided into capabilities
that group together APIs with similar semantics.
The .yml
spec files define each capability (API).
A capability could have:
- state - transmitted from the vehicle to a connected device
- getters - requesting information from the vehicle
- setters - sending commands to the vehicle
Every capability defines a set of properties
that are grouped together to create the API components (commands) above.
Properties
are used as the basic building blocks to transmit data and can additionally consist of failure and/or timestamp components.
Each property defines itself with:
- identifier - property ID that's unique in a capability (also used to request specific data from the vehicle)
- size - size of the components
- components... - like data and timestamp
Please find more info about the properties in the spec.
Generatable: From version L11, the spec is written to encourage automatic generation of platform native libs (by creating a parser for that).
Dynamic: The definitions can be easily updated and dependent libs regenerated. When only adding capabilities and properties - older libs-parsers work as before.
Modular: The data flow is designed to be modular, while still trying to keep the package size small for the benefit of low-bandwith connections.
Check out the spec for more details on the structure and logic, or some libs generatated on this spec: iOS, Android, Elixir.
Documentation at high-mobility.com is also generated based on this spec and combines all the information into a more readable form.
When not implementing this spec directly, the site above is recommended as the main reference point to the API.
Some capabilities to check out from there: Charging, Doors, Vehicle Location and Vehicle Status.
We would love to accept your patches and contributions to this project. Before getting to work, please first discuss the changes that you wish to make with us via GitHub Issues, Spectrum or Slack.
See more in CONTRIBUTING.md
This repository is using MIT license. See more in LICENSE