Authentification
Gestion des tokens, stockage et résilience du SDK
Fonctionnement
Le SDK résout l'authentification automatiquement selon cette cascade (par ordre de priorité) :
- Options explicites —
tokens,email/passwordpassés au constructeur - Variables d'environnement —
TIIME_ACCESS_TOKENouTIIME_EMAIL+TIIME_PASSWORD - Fichiers locaux —
~/.config/tiime/auth.json+ Keychain (compatibilité CLI)
Le companyId suit la même logique : option > TIIME_COMPANY_ID > ~/.config/tiime/config.json.
Modes d'authentification
export TIIME_EMAIL=vous@example.com
export TIIME_PASSWORD=votre-mot-de-passe
export TIIME_COMPANY_ID=12345import { TiimeClient } from "tiime-sdk";
const client = new TiimeClient(); // tout est résolu via les env varsimport { TiimeClient } from "tiime-sdk";
const client = new TiimeClient({
email: "vous@example.com",
password: "votre-mot-de-passe",
companyId: 12345,
});import { TiimeClient } from "tiime-sdk";
const client = new TiimeClient({
tokens: { access_token: "eyJ...", expires_at: 1234567890000 },
companyId: 12345,
});Ou via variable d'environnement :
export TIIME_ACCESS_TOKEN=eyJ...
export TIIME_COMPANY_ID=12345Si le CLI est installé et configuré, le SDK utilise les tokens stockés automatiquement :
tiime auth login
tiime company use --id 12345import { TiimeClient } from "tiime-sdk";
const client = new TiimeClient();Pas de persistence en mode explicite
Quand vous passez des tokens ou credentials via les options ou env vars, le SDK ne sauvegarde rien sur le disque. La persistence n'est active que pour le mode CLI (fichiers locaux).
TokenManager
Le TokenManager gère le cycle de vie des tokens :
import { TokenManager } from "tiime-sdk";
// Avec credentials
const tm = new TokenManager({ email: "vous@example.com", password: "..." });
// Avec token direct
const tm2 = new TokenManager({ tokens: { access_token: "eyJ...", expires_at: ... } });
// Auto (env vars ou fichiers locaux)
const tm3 = new TokenManager();
// Obtenir un token valide (renouvelle si expiré)
const token = await tm.getValidToken();
// Vérifier l'état
tm.isAuthenticated(); // true | false
tm.getTokenInfo(); // { email, expiresAt }Méthodes
| Méthode | Retour | Description |
|---|---|---|
login(email, password) | Promise<AuthTokens> | Authentification via Auth0 |
getValidToken() | Promise<string> | Token valide (renouvellement auto) |
isAuthenticated() | boolean | État de connexion |
getTokenInfo() | { email, expiresAt } | Infos sur le token courant |
logout() | void | Supprime le token local |
Trouver votre Company ID
Le TIIME_COMPANY_ID est l'identifiant numérique de votre entreprise sur Tiime. Plusieurs façons de le trouver :
Via le SDK :
import { TiimeClient } from "tiime-sdk";
// Authentifiez-vous sans companyId pour lister vos entreprises
const client = new TiimeClient({
email: "vous@example.com",
password: "votre-mot-de-passe",
});
const companies = await client.listCompanies();
console.log(companies);
// [{ id: 12345, name: "Mon Entreprise SAS", ... }]Via le CLI :
tiime auth login
tiime company list
# ID | Nom | Forme juridique
# 12345 | Mon Entreprise SAS | SASVia l'interface web Tiime :
Connectez-vous sur app.tiime.fr — le Company ID apparaît dans l'URL : app.tiime.fr/companies/12345/...
Variables d'environnement
| Variable | Description |
|---|---|
TIIME_ACCESS_TOKEN | Token d'accès Auth0 (prioritaire) |
TIIME_EMAIL | Email du compte Tiime |
TIIME_PASSWORD | Mot de passe du compte Tiime |
TIIME_COMPANY_ID | ID de l'entreprise (comment le trouver ?) |
Stockage des credentials (mode CLI)
| Fichier | Contenu |
|---|---|
~/.config/tiime/auth.json | Token d'authentification (access_token + expires_at) |
~/.config/tiime/config.json | Configuration locale (companyId actif) |
~/.config/tiime/credentials.json | Email/password (fallback) |
Keychain macOS
Sur macOS, les credentials sont stockés de préférence dans le Keychain système pour plus de sécurité. Le fichier credentials.json est utilisé en fallback si le Keychain n'est pas disponible.
Retry et résilience
Le SDK inclut un mécanisme de retry automatique avec backoff exponentiel :
| Code HTTP | Comportement | Détail |
|---|---|---|
| 429 | Retry après délai | Too Many Requests — respect du rate limit |
| 5xx | Retry avec backoff | Erreurs serveur temporaires |
| 401 | Renouvellement token | Tente de rafraîchir le token puis retry |
| 4xx (autres) | Erreur immédiate | Pas de retry — erreur client |
Headers personnalisés
Le SDK envoie des headers spécifiques à l'API Tiime :
tiime-app: tiime
tiime-app-version: 4.30.3
tiime-app-platform: webCes headers simulent le client web Tiime pour assurer la compatibilité avec l'API.