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

+12
View File
@@ -438,6 +438,18 @@ CREATE TABLE IF NOT EXISTS "supplier_mail_logs" (
CREATE INDEX IF NOT EXISTS idx_supplier_mail_logs_delivery ON supplier_mail_logs(delivery_id);
CREATE INDEX IF NOT EXISTS idx_supplier_mail_logs_group ON supplier_mail_logs(group_id);
-- Clés de l'API externe de rapprochement (empreinte SHA-256, jamais la clé en clair)
CREATE TABLE IF NOT EXISTS "external_api_keys" (
"id" serial PRIMARY KEY NOT NULL,
"name" varchar(100) NOT NULL,
"key_prefix" varchar(16) NOT NULL,
"key_hash" varchar(64) NOT NULL UNIQUE,
"created_by" varchar,
"created_at" timestamp DEFAULT CURRENT_TIMESTAMP,
"last_used_at" timestamp,
"revoked_at" timestamp
);
-- ============================================================================
-- FOREIGN KEY CONSTRAINTS
-- ============================================================================