[6.0.0](https://github.com/smartcar/python-sdk/compare/v5.2.1...v6.0.0) (2021-07-12)
This is a major release consisting of multiple usability improvements and additional features.
We have aimed to streamline the SDK with the Smartcar API interfaces in a way that the objects returned are closer to the API interface documented in [API Docs](https://smartcar.com/docs/api#smartcar-api-reference). For ex. `vehicle.odometer()` will now return an object that looks like the [response in the documentation](https://smartcar.com/docs/api#get-odometer) and additionally the body will contain response headers [defined in the documentation](https://smartcar.com/docs/api#headers) as a part of a `meta` attribute.
The methods to be used are broadly divided into three namespaces :
- `smartcar` - Top level package that contains application-level methods and classes.
- `AuthClient` - This class is used for all OAuth related operations.
- `Vehicle` - This class is used for all vehicle operations/actions.
Features
- Environment variables - The SDK now supports usage of environment variables for client id (`SMARTCAR_CLIENT_ID`), client secret(`SMARTCAR_CLIENT_SECRET`) and redirect URL(`SMARTCAR_REDIRECT_URL`). These can be used instead of having to pass these as arguments.
- `hash_challenge` - Additional utility method defined in `smartcar` to generate hash challenge for webhooks.
- `verify_payload` - Additional utility method defined in `smartcar` to verify the payload returned by webhooks.
- `get_api_version` - Method defined in `smartcar` to return the api version set globally.
- `subscribe` - Additional method defined in `Vehicle` namespace to subscribe to a webhook.
- `unsubscribe` - Additional method defined in `Vehicle` namespace to unsubscribe from a webhook.
- Default API version to 2.0 - The default version for the APIs is now `2.0` instead of `1.0` . This can be overridden globally by using the `set_api_version` method or by using optional arguments in different methods.
Improvements
Following are the improvements made to the interfaces by namespace. For in-depth details of the interface please refer to the documentation of the functions generated [here](https://github.com/smartcar/python-sdk/blob/master/REFERENCE.md).
`smartcar`
- `get_vehicles` - Renamed from `get_vehicle_ids` and changes in interface.
- `get_user` - Moved and renamed from `Vehicle.get_user_ids` and changes in interface.
- `get_compatibility` - Moved and renamed from `AuthClient.is_compatible` and changes in interface.
`AuthClient`
- `Constructor` - This only requires the set of parameters required by all of the functions defined in the class
- `get_auth_url` - Takes in scope as required argument and all the other optional arguments required to generate the Smartcar Connect URL as defined in the [docs](https://smartcar.com/docs/api?version=v2.0&language=cURL#smartcar-connect)
- `exchange_code` - Added additional support for optional flags parameter for future usage.
- `exchange_refresh_token` - Added additional support for optional flags parameter for future usage.
`Vehicle`
- `Constructor` - Updated to now support a version parameter. Look at the interface for more details.
- `attributes` - Renamed from `info` .
- `batch` - The return value of the method has been changed. This now returns a function for each attributes requested that either returns an object of the requested attribute OR throws an error if the attribute returned an error.
`SmartcarError`
All the errors have been converged to a single `SmartcarError` class. This class can now support the error fields returned by v2.0 and v1.0. For detailed breakdown of both the error types, refer to the to the [API Reference Errors section](https://smartcar.com/docs/api/#errors).