Passer au contenu principal

La clé API

L’API s’authentifie par clé API seule, sans connexion d’utilisateur. La clé commence par lck_ et s’envoie en en-tête, jamais dans l’adresse :
Appelez l’API depuis un serveur : elle n’émet aucun en-tête CORS, et une clé ne doit figurer ni dans une page web ni dans une application installée. Une clé envoyée hors de /api/external/v1 répond 403 dans un autre format d’erreur : vérifiez l’adresse de base.

Deux types de clés

Une clé appartient à une seule organisation (un loueur). Elle est partenaire si elle porte un code partenaire (partnerCode), interne sinon. Parcours complet d’une clé partenaire : Intégration d’une plateforme de réservation.

Obtenir une clé

Le loueur crée la clé dans Lexio ; vous ne pouvez pas la créer vous-même. Premier accès ou organisation de test : contact@lexio.rent.
  1. Le plan du loueur doit inclure l’API (table des fonctionnalités ci-dessous), sinon chaque appel répond 403 FEATURE_NOT_AVAILABLE.
  2. Le propriétaire de l’organisation, ou un membre autorisé à gérer les clés API, ouvre Paramètres → Développeur.
  3. Il choisit les scopes, parmi les droits qu’il détient lui-même, et, pour un partenaire, le code partenaire : 2 à 50 caractères parmi a-z, 0-9, - et _, commençant par une lettre ou un chiffre. Ni l’un ni l’autre ne se modifie ensuite.
  4. Il choisit l’expiration : 30, 90, 180 ou 365 jours (par défaut), ou jamais.
  5. La clé complète ne s’affiche qu’une fois : il la copie et vous la transmet par un canal sûr.
Une organisation a au plus 20 clés non révoquées (désactivées et expirées comprises). Pour vérifier une clé, GET /organization renvoie son nom, son code partenaire, ses scopes et son expiration (apiKey.expiresAt).

États de la clé

Toute réponse 401 porte WWW-Authenticate: Bearer realm="Lexio API", plus error="invalid_token" si un en-tête Authorization a été envoyé.

Rotation

Pour remplacer une clé sans coupure, le loueur crée une seconde clé (mêmes scopes, même code partenaire) ; vous basculez vos appels et attendez 24 h (une Idempotency-Key ne vaut que pour la clé qui l’a envoyée) ; il révoque l’ancienne. Vos locations, devis, clients et événements sont liés au code partenaire, pas à la clé. La clé appartient à l’organisation, pas à son créateur : elle fonctionne encore s’il quitte l’équipe. Ses écritures sont signées « API : nom de la clé » (suivi du code partenaire s’il existe) dans les notes, les paiements et le journal d’activité du loueur.

Requêtes

  • Corps JSON UTF-8 de 1 Mio au plus, en application/json (application/merge-patch+json aussi sur PATCH). Trop gros : 413 ; autre type : 415 ; JSON illisible : 400.
  • Un champ inconnu dans une requête est refusé (400) ; dans une réponse, ignorez-le (Versions et évolutions).
  • Chaque réponse porte X-Request-Id, repris dans requestId des erreurs. Vous pouvez fournir le vôtre (8 à 128 caractères parmi A-Za-z0-9._:-), sinon le serveur en génère un. Joignez-le à toute demande à contact@lexio.rent.

Scopes

Un scope s’écrit <ressource>.<accès> : read couvre les lectures de la ressource et de ses sous-ressources, write les créations, modifications et actions ; les droits sensibles ont leur propre scope. Une opération accepte l’un des scopes listés. GET /organization s’ouvre à toute clé valide ; offers.read et quotes.write suffisent pour chiffrer sans accéder aux locations.

Fonctionnalités du plan

Sans la fonctionnalité requise par le plan du loueur, une opération répond 403 FEATURE_NOT_AVAILABLE, et feature la nomme. La table donne les plans standard ; Lexio peut aussi ouvrir une fonctionnalité à une organisation précise. En plus : des options dans un devis ou une location exigent pricing.options (une location sans devis exige un plan qui l’inclut ; une ouverture propre à l’organisation ne suffit qu’en passant par un devis) ; démarrer le suivi d’entretien d’un véhicule (maintenanceTrackingMode) exige maintenance.manage et le scope maintenance.write.