# Accès API via clés API --- ## Vue d'ensemble En plus du JWT, Xpeditis supporte l'authentification par **clé API** pour les intégrations tierces. --- ## Format ``` Header: x-api-key: xped_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` Le préfixe `xped_` est toujours visible. Le reste est une chaîne aléatoire sécurisée. La clé complète est hashée avec Argon2 — impossible de la retrouver après création. --- ## Gestion des clés | Méthode | Route | Description | |---------|-------|-------------| | GET | /api/v1/api-keys | Liste les clés de l'organisation | | POST | /api/v1/api-keys | Créer une nouvelle clé | | PATCH | /api/v1/api-keys/:id | Renommer / désactiver | | DELETE | /api/v1/api-keys/:id | Supprimer | ### Créer une clé ``` POST /api/v1/api-keys Authorization: Bearer { "name": "Integration ERP" } ``` Réponse (unique — la clé complète n'est retournée qu'une seule fois) : ```json { "id": "uuid", "name": "Integration ERP", "key": "xped_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "keyPrefix": "xped_xxxx", "createdAt": "2026-05-13T10:00:00Z" } ``` --- ## Permissions Les clés API héritent des permissions de l'organisation. Elles ne peuvent pas avoir plus de droits que le compte utilisateur qui les a créées. --- ## Sécurité - Stockage : hash Argon2 uniquement (pas de récupération possible) - Expiration : configurable (`expires_at`, null = pas d'expiration) - Révocation immédiate : `DELETE /api/v1/api-keys/:id` - Suivi : `last_used_at` mis à jour à chaque utilisation --- ## Endpoints supportant les clés API Tous les endpoints protégés acceptent soit un JWT soit une clé API. Voir `apps/backend/src/application/guards/api-key-or-jwt.guard.ts` pour l'implémentation.