API Reference¶
Les 6 services Djinn exposent des APIs REST (FastAPI) avec documentation Swagger auto-générée sur chaque service (/docs).
Convention
Toutes les routes sont préfixées /v1/ (ADR-005). Authentification via header X-API-Key.
Local vs Production
Les exemples de cette documentation utilisent des URLs NodePort (localhost:3000X) pour le développement local Docker Desktop K8s — accès direct aux services pour debug.
En production, toutes les requêtes passent par Kong APIM (https://api.djinn.solyntek.io) qui gère l'authentification par API key, le rate limiting et le routing vers les services internes. Les services ne sont jamais exposés directement en production (ClusterIP uniquement). Voir la documentation interne (Kong APIM, ADR-013).
Kong AI Gateway (Phase 3)
À partir de la Phase 3, le routing LLM sera géré par les plugins Kong AI Gateway (ai-proxy, ai-prompt-template, etc.) pour centraliser les prompts et le fallback multi-provider. Voir ADR-014 (documentation interne).
Premiers pas¶
1. Base URL¶
Toutes les requêtes passent par le gateway Kong :
Kong route chaque préfixe /v1/... vers le service interne correspondant : vous n'avez qu'une
seule URL et qu'une seule clé à gérer, quel que soit le service appelé.
2. Authentification¶
Chaque tenant reçoit une API key (associée à un consumer Kong), à passer dans le header
X-API-Key de chaque requête :
Sans clé valide, Kong répond 401 Unauthorized avant même d'atteindre le service. Le rate
limiting est également appliqué par clé (429 Too Many Requests au-delà du quota). Voir le
guide Authentification.
3. Premier appel : extraire une facture bout-en-bout¶
L'extraction est synchrone : un seul appel suffit pour envoyer le fichier et récupérer les données structurées.
curl -X POST https://api.djinn.solyntek.io/v1/extract \
-H "X-API-Key: your-api-key" \
-F "file=@facture.pdf" \
-F "document_type=invoice"
{
"document_type": "invoice",
"data": {
"vendor_name": "Acme SARL",
"invoice_number": "FA-2026-0042",
"invoice_date": "2026-06-30",
"total_ht": 1250.00,
"total_ttc": 1500.00,
"vat_amount": 250.00,
"iban": "FR7630001007941234567890185"
},
"confidence": 0.93
}
De là, le même JSON peut alimenter les autres services avec la même clé : générer un export
comptable (POST /v1/export/fec), vérifier le fournisseur
(GET /v1/companies/{siren}/compliance) — chaque appel étant journalisé
dans l'audit trail (GET /v1/events).
4. Explorer les APIs¶
Chaque page service ci-dessous combine un aperçu des routes, des exemples curl et une
référence interactive générée depuis la spec OpenAPI versionnée du service.
Services¶
-
POST /v1/extract— Factures, CV, pièces d'identitéPort
8000· NodePort30002 -
POST /v1/analyze— Scoring candidats vs postesPort
8003· NodePort30003 -
POST /v1/knowledge-bases/{id}/query— Chat RAGPort
8004· NodePort30004 -
POST /v1/export/fec— FEC, Sage, Pennylane, paiePort
8005· NodePort30005 -
POST /v1/events— Journal d'audit RGPDPort
8006· NodePort30006 -
GET /v1/companies/{siren}/compliancePort
8007· NodePort30007
Specs OpenAPI¶
Conformément à l'ADR-011, les specs OpenAPI de chaque service sont exportées depuis le code
(app.openapi(), sans démarrer de serveur) et committées dans ce repo — source de vérité unique
pour les clients tiers, sans besoin d'accès aux repos services.
| Service | Spec OpenAPI |
|---|---|
| Doc Extract | openapi/doc-extract-v1.json |
| Candidate Analyzer | openapi/candidate-analyzer-v1.json |
| AI Assistant | openapi/ai-assistant-v1.json |
| Export Hub | openapi/export-hub-v1.json |
| Audit Trail | openapi/audit-trail-v1.json |
| Company Verifier | openapi/company-verifier-v1.json |
MCP Gateway
Le service mcp-gateway est un cas à part : il expose les capacités des 6 services via le
protocole MCP (Model Context Protocol) sur l'endpoint /mcp, à destination des agents et
clients MCP (et non d'intégrations REST). Basé sur FastMCP, il n'expose pas d'objet
FastAPI et n'a donc pas de spec OpenAPI — c'est pourquoi il n'apparaît pas dans la liste
ci-dessus. Voir le catalogue d'outils MCP dans la documentation interne
(architecture/mcp-gateway.md).
Régénération : documentation/scripts/export_openapi.py (un run par service, depuis le venv de
ce service — voir le docstring du script).