Changelog

Fleet Clearance API support for filtering parameters

It’s now possible to filter the results when retrieving the list of clearances for your application. This can be especially useful when your list of clearances grow over time, while being super helpful already for smaller operations as you can filter based on the clearance state, tags or even the approval date.

The filtering option has been added to the GET /v1/fleets/vehicles endpoint that now allows you to pass in a JSON object with the conditions that should be applied before returning the results. There are many different conditions that you can filter on:
  • Filter by VIN(s) and brand(s)
  • Filtering by the status or among a list of statuses
  • Filtering by the newly added tags
  • Filtering by insertion or approval dates, with many options such as before/after certain dates
The filter object consists of an operator key, which specifies how the filter is applied:
  • eq for matching an exact value
  • in when passing in a list of allowed matches
  • gt when filtering on dates that are greater than the input value
  • gte when filtering on dates that are greater than or equal to the input value
  • lt when filtering on dates that are less than the input value
  • lte when filtering on dates that are less than or equal to the input value
Here’s an example of filtering by status:
Here’s another example when filtering on an approval date starting from January 1st, 2024:
Head over to the Fleet Clearance API Specification for the full endpoint description and examples.

Fleet Clearance API allows for customer tags

We have added support for tags to the Fleet Clearance API that allows you to optionally pass in custom information when creating new clearances.

Tags are key/value objects that contain information specific to you. It could for instance be:
  • Identifiers that reference your internal database records
  • Categorisation for your use-cases
  • Segmentation for sub-fleets
Here’s an example of adding a tag with the name “sub-fleet” that holds a UUID as the key. It is wrapped in the request body for creating a new clearance:
Head over to the Fleet Clearance API Specification for the full endpoint descriptions.

OAuth2 support for Client Credentials

We now support fleet customers to make use of OAuth2 to authenticate with all of our API endpoints. This update consolidates different types of authentication methods for different endpoints and makes a client implementation much simpler. As an example, you can now authenticate once and then perform both vehicle clearance activation and data retrieval with the same token.

With this change, we deprecate two authentication methods:
  • Service Account Token API
  • Client Certificate authentication for our Data API
All tutorials in our docs have been updated to show examples of how to authenticate using OAuth2.

The old methods of authenticating will still remain fully supported over a longer period of time.

Head over to the OAuth 2.0 Client Credentials docs for the full details.

Vehicle Data API replaces REST Auto API v5

We have released a new version of our REST API that is used for reading the latest state of telematics data from a vehicle. This update both simplifies the needed configuration for authentication and reduces the amount of endpoints that are needed to consume data.

Changes:
  • Base URL changed from rest-api.high-mobility.com/v5 to api.high-mobility.com/v1
  • One fleet account Access Token can now be used to retrieve data from any activated vehicle
  • The new endpoint to use is /vehicle-data/autoapi-13/{vin} whereas the VIN is passed into the URL. 
The REST Auto API v5 will remain fully supported over a longer period of time.

Head over to the Vehicle Data API OpenAPI Specification to see the full endpoint reference

Fleet pseudonymization

It is now possible for fleet customers to receive vehicle data that has been pseudonymized. This means in practice that the VIN (Vehicle Identification Number) is replaced by a pseudonym that can not directly be linked to a VIN.

This has the benefit of enabling use-cases where you need statistical data from vehicles in your fleet, but do not want to associate the data with individual vehicles.

The pseudonymization layer adds value to customers with existing fleets. For the sake of clarity, it's not possible to access anonymised data from unrelated vehicles.

Head over to the Pseudonymization Tutorial to get started.

MQTT Access Token lifecycle changes

Previously, fleet customers had to first create an Access Token before receiving data through our MQTT broker. With this update, this is no longer necessary. As soon as a vehicle has been activated, its data is put onto the MQTT feed.

In addition to that, it’s possible to revoke vehicles directly through the Service Account API by passing in the VIN. This means that the OAuth2 API no longer has to be implemented, unless any of our pull-based APIs are used in parallel. Check out the DELETE /fleets/vehicles/{vin} endpoint for more details.

We hope that these changes will support more flexible integration methods. Happy streaming!

Mercedes-Benz streaming data

It’s now possible to consume streaming data through MQTT for Mercedes-Benz fleet vehicles. With this addition, we now support streaming data for a total of 11 brands: BMW, Mercedes-Benz, Ford, Peugeot, Citroën, DS Automobiles, Opel, Vauxhall, Fiat, Alfa Romeo and Jeep.

Head over to the MQTT Tutorial to get started with testing.

Geofencing API

We are glad to introduce geofencing functionality for fleet applications. It’s now possible to create geofences and assign vehicles to different zones, which can be any freely drawn boundary or e.g. country boundaries. Any time the vehicle enters or exits a zone, we notify your service through webhook deliveries.

The configuration of geofences and notifications are done through the Service Account API, which has been expanded with geofencing endpoints.

Here’s a list of the main highlights:
  • The geometrical boundaries of a geofence is done through the GeoJSON open format.
  • It’s possible to assign a vehicle to several zones.
  • The entered and exited events are supported
  • It’s possible to look up the last 5 events for any vehicle
Geofencing works today for all Stellantis vehicles. Support for Mercedes-Benz, BMW, MINI and Ford are added next month in April. Go ahead and follow the Geofencing Tutorial in our docs to get started.

REST API v5

We now have a v5 of the REST API, which will replace v4 over time. This version update is focused on improving efficiency and speed. There are no changes in the endpoints or even the response format, which makes a migration fast. Nevertheless we have published a new version as the JWT that is used for authentication is now created with a slightly updated payload.

Here’s the changes that have been done:
  • The fields api_version and access_token have been renamed to ver and sub respectively
  • Version field ver should be set to 3.0
  • The field app_id is no longer required
  • A new field named iss that holds the client serial number is required.
The code in your project should look something like this when using REST API v5:
The code snippets that you find under your applications in the console have been updated, which means that you can simply copy the new snippet to get the new values. The examples in the REST API Tutorial have been updated to use v5.
Version 4 (v4) of the REST API will be deprecated June 30th, 2022.

MQTT Auto API broker

