feat(api) : gérer les clés de l'API externe depuis Paramètres (#570)

Nouvel onglet Paramètres > API externe (admin) : état de l'API, adresse,
création d'une clé nommée par outil (affichée une seule fois), liste avec
dernière utilisation, révocation immédiate.

- table external_api_keys (empreinte SHA-256 uniquement), créée par
  migrations.production.ts et init.sql
- l'API accepte les clés de Paramètres et toujours celles de
  EXTERNAL_API_KEYS ; 503 seulement si aucune clé active
- routes /api/external-api/keys (session + admin)
- documentation et .env.example mis à jour

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JrRFddV2BaqDCxGY1j52UJ
This commit is contained in:
LogiFlowandClaude Opus 5.5 authored and GitHub committed 2026-10-10 09:53:41 +02:00
1 parent b964e137bf
commit 6760f43e87
11 files changed
+576 -19

No files matched your search

+11 -3
View File
@@ -8,8 +8,15 @@ Code : `server/externalApi.ts`. Préfixe : `/api/ext/v1`.
## Activation et authentification
Définir une ou plusieurs clés (séparées par des virgules) dans l'environnement,
puis redémarrer :
**Depuis LogiFlow (recommandé)** : *Paramètres > API externe* (admin). On y
crée une clé par outil (nommée, ex. « n8n comptabilité »), affichée une seule
fois à sa création, avec sa date de dernière utilisation ; une clé se révoque
d'un clic, sans redémarrage. Seule l'empreinte SHA-256 de la clé est stockée
(table `external_api_keys`). L'onglet s'ouvre directement par
`/utilities?tab=api`.
**Par l'environnement (optionnel)** : des clés peuvent aussi être définies,
séparées par des virgules, puis le serveur redémarré :
```
EXTERNAL_API_KEYS=3f9c…a1,7b20…e4
@@ -21,7 +28,8 @@ Générer une clé :
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
```
Variable vide ou absente : l'API répond `503` (désactivée).
Aucune clé active (ni dans Paramètres, ni dans l'environnement) : l'API répond
`503` (désactivée).
Chaque requête envoie la clé dans l'un de ces en-têtes :