Aller au contenu principal

Référence API

Toutes les routes sont servies sur http://localhost:8731.

Catalogue & Config

MéthodeRouteDescription
GET/api/catalogRetourne le contenu complet de catalog.json
GET/api/configRetourne { scanCount, anthropicApiKey, devisCreateurMail, replySignature }

Leads

MéthodeRouteDescription
GET/api/leadsListe tous les leads (subset sans body, replyDraft, entryId)
GET/api/lead?id=...Détail complet d'un lead + hasQuote, quoteName, quoteId
POST/api/lead?id=...Mise à jour partielle (patch) d'un lead
POST/api/lead/refresh?id=...Relit le mail depuis Outlook via entryId
POST/api/match-quote?id=...Auto-association d'un PDF devis
POST/api/delete-quote?id=...Supprime le devis associé et blackliste le PDF
POST/api/upload-quote?id=...Upload d'un PDF en base64 ({ name, data })

GET /api/leads — réponse

[
{
"id": "john.doe@example.com/20260601T120000_john.doe.json",
"email": "john.doe@example.com",
"prenom": "John",
"nom": "Doe",
"subject": "Demande CANoe",
"date": "2026-06-01T12:00:00",
"status": "devis non demande",
"products": ["CANoe"],
"options": ["Maintenance"],
"hasQuote": false
}
]

POST /api/lead?id=... — body

{
"status": "devis demande",
"replyDraft": "Bonjour John,\n\nMerci..."
}

Seuls les champs fournis sont mis à jour (updatedAt est toujours mis à jour).

Outlook & Mail

MéthodeRouteParamètresDescription
GET/api/outlook-status{ connected: true|false }
POST/api/connect-outlookForce l'initialisation COM
POST/api/scan?count=NScanne les N derniers mails (défaut 50)
POST/api/generate-quote?id=...&preview=0|1Crée la demande de devis interne
POST/api/send?id=...&direct=0|1Envoie la réponse client
POST/api/open-mail?id=...Ouvre le mail dans Outlook
POST/api/open-folder?id=...Ouvre le dossier du lead dans l'explorateur

POST /api/scan — réponse

{
"scanned": 50,
"new": 3,
"updated": 1,
"quotes": 1
}

POST /api/generate-quote — body optionnel

{
"quoteDraft": "Bonjour,\nNous avons besoin de 2x CANoe..."
}

Si preview=1, le mail est créé et affiché dans Outlook sans être envoyé.

POST /api/send — body optionnel

{
"replyDraft": "Bonjour John,\n\nVeuillez trouver..."
}

Si direct=0, le mail est affiché dans Outlook (Display()). Si direct=1, il est envoyé immédiatement.

Fichiers

MéthodeRouteDescription
GET/api/list-quotesListe les QUOTE_*.pdf dans bdd/quotes/
GET/api/raw-file?path=...Sert un fichier (protection traversal de chemin)
GET/api/file?id=...&name=...Sert un fichier depuis le dossier d'un lead

Assets statiques

MéthodeRouteDescription
GET/ ou /index.htmlSert src/front/index.html
GET/*.jsSert les scripts JS
GET/*.cssSert les feuilles de style

Codes d'erreur

CodeSignification
200Succès
404Route ou fichier non trouvé
500Exception PowerShell — le body contient { error: "message" }