There is now a new way to consume vehicle data from our platform through the MQTT protocol. By using MQTT, you can subscribe to data updates from one central broker and get a continuous data stream from all vehicles that are activated for your application or service.

Using MQTT will bring you the following benefits:
  • Move from poll-based to push-based API usage.
  • Subscribe to any data updates for vehicles that you have access to through a single TCP/TLS connection.
  • Work with a well-established standard, MQTT, with excellent tools for all platforms and operating systems.
  • Continue to work with data payloads based on the Auto API JSON schema.
  • It enables advanced use-cases that rely on events and car data updates being streamed second-by-second.
Head over to the Getting started with MQTT article in our docs to find out more and to try it out yourself.

GraphQL API

Today we are welcoming a new member to our API and SDK family for retrieving vehicle data — a GraphQL API. The GraphQL API enables flexible querying of data, thus enabling you to:
  • Query data points you are interested in and no more.
  • Reduce the number of requests by unifying them into a single one.
  • Use a strong type system that allows you to only ask for data that is possible to return.
  • Work with clear and helpful errors for mistyped queries.
  • Use introspection - a GraphQL client can query the schema dynamically.
  • Match returning JSON easily with the query.
You can find all details in the Getting started with GraphQL article in our docs.

Auto API Level 13

This protocol update brings new properties to the supported dataset. In addition to that, three new capabilities are introduced:
  • ADAS
  • Charging Session
  • Crash
Level 13 is fully backwards compatible with Level 12 and introduces no breaking changes. All new SDK releases provide native support for Level 13, while REST API v4 has been updated to support the new properties. You'll find the full changelog on GitHub.

AutoAPI Swift (iOS) 13.0.0

New AutoAPI level 13 binary-to-swift and back parser.

This release is mostly additive, with only minor API changes:
  • AutoAPI enums (starting with AA) are changed to have a RawValue == String.
  • To still access the byte-value, one should use the .byteValue property (instead of the previous .rawValue, which now returns a String value).
  • Additions to the spec (new capabilities, properties and types) can be found here.
  • Changes to the spec (deprecations and modifications to existing types, properties and capabilities) can be seen here.
The Auto API spec can always be inspected for more details here.

Java Auto API 3.13.0

  • Update to Auto API L13 spec
  • Replace PropertyComponentFailure.Reason with custom type value.Failure
  • Release is now in mavenCentral

Node.js SDK v13

This release is mostly additive, with minor API changes:
  • Additions to the spec (new capabilities, properties and types) can be found here.
  • Changes to the spec (deprecations and modifications to existing types, properties and capabilities) can be seen here.
Telematics commands no longer accept deprecated properties.

Fleet SDK 0.2

The first public release of the Fleet SDK.

HMKit Crypto Telematics 0.1

Crypto implementation in Java. Used for Fleet SDK and other crypto.

Java Auto API 3.12.1

Rename Runtime enum to Environment, which contains values Owner and Vehicle.

Move to mavenCentral()

From now on, Java packages will be published on mavenCentral(). Their group ID will be changed from `com.highmobility` to `com.high-mobility`. All of the previous releases will retain their group ID and will be available until the closing of JCenter on February 1st 2022.

Auto API Level 12

The protocol has been upgraded with new data points and capabilities, some highlighted here:
  • Ability to transmit the unit type of a value, i.e. odometer value in miles or km-s
  • New capability for static vehicle information (properties split from Vehicle Status)
  • Option to access availability information for data points, i.e. rate of update
More details can be found here.

Node SDK v12.0.0

Implemented Auto API Level 12:
  • Added availability getters: hmkit.commands.Charging.getAvailability()
  • Added units
  • The minimum supported version of node.js is now v10.0.0
  • The historical capability's state property now returns a timestamp
  • Getter commands now accept an optional array of property names (previously of property IDs)
  • Fixed a bug that resulted in incorrectly parsing timestamps

AutoAPI Swift (iOS) 12.0.0

New Auto API Level 12 binary-to-swift and back parser.
  • This library is now only distributed as a Swift Package which is also the main recommended way of using/integrating it.
  • Most notable change from previous L11 is the AutoAPI being able to convey unit-information for different values: properties (and sub-values), that express a measurement, output Measurement now instead of just a decimal number, i.e. engine_power or odometer.
  • Some properties have been deprecated (with a reference to the new property) and a boatload of new ones is added (including new capabilities).
  • Each property now has an availability component that can be fetched with the corresponding getter in a capability.
For more details regarding new data points and other changes, please see the source.

The protocol changes from L11 to L12 can be seen here.

AutoAPI Swift (iOS) 11.0.2

  • Helps Swift compiler with some "difficult" calculations.

Java Auto API 3.12.0

General
  • Add varargs property getters: public GetProperties(byte... propertyIdentifiers)
  • Rename Command.getType() to Command.getCommandType()
  • Arrays have been changed to List. eg in Capabilites.supportedCapabilities. Charging.SetTimers, Property.components
  • Rename Command.getType() to Command.getCommandType() so it doesn’t class with Trips.getType()
Level 12

Auto API Level 12 spec is used.
All of the new capabilities/properties have been added/updated/deprecated.

HMKit 2.0.5

  • Fix configuring bluetooth MTU size
  • Change Log level names, they are now Off, Info, Debug, All
  • Fix core logs not shown

CommandQueue 1.1.0

  • Queue is now initialised with QueueConfiguration object.

HMKit Utils 1.4.5

  • Add hexFromByte() method

HMKit Crypto 1.4.6

  • Update core

HMKit iOS 3.2.2

  • Changed HMLocalDevice .links from [HMLink] to Set<hmlink>.</hmlink>
  • Fixed mutable characteristic value updated bug.
  • Fixed HMLocalDevice -disconnect() setting the state to .idle even when BT isn't available.

HMKit Android 2.0.3

This version includes the source code and documentation for easier developing. Also, the release is pushed to jcenter(). This means adding High-Mobility Artifactory url is not necessary anymore.

Command Queue Android 1.0

This is a helper package meant to be used with HMKit Android to queue Bluetooth and telematics commands.

HMKit Android 2.0.2

Open up setting command version. See link.sendCommand() and telematics.sendCommand()

