Informations générales
| Base URL | http://[IP_SERVEUR]/deviseurapi_v2/api.php |
| Format | JSON (application/json), UTF-8 |
| Authentification | Header X-API-Key obligatoire |
| Clés disponibles | n8n-key-2026 — workflow n8n
freescout-key-2026 — intégration FreeScout |
| CORS | Activé toutes origines |
Remplacer [IP_SERVEUR] par l'adresse du Mac mini (ex : 192.168.1.50).
POST /api.php?route=calculer
Calcule le prix de vente HT/TTC pour un produit selon ses caractéristiques et le profil client.
Corps de la requête
| Champ | Type | Statut | Description |
produit_code | string | Obligatoire | Code du produit (ex : carte_visite) |
caracteristiques | object | Obligatoire | Toutes les entrées : dimensions de prix (quantité, format…) + options (papier, impression…). Tout dans un seul objet. |
client_code | string | Optionnel | Code client — récupère automatiquement le CA depuis la base |
client_ca | float | Optionnel | CA cumulé HT (€). Ignoré si client_code est fourni. Défaut : 0 (marge maximale). |
Exemple — Carte de visite
POST /api.php?route=calculer
Headers: X-API-Key: n8n-key-2026
{
"produit_code": "carte_visite",
"caracteristiques": {
"quantite": 150,
"format": "85x55",
"papier": "couche_mat_350",
"impression": "quadri_rv",
"coins": "vifs",
"pelliculage": "aucun",
"orientation": "portrait"
},
"client_code": "DEMO001"
}
Exemple — Brochure 3 axes
{
"produit_code": "brochure",
"caracteristiques": {
"quantite": 250,
"format": "A5",
"nb_pages": 16,
"papier_int": "couche_115",
"papier_couv": "couche_250",
"reliure": "2pts_metal"
},
"client_ca": 7500
}
Réponse succès (200)
{
"success": true,
"produit": { "code": "carte_visite", "nom": "Carte de visite" },
"calcul": {
"combinaison_demandee": { "quantite": 150, "format": "85x55" },
"prix_base_interpolé": 21.25, // interpolé entre palier 100 et 200
"coef_options_total": 1.35, // produit de tous les coefs options
"detail_options": [
{ "option": "impression", "libelle": "Quadri recto/verso",
"coefficient": 1.35, "neutre": false, "defaut": false },
// ... options neutres avec coefficient=1.0
],
"prix_production": 28.6875,
"marge": { "label": "Client régulier", "coefficient": 1.35 }
},
"prix": {
"ht": 38.73,
"ttc": 46.48,
"tva": 7.75
},
"client": { "code": "DEMO001", "nom": "Client démo", "ca_cumule_ht": 7500 }
}
GET /api.php?route=produits
Liste des produits actifs avec dimensions, valeurs disponibles et options.
Réponse
{
"success": true,
"produits": [
{
"code": "carte_visite",
"nom": "Carte de visite",
"description": "Cartes de visite en 3 formats.",
"dimensions": [
{
"code": "quantite", "libelle": "Quantité",
"type": "numerique", "unite": "ex",
"valeurs_disponibles": [50, 100, 200, 300, 400, 500, 1000]
},
{
"code": "format", "libelle": "Format",
"type": "liste", "unite": null,
"valeurs_disponibles": ["55x55", "85x55", "90x50"]
}
],
"options": [
{
"code": "papier", "libelle": "Papier",
"valeurs": [
{ "code": "couche_mat_350", "libelle": "Couché mat 350g",
"coefficient": 1.0, "est_defaut": true },
{ "code": "creation_300", "libelle": "Papier création 300g",
"coefficient": 1.15, "est_defaut": false }
]
}
// ... autres options
]
}
// ... autres produits
]
}
GET /api.php?route=produits/{code}
Détail d'un seul produit (même structure qu'un élément de la liste).
GET /api.php?route=produits/carte_visite
Headers: X-API-Key: n8n-key-2026
Codes d'erreur
| HTTP | Message | Cause |
401 | Clé API invalide ou manquante | Header X-API-Key absent ou incorrect |
400 | Corps de requête JSON invalide | JSON malformé |
400 | Champ obligatoire manquant | produit_code ou caracteristiques absent |
400 | Dimension manquante : X | Une dimension de prix attendue n'est pas dans caracteristiques |
400 | Valeur 'X' inconnue pour l'option 'Y' | La valeur fournie ne correspond à aucune option_valeur en base |
404 | Produit introuvable ou inactif | Le produit_code n'existe pas ou est désactivé |
404 | Aucun prix trouvé | La combinaison liste demandée n'a aucune entrée dans la grille |
500 | Erreur interne | Erreur DB ou moteur — voir le message détaillé |
Format d'erreur
{
"success": false,
"error": "Message explicite",
"code": 400
}
Intégration n8n
| Nœud | HTTP Request |
| Method | POST |
| URL | http://[IP_SERVEUR]/deviseurapi_v2/api.php?route=calculer |
| Header name | X-API-Key |
| Header value | n8n-key-2026 |
| Body content type | JSON |
| Body | Objet avec produit_code et caracteristiques |
Récupérer le prix dans le workflow :
{{ $json.prix.ht }} — prix HT ·
{{ $json.prix.ttc }} — prix TTC ·
{{ $json.calcul.marge.label }} — palier marge appliqué
Tester avec curl
Lister les produits
curl -H "X-API-Key: n8n-key-2026" \
http://[IP_SERVEUR]/deviseurapi_v2/api.php?route=produits
Calculer un prix
curl -X POST \
-H "X-API-Key: n8n-key-2026" \
-H "Content-Type: application/json" \
-d '{"produit_code":"carte_visite","caracteristiques":{"quantite":150,"format":"85x55"}}' \
http://[IP_SERVEUR]/deviseurapi_v2/api.php?route=calculer