Tiime
SDK TypeScript

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é) :

  1. Options explicitestokens, email/password passés au constructeur
  2. Variables d'environnementTIIME_ACCESS_TOKEN ou TIIME_EMAIL + TIIME_PASSWORD
  3. 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

Terminal
export TIIME_EMAIL=vous@example.com
export TIIME_PASSWORD=votre-mot-de-passe
export TIIME_COMPANY_ID=12345
app.ts
import { TiimeClient } from "tiime-sdk";
const client = new TiimeClient(); // tout est résolu via les env vars
app.ts
import { TiimeClient } from "tiime-sdk";

const client = new TiimeClient({
  email: "vous@example.com",
  password: "votre-mot-de-passe",
  companyId: 12345,
});
app.ts
import { TiimeClient } from "tiime-sdk";

const client = new TiimeClient({
  tokens: { access_token: "eyJ...", expires_at: 1234567890000 },
  companyId: 12345,
});

Ou via variable d'environnement :

Terminal
export TIIME_ACCESS_TOKEN=eyJ...
export TIIME_COMPANY_ID=12345

Si le CLI est installé et configuré, le SDK utilise les tokens stockés automatiquement :

Terminal
tiime auth login
tiime company use --id 12345
app.ts
import { 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 :

auth.ts
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éthodeRetourDescription
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()voidSupprime 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 :

find-company-id.ts
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 :

Terminal
tiime auth login
tiime company list
# ID     | Nom                  | Forme juridique
# 12345  | Mon Entreprise SAS   | SAS

Via 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

VariableDescription
TIIME_ACCESS_TOKENToken d'accès Auth0 (prioritaire)
TIIME_EMAILEmail du compte Tiime
TIIME_PASSWORDMot de passe du compte Tiime
TIIME_COMPANY_IDID de l'entreprise (comment le trouver ?)

Stockage des credentials (mode CLI)

FichierContenu
~/.config/tiime/auth.jsonToken d'authentification (access_token + expires_at)
~/.config/tiime/config.jsonConfiguration locale (companyId actif)
~/.config/tiime/credentials.jsonEmail/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 HTTPComportementDétail
429Retry après délaiToo Many Requests — respect du rate limit
5xxRetry avec backoffErreurs serveur temporaires
401Renouvellement tokenTente de rafraîchir le token puis retry
4xx (autres)Erreur immédiatePas 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: web

Ces headers simulent le client web Tiime pour assurer la compatibilité avec l'API.

On this page