HMKit Core JNI 1.0.1

  • Open up setting command version.
  • Make setMTU() method use int instead of int[].

HMKit Android 2.0.1, Java AutoAPI 3.11.1, HMKit Crypto 1.4.5

These releases add support for Gradle versions greater than 4.6.

REST API v3

  • Implemented Auto API Level 11. This brings some changes to properties and existing API endpoints as well as new API endpoints.
  • REST API endpoints are now dynamically generated based on Node.js SDK which makes the codebase a lot smaller.
  • Most of the automated tests are now dynamically generated.

Auto API 11.0

  • Implemented Auto API Level 11. All commands, responses and validation is generated based on Auto API specification.
  • Command and response automated tests are dynamically generated.
  • Minor changes to command syntax. Read more at Node.js Auto API

Node.js SDK v11

The binary format of the Auto API has been changed to unify properties across commands and simplify the range of different value-types. In addition, the change was done to facilitate automatic generation of platform specific libraries from the Auto API spec.

Updates to the binary format makes this release not compatible with previous versions.

Most capabilities support requesting just a single or more, specific, properties (in addition to the entire state).
  • Capabilities API represents enabled property IDs for a given capability (instead of message types as previously).
  • Windscreen Zone-type has a different binary representation.
  • Door Locks renamed to Doors, Lock/Unlock command now controls Locks State (not Inside Locks State as previously) and 2 new properties that aggregate the specific locks for the vehicle.
  • Engine renamed to Ignition.
  • Added "new" capability Engine which allows to turn the engine on or off.
  • Vehicle Time now returns hours and minutes (not milliseconds from UNIX epoch).

HMKit iOS 3.2.0

  • Renamed HMKit type to HMLocalDevice to be able to use XCFrameworks.
  • All hmkit-named types and methods renamed with localDevice prefix.
  • Increased BT throughput by negotiating the common biggest packed size.
  • Updated data containers and protocol to new version (lib still supports older versions too).
  • Updated Telematics logging options.

Auto API iOS 11.0.0

This is now automatically generated from the Auto API spec and many namings could be a bit different from the previous versions.

Check the Auto API change log for more info.

HMCryptoKit iOS 1.2.14

Fixed the iOS 13 shared key generation issues.

HMUtilities iOS 1.4.6

Fix for HMDebugTree.

Emulator v19.7.0

  • Implemented Auto API Level 11.
  • Capabilities, properties, validation, message handlers, properties encoding and decoding is now dynamically generated based on the specification. This makes adding new properties a lot easier in the future.
  • Added new application permissions view.
  • Fixed assets loading bug.
  • Improved car state initializing.
  • Improved error handling.
  • Minor style fixes.

Java Auto API 3.11.0

The Auto API library is now automatically generated from the specification. This means some class names have changed. Please refer to the Auto API specification for up to date class names.

Colour values are now from 0-255, not 0-1.

HMKit Android 2.0.0

  • Crypto is now ivar in HMKit. Static methods have been changed to non-static.
  • Link states have been updated for core2. See Bluetooth tutorial for more information.
  • Add onAuthenticationFailed callback to LinkListener. This is invoked when authentication fails.
  • Use custom MTU in Bluetooth. This improves communication speeds.
  • HMKit.loggingLevel has been moved to static method HMKit.setLoggingLevel()
  • In ConnectedLinkListener, Rename onAuthorizationRequested() to onAuthenticationRequest()
  • Remove some deprecated methods.

HMKit OEM 2.0.0

  • Rename Telematics to HMKit.
  • HMKit now has an instance. Encrypt/Decrypt functions are still static.
  • Crypto is now ivar in HMKit. It's static methods have been changed to non-static.

HMKit Crypto 1.4.4

  • Crypto methods are now non-static. This clarifies how to use the Crypto: by accessing its ivar from HMKit.java

HMKit Utils 1.4.4

  • Make Bytes set() methods return the Bytes object.

Auto API iOS 10.0.9

  • Added XCFramework creation script
  • Changed AutoAPI to AAAutoAPI to support XCFramework usage
  • Removed "old" universal-lib (fat binary) creation and thinning scripts
  • Updated for Xcode 11 and Swift 5.1
  • Updated to work with SPM (recommended in Xcode 11+)

HMCryptoKit iOS 1.2.12

  • Added XCFramework creation script
  • Fixed signature creation bug
  • Removed HMECKey typealias in favour of SecKey
  • Removed "old" universal-lib (fat binary) creation and thinning scripts
  • Updated for Xcode 11 and Swift 5.1
  • Updated to work with SPM (recommended in Xcode 11+)

