https://github.com/remscodes/renault-api-client
Unofficial http client to use the Renault API
https://github.com/remscodes/renault-api-client
drino http-client renault-api
Last synced: 9 months ago
JSON representation
Unofficial http client to use the Renault API
- Host: GitHub
- URL: https://github.com/remscodes/renault-api-client
- Owner: remscodes
- License: mit
- Created: 2023-09-17T12:10:54.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-10T10:39:19.000Z (almost 2 years ago)
- Last Synced: 2025-08-19T15:10:44.333Z (10 months ago)
- Topics: drino, http-client, renault-api
- Language: TypeScript
- Homepage:
- Size: 210 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Renault API Client
Http client using the Renault API
[](https://github.com/remscodes/renault-api-client/actions/workflows/npm-ci.yml)
[](https://www.npmjs.org/package/@remscodes/renault-api-client)
[](LICENSE)
## Installation
```shell
npm install @remscodes/renault-api-client
```
## Usage
### Example
```ts
import { RenaultClient } from '@remscodes/renault-api-client';
// Instantiate new Renault http client
const renault = new RenaultClient();
// Use Gigya and Kamereon sub http client.
const { gigya, kamereon } = renault;
// Login to Gigya service and get auth info (to be automatically stored into session).
await gigya.login('myLogin', 'myPassword');
await gigya.getAccountInfo();
await gigya.getJwt();
// Get the proper `accountId` and store it into session.
const { accounts } = await kamereon.getPerson();
const accountId = accounts.find(acc => acc.accountType === 'MYRENAULT');
renault.session.accountId = accountId;
// Get the vehicle `vin` and store it into session.
const vehicles = await kamereon.getAccountVehicles();
const { vin } = vehicles.vehicleLinks[0];
renault.session.vin = vin;
// Get vehicle info.
const response = await kamereon.readBatteryStatus();
const batteryStatus = response.data.attributes;
```
### Session
Authentication info are stored in `RenaultSession` instance.
```ts
const renault = new RenaultClient();
const session = renault.session;
```
```ts
class RenaultSession {
// Locale that will be used to format date.
// default: "fr_FR"
locale: string;
// Country code that will use as http param for Kamereon.
// default: "FR"
country: string;
// Token to use Gigya getJWT API.
// Automatically set when Gigya login API is called and succeed.
gigyaToken: string | undefined;
// Token to use Kamereon API.
// Automatically set when Gigya getJWT API is called and succeed.
token: string | undefined;
// Selected person id.
// Automatically set when Gigya getAccountInfo API is called and succeed.
personId: string | undefined;
// Selected account id.
// To be set to be automatically passed into each Kamereon API functions that needs it.
// Otherwise, it needs to be manually passed as function argument using `KamereonClient`.
accountId: string | undefined;
// Selected vehicle vin.
// To be set to be automatically passed into each Kamereon API functions that needs it.
// Otherwise, it needs to be manually passed as function argument using `KamereonClient`.
vin: string | undefined;
}
```
### Error intercepting
You can intercept response error by passing `onError` callback into client constructor.
Example :
```ts
const renault = new RenaultClient({
onError: ({ status, url, error }, session) => {
if (status === 401) {
session.token = undefined;
myService.clearToken();
myService.navigateToLogin();
}
else {
console.error(`Error ${status} from ${url} : ${error}`);
}
},
});
```
## Disclaimer
This project is not affiliated with, endorsed by, or connected to Renault. I accept no responsibility for any consequences, intentional or accidental, resulting from interaction with the Renault's API using this project.
## Credit
Resources API based on [@remscodes/renault-api](https://github.com/remscodes/renault-api#credit).
## License
[MIT](LICENSE) © Rémy Abitbol.