HMKit iOS 3.1.0

  • Added XCFramework creation script
  • Changed HMKit to HMLocalDevice (and renamed it's related types too) to support XCFramework usage
  • Removed "old" universal-lib (fat binary) creation and thinning scripts
  • Updated for Xcode 11 and Swift 5.1
  • Updated to work with SPM (recommended in Xcode 11+)
Version 2.5.8 also updated to Xcode 11, Swift 5.1, SPM and XCFrameworks.

HMUtilities iOS 1.4.5

  • Added XCFramework creation script
  • Changed byte-collection hex-output to be lowercased
  • Removed "old" universal-lib (fat binary) creation and thinning scripts
  • Updated for Xcode 11 and Swift 5.1
  • Updated to work with SPM (recommended in Xcode 11+)

HMKit Android 1.6.10

  • Fix OAuth for earlier than Nougat versions.
  • Improve OAuth error messages.
  • Increase web request timeout.

Emulator v19.5.1

  • New telematics permission system.
  • Historical data support.
  • Fixed bug with property timestamp encoding.

Node.js SDK v10.2.0

  • Historical data command support.
  • Added and improved automated tests.

HMKit Android 1.6.9

  • Use Timber for logging. To see the logs, one should call Timber.plant(new Timber.DebugTree()); on app start.
  • Add progress bar to OAuth2 loading state.

Java AutoAPI version 2.10.2

  • Property components are also stored in raw format.
  • Add hood capability.
  • Bug fixes.

iOS AutoAPI version 10.0.5

  • Further improved parsing speed by 20-50%.

iOS HMCryptoKit version 1.2.8

  • Fixed signature's index out of bounds error.

iOS HMKit version 3.1.0

  • Added support for SCC and BEC v2 (no effect on current users).
  • Rewrote HMTelematics (some changes to the interface, mostly regarding Result).
  • Updated all types similar to Swift 5's Result<success, failure=""> to use the native one</success,>
  • Updated OAuth code to use distinct types (i.e. HMOAuthSuccess is now a struct).
  • Other minor fixes and improvements.

iOS HMUtilities version 1.4.1

  • Reintroduced .bytes and .data in UInt8-Collection.

iOS HMCryptoKit version 1.2.7

  • Fixed private key's .bytes output.

iOS Auto API version 10.0.4

  • Improved parsing speed by 100-1000x.
  • Renamed AACommandIdentifier to AACapabilityIdentifier.
  • Other minor fixes.

iOS HMCryptoKit version 1.2.6

  • Updated dependencies and code using them.

iOS HMKit version 3.0.2 Beta

  • Updated dependencies and accompanying frameworks.

iOS HMUtilities version 1.4.0

  • Added -compactMapConcurrently to Collection.
  • Improved HMBytesConvertable's -init-s.
  • Removed .bytes and .data from UInt8 Collection.

Android SDK version 1.6.8

  • This version fixes an issue where certificates were not deleted.

Java Auto API version 2.10.1

  • Fixes crash when parsing invalid command data.

iOS Auto API version 10.0.3

  • Fixed multiple AAItem subtypes.
  • Fixed other minor issues found through tests.
  • Removed obsolete files.

iOS HMUtilities version 1.3.3

  • Fixed Int8's HMBytesConvertable .bytes value.
  • Improved HMBytesConvertable code.

iOS Auto API version 10.0.2

  • Updated to Swift 5.
  • Removed some obsolete types.
Fixes for:
  • AACheckControlMessage
  • AAHistorical
  • AANaviDestination
  • AANotifications
  • AARace
  • Multiple types conforming to AAItem

iOS Auto API version 7.3.4

  • Updated to Swift 5.
  • Updated dependency HMUtilities to 1.3.x.

iOS HMCryptoKit version 1.2.5

  • Updated to Swift 5.

iOS HMKit version 3.0.1 Beta

  • Updated to Swift 5.
  • Fixed Get Device Certificate command.
  • Added MTU Size to BT info characteristic.

iOS HMKit version 2.5.4

  • Updated to Swift 5.

iOS HMUtilities version 1.3.2

  • Updated to Swift 5.

Node.js SDK version 10.0.0

This release includes breaking changes to public API. Note that it's still possible to use the previous Node.js SDK version.
  • All properties are now objects. Currently properties only include value but this improvement prepares us for incoming changes where we can also send timestamp and errors for each property individually.
  • Engine response now returns on instead of powered_on and off instead of powered_off.

REST API v2

New version of the REST API. V1 will still work for some time but it is recommended to upgrade to newer API as soon as possible. Only v2 is enabled for production vehicle data access.
  • V2 sandbox URL https://sandbox.rest-api.high-mobility.com/v2
  • Properties are transformed into objects which will help us to send more data about specific property.
  • Minor error handling improvements.

Java Auto API 2.10.0

This Auto API version includes the public interface changes reflecting the level 10 protocol.

All values are now wrapped in a Property. This means to access the property value, property.getValue() should be called.

Property also has the failure and timestamp components. All of these components are optional.

Guide for migrating to 2.10.0:
  • Property values have to be accessed with Property.getValue(). For instance: LightsState.getAmbientColor() should be changed to LightsState.getAmbientColor().getValue().
  • If the value is null, there might a failure component or this property just does not exist for this vehicle.
  • Some packages have been changed. Many class names are still the same, so delete the invalid import and try to import again.
  • Replace CommandWithProperties with Command.

Android SDK 1.6.7

  • Add refresh token support for OAuth.

Java Auto API 1.7.3

This version includes parsing support for MultiCommand and MultiState. See the code reference for more information.

iOS AutoAPI version 7.3.3

  • Added multi state response to MultiCommand.

iOS HMUtilities version 1.3.1

Fixed signed integer's initialisation for HMBytesConvertable.

iOS AutoAPI version 10.0.1

Fixed AACapability's debugging property .debugTree: HMDebugTree to parse the new L10 properly.

Auto API Level 10

Auto API level 10 brings protocol updates to properties on a binary level. Properties now include data, timestamp and failure components. This allows for better SDK handling of all possible scenarios when getting data across different car brands. The new protocol is defined in on the Auto API Properties overview page.

Additional updates in level 10:
  • All timestamps are now formatted as UNIX Epoch time in milliseconds.
  • Percentages formatted as decimals.

iOS SDK version 2.5.3

  • Fixed OAuth token issues.
  • Added a method for getting an access token with a refresh token.
  • Updated dependencies versions.

iOS SDK version 3.0.0 Beta

  • Rewritten HMKit.
  • Main interface changes include renaming of HMLocalDevice to HMKit.
  • Renaming the delegate methods.
  • Making most public methods throwing.
  • And more...

iOS Auto API version 10.0

  • Properties are wrapped in a new type AAProperty.
  • Capabilities conform to a new type AACapability.
  • Outgoing commands' methods return a new type AACommand which has .bytesaccessor for getting the data to send.

iOS HMUtilities version 1.3.0

Added a new type HMBytesConvertable and made the following types conform to it: Bool, Date, Double, Float, String, URL, signed and unsigned integers.

Java Auto API Level 10

This updates the Java Auto API to level 10. Mind that the percentage values are now double instead of float. Mind that there are no time zones for dates anymore, which always correspond to UTC time.

Android SDK version 1.6.6

Fixed OAuth showing blank screen.

Android SDK version 1.6.5

Fixed possible Bluetooth authorisation failures.

Car emulator version 2.3.0

  • Added Porsche Cross Turismo car emulator.
  • Auto API level 10 compatibility for property components. It's necessary for developers to use the latest SDKs to work with the emulator.

Node.js SDK version 0.8.0

This release included only internal changes to Auto API level 10 property component handling logic. There were no changes in the public API.

Car emulator version 2.2.4

  • Added KTM 1290 Super Duke and Mercedes EQC emulators.
  • Fixed vehicle location picker and increased precision.
  • Fixed Porsche Cayenne tire pressure indicators.

Android SDK version 1.6.4

  • This release fixes issues with the OAuth2 flow.

Auto API Level 9

This platform release has incremental updates to the API by introducing Auto API level 9 along with OAuth2 updates. Each component has further improvements.
  • Lights capability updated with fog lights, reading lamps and interior lamps.
  • Diagnostics capability updated with mileage in meters.
  • Door Locks property updated with all doors location possibility.
  • Failure Message reason property expanded with rate limit failure.
  • MultiCommand added for possibility to send several commands at once.
  • Vehicle Status updated with brand property.
  • Fueling capability updated with gas flap lock state.
  • Universal property for reporting individual failing properties added.

OAuth2

  • Scope query parameter is no longer needed when starting OAuth flow.
  • Access token endpoint now returns refresh token that can be used to request a new access token.
  • Mobile and Native Apps now need to use PKCE on OAuth flow.

Car emulator version 2.2.3

  • Added Auto API level 9 support.
  • Fixed minor vehicle state change broadcast bug.
  • Minor logging fixes.
  • Improved device permissions validation.

Node.js SDK 0.7.3

  • Added Auto API level 9 support.
  • Added front exterior lights, fog lights, reading lamps and interior lampsproperties to lights capability.
  • Added mileage meters property to diagnostics capability.
  • Added rate limit failure reason.
  • Added multi command capability.
  • Added brand property to vehicle status.
  • Added gas flap lock and gas flap position properties to fueling capability.

iOS Auto API version 9.0

  • Added Auto API level 9 support.
  • Removed all legacy types.
  • Added .fogLights, readingLamps and .interiorLamps to AALights; also updated .frontExteriorLights.
  • Added .states to AAMultiCommand – returned when a multicommand is sent.
  • Added .gasFlapLock and .gasFlapPosition to AAFueling.
  • New AAPropertyFailure type to convey that getting a property failed.
  • Updated .insideLocks, .locks and .positions in AADoorLocks.
  • Updated .failureReason in AAFailureMessage.

Java Auto API 1.9.0

  • Added Auto API level 9 support.
  • Browse Android Code Reference for command updates.
  • See Multi Command for Multi Command code reference.

REST Auto API version 1.4.0

  • Added Auto API level 9 support.
  • Included new Node.js SDK which will help REST API to return more informative errors.

Older releases

iOS SDK version 2.5.2

  1. Fixed same-time outgoing-incoming commands' decryption bug.
  2. Improved HMLogginOptions substantially.

Older releases

This platform release includes several URL changes based on new server architecture that is being rolled out. Note that "sandbox" is being used to refer to any endpoints for working with the car emulators during the development of apps.

OAuth2

Sandbox base URL changed to https://sandbox.api.high-mobility.com/hm_cloud/

Service Account API

Sandbox base URL changed to https://sandbox.api.high-mobility.com/v1

REST API

Sandbox base URL changed to https://sandbox.rest-api.high-mobility.com/v1

Node.js SDK version 0.7.2

  1. Changed internal API URLs.
  2. API endpoint is now chosen automatically based on Client Certificate issuer.

iOS SDK version 2.5.1

  1. New HMOAuth implementation and flow.
  2. SDK gets the correct URL from HMDeviceCertificate.

iOS AutoAPI version 8.0.1

  1. New AAMulticommand – possible to send multiple commands at the same time.
  2. Added .mileageMeters to AADiagnostics.
  3. Added .sunroofState to AARooftopControl.

iOS HMCryptoKit version 1.2.3

  1. More capable .signature method for using it in unpadded form for the JWT.
  2. Public SHA256 method..

Android SDK version 1.6.2

  1. Add OAuth2 module to the SDK. OAuth2 is used to get the access token to download a vehicle Access Certificate.
  2. Refactor web environment selection. Web environment is selected automatically or can be set in HMKit.webUrl. HMKit.environment is removed.

Older releases

Car emulator version 2.2.1

  1. Added missing vehicle state properties (engine volume, engine max torque, gearbox, display unit, driver seat location, equipment).
  2. Added IOTA car and IOTA charger emulators.
  3. Fixed and added missing properties on cars.
  4. Fixed My Profile link

Node.js SDK version 0.7.1

  1. Added missing vehicle state properties (engineVolume, engineMaxTorque, gearbox, displayUnit, driverSeatLocation, equipment).
  2. Fixed multiple access certificate caching.
  3. Added automated tests.

Older releases

This is a major release across all SDKs, APIs and emulators that introduces Auto API level 8.

Auto API level 8

The latest version of the Auto API comes with internal protocol improvements and an expanded data set of vehicle data. In summary:

  1. New capabilities and properties.
  2. Protocol support for historical states.
  3. Possible to add a timestamp property to every individual property.
  4. Every command now wraps parameters as properties. This is an internal change that the SDKs/REST API handle internally.

New capabilities:

  1. Mobile: Get the state of a connected mobile phone.
  2. Usage: Metrics about the driving style.
  3. Hood: Get the hood open/close state.
  4. Historical: Get historical data for any states.

Charging capability:

  1. Added maximum charging current
  2. Added plug type
  3. Added if a charging window has been chosen
  4. Added departure times
  5. Added reduction of charging-current times
  6. Added battery temperature
  7. Added charging timers
  8. Added plugged in state
  9. Added charging state
  10. Deprecated 0x01 charging state (breaken up to plugged in state and charging state)
  11. Deprecated 0x0D charge timer (replaced by charging timers)

Chassis Settings capability:

  1. Spring rates properties replaced by new format
  2. Chassis position properties replaced by new format

Climate capability:

  1. Added HVAC (Heating, ventilation, and air conditioning) weekday starting times
  2. Added rear seats temperature setting
  3. Deprecated climate profile (replaced by HVAC weekday starting times)
  4. Added command Set Temperature Settings

Lights capability:

  1. Renamed Set Lights State to Control Lights

Rooftop capability:

  1. Added convertible roof state
  2. Added sunroof tilt state

Seats capability:

  1. Added persons detected
  2. Added seatbelts fastened
  3. Deprecated seats (replaced by the above properties)

Windows capability:

  1. Added open percentages
  2. Added positions
  3. Deprecated windows (replaced by the above properties)

Windscreen capability:

  1. Added command Control Wipers

Diagnostics capability:

  1. Added battery level
  2. Added check control messages
  3. Added tire pressures
  4. Added wheel RPMs
  5. Added trouble codes
  6. Deprecated tires (replaced by the above three properties)
  7. Deprecated current fuel consumption (moved to Usage capability)
  8. Deprecated average fuel consumption (moved to Usage capability)

Maintenance capability:

  1. Added CBS reports count
  2. Added months to exhaust inspection
  3. Added teleservice availability
  4. Added service distance threshold
  5. Added service time threshold
  6. Added automatic teleservice call date
  7. Added teleservice battery call date
  8. Added next inspection date
  9. Added condition based services
  10. Added brake fluid change date

Race capability:

  1. Added vehicle moving

Door Locks capability:

  1. Added locks
  2. Added positions
  3. Deprecated doors (replaced by the above two properties)
  4. Deprecated outside locks (locks should be used instead)

Vehicle Status capability:

  1. Added display unit
  2. Added driver seat location
  3. Added equipments

Home Charger capability:

  1. Added authentication state
  2. Added charge current (DC)
  3. Added maximum charge current
  4. Added minimum charge current
  5. Deprecated charge current (replaced by the above three properties)
  6. Coordinates expanded from float to double
  7. Pricing tariffs expanded to handle crypto currencies
  8. Added command Authenticate/Expire session

Navi Destination capability:

  1. Coordinates expanded from float to double

Vehicle Location capability:

  1. Coordinates expanded from float to double
  2. Altitude expanded from float to double
  3. Heading expanded from float to double

Car emulator version 2.2.0

  1. Added Auto API 8 new capabilities and properties.
  2. Added vehicle location indicator next to logs while simulation with vehicle location capability is running.
  3. Improved simulations performance bugs.
  4. Fixed bugs related to developer center button.

iOS SDK version 2.5.0

  1. Improved bluetooth connection's latency.
  2. Added HMOAuth classes for easier usage.
  3. Huge renaming – all types now have an "HM" prefix to clear up some namespace pollution.

iOS Auto API version 8.0.0

  1. Mostly rewritten with a lot of additional capabilities, properties and commands. Check the Auto API 8 changelog for new possibilities.
  2. All types now have an "AA" prefix to clear up some namespace pollution.
  3. This is not compatible with Level 7, but L7 usage has been temporarily made available through "legacy" access points. This support will be dropped in the future.

Java Auto API 1.8.1

This release adds support for Auto API level 8. Please note that the release is not compatible with level 7 Auto API (package 1.8.0) and your Auto API code probably needs updating.

Android SDK version 1.6.1

  1. Increase the command size limit.
  2. Fix Broadcaster.revokeCertificate() not deleting the certificates.
  3. Update production URL.

Node.js SDK version 0.7.0

  1. Fixed issues with node v10.x. Node.js SDK now works with all node versions from v8.9 to v10.x. Node v11 is not supported yet.
  2. Added Auto API level 8 commands and responses.
  3. Added automated tests for new Auto API level 8 commands and responses.
  4. HMKit internal certificate cache json file location can be changed with HM_NODE_SDK_STORAGE_PATH environment param.

REST Auto API version 1.3.0

  1. REST API is now serverless and running on AWS Lambda. This helps us to scale more easily in the future.
  2. Added Auto API level 8 endpoints.
  3. Added Auto API level 8 tests.
  4. Included new Node.js SDK which will help REST API to return more informative errors.

Older releases

iOS SDK version 2.4.2

  1. Fixed iOS's Bluetooth transmission queue getting full in some cases and no data being sent out.

Android SDK version 1.6.0

This release introduces some changes for the public API of the SDK.

  1. Rename Manager to HMKit.
  2. Add Link state NOT_AUTHENTICATED. This will be set after a revoke or if authentication fails.
  3. Manager.initialise throws if is already initialised. Manager.setDeviceCertificate should be used to set a new device certificate.
  4. Move Manager.loggingLevel to HMLog.Level
  5. Rename downloadCertificate() to downloadAccessCertificate()
  6. delete IllegalStateException throwing from Manager methods. Manager expects that initialise is called and throws unchecked otherwise.
  7. getBroadcaster() is nullable. Can be null if BLE is physically not supported.

Older releases

iOS SDK version 2.3.7

  1. Disabled BT powered off system UI alert.

OAuth2 API update

  1. Added expires_in to the access token response object. Full details in the OAuth2 tutorial.

Older releases

Android SDK version 1.5.0

  1. Fix no bluetooth service after turning BLE on/off.
  2. Fix invalid broadcaster state BLUETOOTH_UNAVAILABLE after turning BLE off/on.
  3. Wait for the adding of BLE service before starting broadcasting.

Older releases

Node.js SDK version 0.6.1

  1. Improved Access Certificate caching logic to make it faster.
  2. Added client private key validation.
  3. Changed production server api url.
  4. Added missing automated tests.

REST Auto API version 1.2.1

  1. Changed internal server api url.
  2. Thanks to Node.js SDK update, requests will be handled much faster.

Older releases

iOS SDK version 2.3.6

  1. Double-broadcasting fix (didn't affect usage), with additional safeguards for starting advertisement.
  2. Handles incoming revoke command – deletes the certificate and changes the state to .connected.
  3. Maximum custom command size reduced by 1 byte, to correctly account for the protocol bytes.
  4. Alive ping fixes.

Older releases

Android SDK version 1.4.0

  1. Fix validation of certificate initialisation bytes.
  2. Now you can use either base64 or hex in Manager.initialize().
  3. Fix possible getLinks() NPE on Manager.terminate()
  4. Removed some previously deprecated methods.

There are some internal changes to the SDK-s logic:

  1. Broadcasting is now stopped on Manager.terminate()
  2. Broadcasting is not stopped on Broadcaster.disconnectAllLinks(). stopBroadcasting() has proved to help with disconnecting the connected links. Call stopBroadcasting() after disconnectAllLinks() to improve the chances of disconnecting the BLE connections.

Older releases

Node.js SDK version 0.6.0

  1. Memory leak issue resolved - garbage collection didn't clean up everything when HMKit instance was destroyed.
  2. Multiple HMKit instances issues resolved. In previous versions when in the same Node.js application process multiple HMKit instances were created (const hmkit1 = new HMKit(); const hmkit2 = new HMKit();), they started to behave unexpectedly as all instances were still related through native code.

Swift Auto API version 7.2.2

  1. Replaced UInt8 types that represent a 0-100% value with PercentageInt for clarity.

Older releases

Java HMKit-Crypto version 1.3.2

  1. Issue with Access Certificate hour parsing fixed. Now 24h are handled instead of 12h cycles.

Older releases

These updates might be useful for the users of the HMKit-OEM library.

Java HMKit-Crypto version 1.3.1

  1. Add Permissions class to use when constructing Access Certificates.

Java HMKit-AutoAPI version 1.8.0

  1. Renamed com.highmobility.autoapi.property.ControlMode to ControlModeValue
  2. Command base properties nonce and signature now are Bytes instead of byte[].

Older releases

Android SDK version 1.3.0

  1. Added revoke. Call Link.revoke() to revoke the link authorisation.
  2. Made command timeout configurable with Link.commandTimeout. The value is in ms, default is 10000.

iOS SDK version 2.3.5

  1. Alive ping fixes and improvements � now send a single byte (used to be empty).
  2. Added additional logging.

Older releases

Node.js SDK version 0.5.2

  1. Added .getSerial() alias for .getVehicleSerial() function.
  2. AddedAuto API level 7support.
  3. Improved error handling. Throwing more exceptions with more informative message.
  4. Fixed bugs where missing arguments broke the command.
  5. Removed unnecessary logging.

REST Auto API version 1.1.0

  1. Added Auto API level 7 support.
  2. Improved error handling. API now returns more informative errors.
  3. Returning status 401 instead of 400 when user is unauthorised.

Older releases

Android SDK version 1.2.0 and Java libraries updates

Starting with this release all of our Java SDK public methods use our custom Bytes class instead of the byte[]. For instance it can now be used to access certificate properties or send link commands.

  1. Example to get serial from access certificate: DeviceSerial serial = certificate.getGainerSerial()
  2. There's no need any more to use .getBytes() on commands, instead the class instance can be passed in directly: link.sendCommand(new LockUnlockDoors(DoorLock.LOCKED), serial, callback)

Bytes class can also be used for new constructors and some convenience methods like Bytes.getHex() and Bytes.equals().

  1. To compare a command with hex or base64 string: command.equals(new Bytes("00AA"))
  2. To log out a command in hex: log("bytes in hex " + command.getHex())

Older releases

Java Auto API version 1.6.8

  1. Added Auto API level 7 support
  2. Renamed/deprecated some LockState properties.

Older releases

iOS SDK version 2.3.4

  1. Added Auto API level 7 support
  2. Moved DebugTree to HMUtilities
  3. Added .serial getter for LocalDevice
  4. New function to send .revoke to a connected Link
  5. New LocalDeviceError.uninitialised error � meaning the certificate and keys are not set

Older releases

Android SDK version 1.1.17

  1. Fix rare crashes when sending telematics commands or disconnecting bluetooth.

Java Auto API version 1.6.7

  1. Deprecate/rename some Lockstate properties.
  2. Fix set navi destination.

iOS SDK version 2.3.3

  1. Fixed startBroadcasting(configuration: Configuration?) to not override the old configuration when nil is passed in.

Older releases

Android SDK version 1.1.16

  1. Dont advertise device name if not using the custom High-Mobility name in BroadcastSettings. This fixes a crash for devices with longer names.

Older releases

iOS SDK version 2.3.2

  1. Fixed bundle-identifier and other running errors

Older releases

iOS SDK version 2.3.1

  1. HMKit: LocalDeviceBroadcastingConfiguration renamed to LocalDeviceConfiguration
  2. Configuration init function changed to dissuade disabling the encryption

Older releases

Android SDK version 1.1.15

  1. Merge all broadcasting settings to BroadcastConfiguration object. Use BroadcastConfiguration.Builder to create your broadcast configuration and pass it on to broadcaster.startBroadcasting method.
  2. Declaration
  3. BroadcastConfiguration conf = new BroadcastConfiguration.Builder().setOverridesAdvertisementName(false).build();broadcaster.startBroadcasting(new Broadcaster.StartCallback() {@Override public void onBroadcastingStarted() { Log.d(TAG, "onBroadcastingStarted: ");}@Override public void onBroadcastingFailed(BroadcastError error) { Log.d(TAG, "onBroadcastingFailed: ");}}, conf);
  4. setIsAlivePinging() changed to startAlivePinging(long interval). Use stopAlivePinging() to stop the pinging.

Older releases

iOS SDK version 2.3.0

This update follows the releases of Swift 4.1 and Xcode 9.3 bringing compatibility of the HMKit libraries to both. Full details:

  1. The number of HMKit frameworks have been expanded from 3 to 5 libraries for increased modularity. The recommended way to update to the latest is to delete the old frameworks from the project and in Finder, and then to drag the new ones to "Embedded libraries" in the Xcode project overview.
  2. CommonCrypto: Inclusion of CommonCrypto (basically OpenSSL with "Apple" flavour) module map from IBM; CommonCrypto GitHub page.
  3. HMCryptoKit: New, written from the ground up, Swift crypto library; hm-crypto-kit-swift GitHub page.
  4. HMUtilities: This includes common extensions and other useful functionality; hm-utilities-swift GitHub page.
  5. HMKit: LocalDeviceBroadcastingConfiguration is a new configuration type for broadcasting (also accessible through LocalDevice.shared.configuration); updated dependencies; some other minor fixes.

This release has been tested on iOS and macOS, and should work on tvOS, watchOS and Linux as well; usable with the Swift Package Manager.

Older releases

This is a major release across all the SDKs, APIs and the user interface of the Developer Center itself.

Auto API Level 6

The latest version of the Auto API comes with a new internal protocol that brings consistency and flexibility for different car capability variations. Each capability (such as Diagnostics) has now a list of properties. Here's how they work:

  1. A capability specifies now all types of properties that a car possibly could support, but the car only includes the properties that it actually supports.
  2. Properties eliminate the need of "unavailable" data, as it is just not included in the state.
  3. A state could have several properties with the same ID, this is the case of e.g. the Door Property, a property for each door is returned.
  4. There are universal properties that could be included in any state, the identifier for these properties start with 0xA_.
  5. Properties are also used in the cases of SET commands (e.g. Open/Close Trunk) but this is only done if the SET command impacts several properties. If the SET command is only for one property (e.g. Set Charge Limit) then the property format is omitted.
  6. The usage of properties has been implemented throughout all capabilities.

In terms of capabilities, it's no longer the case that each capability defines its own format of what is included in the Capabilities message:

  1. Each capability that the car supports is included as the 0x01 Capability Property. The capability identifier is included, along with an array of Message Type IDs that the car can handle.
  2. If the device lacks permissions for e.g. locking/unlocking the doors, that message type will not be included in the array.

There are many new properties that have been added to existing capabilities. There are however some entirely new capabilities:

  1. Race
  2. Offroad
  3. Chassis Settings
  4. Seats
  5. Parking Brake
  6. Vehicle Time
  7. Light Conditions
  8. Weather Conditions
  9. Home Charger

HMKit Core

HMKit Core, the component that all SDKs implement, have been updated with the following:

  1. Command container has been increased to allow bigger messages than 256 bytes to be sent
  2. Updated SHA algorithm
  3. New format for Access Certificates that now includes the certificate issuer name
  4. Other bug fixes and improvements

Android SDK version 1.1.14

The Android SDK is from now on available through the JCenter and downloaded directly as a Gradle dependency. As part of this, the SDK has been divided into separate modules: HMKit-Android, HMKit-AutoAPI, HMKit-Crypto and HMKit-Utils. The Auto API library has been updated to level 6 and is open sourced on GitHub.

iOS SDK version 2.0.4

The iOS SDK has been updated to support the latest core changes. The Auto API library has been updated to level 6 and is open sourced on GitHub.

Node.js version 0.4.0

The Node.js SDK has been updated to support Auto API level 6 and other core changes.

REST Auto API first release 1.0

This is a completely new interface for working with Auto API. With the REST API it's possible to work with car data and APIs on any platform.

Older releases

Node.js SDK version 0.3.0

Good news for Windows users! This release includes support for Windows 10. Just get the latest version from npm or download the sample app.

Android SDK version 1.0.6

This is only a minor update with a bug fix for the AccessCertificate.isExpired()method.

Older releases

iOS SDK version 1.8.5 beta for Swift 4

This is a bigger release to be compatible with Apple's update to iOS 11. With this release we are adding a Swift 4 (beta) SDK in addition to the stable 1.8.5 release to the download site. In the upcoming months we will phase out the Swift 3 build however.

Car emulator version 1.5.0

This release includes a bug fix and an improvement:

  1. A broadcast button was added to the Driver Fatigue capability
  2. Default value for Washer Fluid Level now valid

Older releases

Node.js SDK version 0.2.0

This release includes helper functions for sending and parsing all remaining Auto API commands that were not included in the first release - except for Get Capabilities and Get Vehicle Status. We're still hard at work with Windows support but making good progress.

The scaffold sample app has been updated too to best reflect the latest version.

Next up in the backlog is more informative error handling and the final two Auto API commands.

Older releases

iOS SDK version 1.8.5

Starting from this release the iOS SDK is shipped with a script AppStoreCompatible.sh that should be used before releasing to App Store. The script removes iPhone simulator related code.

Other updates and bug fixes:

  1. URL conversion fix for Auto API Load URL command
  2. "HonkHorns" Auto API renamed to just "HonkHorn" without plural form

Older releases

Android SDK version 1.0.5

Here's what's new in this release:

  1. Parsing fix for reversed rear door position/lock status

An additional app "Basic OAuth" has been added to the samples.

Car emulator version version 1.4.2

This release includes the following bug fixes:

  1. Vehicle Location broadcasted through Bluetooth when changed in the map
  2. Engine On/Off reversed text in fixed in the log
  3. Access Certificate start and end dates validated properly
  4. Browser: Load URL command is executed even if HTTP is used, with appropriate error message
  5. OAuth dialog now includes formatted dates

Older releases

Node.js experimental SDK version 0.1.1

This is a first release of HMKit for Node.js and the first SDK destined for backend server applications. The SDK supports working with the Auto API through Telematics.

There's two bigger limitations on the first experimental release. First off, it can only be run on Linux and OS X. Windows support coming in upcoming versions. This is due to native C bindings that it used for crypto and internal protocol.

Version 0.1.1 does not yet have helper methods for all Auto APIs. Helpers for the following capabilities are included:

  1. Door Locks
  2. Engine
  3. Trunk Access
  4. Diagnostics
  5. Browser

Any feedback for the public methods, especially Auto API handling, is taken into account for next releases.

Older releases

Car emulator version version 1.4.0

This release includes two big updates, Auto API capabilities Browser and Graphics have been added. Other changes:

  1. Set Charge Limit properly parsed and handled
  2. Open/Close Windows properly parsed and handled
  3. Telematics commands no longer timing out for: Honk & Flash, Emergency Flasher, Message Received, Video Handover, Text Input, Set (Navi) Destination, Open/Close Windows, Open Gas Flap
  4. App name added to device info pane

iOS SDK version 1.8.4

Here's what's new in this iOS SDK release:

  1. Handling and parsing added for the Auto API capabilities Browser and Graphics
  2. Parsing fixes for Notifications and Diagnostics commands
  3. Added struct for better handling of Windows commands
  4. link.sendCommand completion block argument removed, is now optional, and may throw an error
  5. LocalDevice singleton renamed, old one can still be used for now

Android SDK version 1.0.4

Here's what's new in this Android SDK release:

  1. Handling and parsing added for the Auto API capabilities Browser and Graphics
  2. Bluetooth no longer set up in the initialisation method, allowing SDK usage in the Android Simulator
  3. Handling of empty responses for Telematics commands
  4. Parsing fixes for Send Navi Destination command