API Dolibarr : retail FAQ sans casser l’existant

Version 1.0 – 3 novembre 2025

Objectif : vous fournir un guide complet, en mode « FAQ », pour exploiter l’API de Dolibarr dans un contexte retail tout en préservant la stabilité de votre installation actuelle.


1️⃣ Pourquoi passer par l’API Dolibarr en mode retail ?

Besoin retail Solution apportée par l’API
Gestion en temps réel des stocks Consultation et mise à jour instantanée des quantités via des endpoints REST.
Intégration avec un Point‑de‑Vente (PDV) Appels asynchrones depuis le terminal POS (JavaScript, Android, iOS).
Suivi des ventes par point de vente Export/import des factures et des paiements en quelques requêtes.
Synchronisation multi‑entreprise API multi‑company : chaque société possède son propre namespace.
Extension & automation Hooks, scripts PHP ou appels HTTP à automatiser les flux (re‑approvisionnement, tarification dynamique).

Bottom line : l’API de Dolibarr ne remplace pas votre interface d’administration ; elle agit comme un calque supplémentaire que vous pouvez activer uniquement sur les environnements de production que vous décidez de “router” vers l’API.


2️⃣ Installation & activation de l’API sans impacter le système existant

Étape Action Risque pour l’existant
1. Activer le module Extensions → Modules → Gestion des APIActiver “API REST”. Aucun impact direct ; le module ajoute uniquement des points d’entrée HTTP.
2. Configurer les routes Dans Administration → Système → API → Routes, vous pouvez choisir les sous‑domaines (ex. /api/retail). L’activation se fait par route, donc vos URLs classiques restent intactes.
3. Limiter les droits par défaut Créez d’abord un key avec le rôle “Read‑Only”. Les utilisateurs disposant d’un key plus puissant peuvent être ajoutés plus tard, sans toucher aux comptes existants.
4. Tests en mode “shadow” Utilisez un reverse‑proxy (NGINX) ou le module Rewrite pour rediriger uniquement les requêtes provenant d’une IP/developpeur dédié. Le trafic habituel ne passe jamais par /api/* tant que vous ne le décidez pas.
5. Désactiver le module en un clic Dans le tableau de bord, désactivez simplement “API REST”. Tous les endpoints retournent 404 ; aucune donnée n’est perdue.

Bon à savoir : La plupart des modules de l’API sont déconnectés du reste du système tant que vous ne les avez pas explicitement assignés à une route. C’est la clef pour éviter toute rupture accidentelle.


3️⃣ Authentification – Comment obtenir une clé API sans toucher aux comptes headers existants

  1. Accédez à Administration → Système → API → Authentification.
  2. Cliquez sur “Créer un key”.
  3. Nom du key : retail‑demo‑001.
  4. Rôle : API_ReadOnly.
  5. Durée : Indefinie (ou définissez une date d’expiration).
  6. IP autorisée (optionnelle) : IP_DE_VOTRE_POS.

*Ce processus crée uniquement un enregistrement de type api_key* dans la table user), distincte des utilisateurs “front‑office”. Aucun compte client existant n’est modifié.


4️⃣ Les appels les plus fréquents – Mini‑FAQ code

4.1 Lister les produits en stock (sans filtrer par défaut)

curl -X GET "https://ma-boutique.fr/api/retail/stock?mode=detail" \
-H "Authorization: Token retail-demo-001"

Réponse type

{
"status": "ok",
"data": [
{"id": 27, "designation":"Casquette", "qte": 150, "price": 9.90},
{"id": 53, "designation":"T-shirt", "qte": 34, "price": 19.50}
]
}

4.2 Déposer une vente depuis le PDV

POST /api/retail/transaction
Authorization: Token retail-demo-001
Content-Type: application/json
{
"type": "sale",
"customers": [{ "id": 12, "name":"Dupont Jean", "email":"j.dupont@mail.com"}],
"lines": [
{ "product_id": 27, "quantity": 2, "unit_price": 9.90 },
{ "product_id": 53, "quantity": 1, "unit_price": 19.50 }
],
"payment_method": "cash"
}

Note : La réponse comprend transaction_id et le statut de mise à jour du stock (décrés). Aucun champ supplémentaire n’est nécessaire dans votre table de ventes – tout est ajouté automatiquement.

4.3 Mettre à jour le prix d’un produit de façon non disruptive

curl -X PUT "https://ma-boutique.fr/api/retail/product/27/price" \
-H "Authorization: Token retail-demo-001" \
-d '{"price": 8.90}'

  • Answer : { "status":"ok", "product_id":27, "old_price":9.90, "new_price":8.90 }

Astuce : Utiliser la balise PUT et l’en‑tête If-Match vous permet d’annuler la modification si le prix a changé entre les deux appels (gestion des courses).


5️⃣ Gestion des multi‑companies – Pas de collision avec votre boutique principale

Situation Solution API Exemple
Une société supplémentaire (ex. boutique en ligne associée) Créez un key avec le champ company_id = 99. Authorization: Token retail-demo-002
Accès en lecture‑seule à plusieurs compañías Ajoutez company_id dans la query string (?company=99). /api/retail/stock?company=99
Migrations L’API accepte les identifiants legacy (legacy_id) pour faire le retrofit sans toucher aux tables product ou order. GET /api/retail/product/legacy/0015?api_token=…

Resultat : Vos flux retail sont isolés par company_id. Même si vous avez 5 boutiques, aucun risque de perte de données liée à un mauvais namespace.


6️⃣ Prévenir les régressions – Checklist avant de passer en production

✅ Action Description
1️⃣ Activer le mode “verbose” Dans Administration → Système → API → Debug, activez le log api_trace. Vous obtenez un fichier dolibarr.log contenant chaque endpoint appelé.
2️⃣ Exécuter la suite de tests automatisés Utilisez phpunit ou behat sur le répertoire tests/api du repo pour valider le comportement attendu.
3️⃣ Créer une branche de feature git checkout -b api-retail-2025 ; testez toutes les nouvelles routes avant de les merger.
4️⃣ Simuler le volume de trafic ab -n 500 -c 20 https://ma-boutique.fr/api/retail/stock et surveillez dolibarr.log pour tout débordement.
5️⃣ Sauvegarder le snapshot pg_dump dolibarr > dump_avant_api.sql – en cas de régression, il suffit de restaurer.
6️⃣ Déployer en canary sur 5 % du trafic Utilisez un routeur Nginx avec map $host $api_route { default ""; api-retail.example.com /api/retail; } puis redirigez uniquement un sous‑groupe d’utilisateurs.
7️⃣ Déclencher un git revert en 1 clic Si vous avez besoin d’un rollback instantané, le module “API” possède un bouton “Revert to stable”.


7️⃣ Bonnes pratiques pour rester “API‑first” sans bouleverser le core

Pratique Explication
Versionner vos endpoints (/v1/… ou /v2/…) Permet de garder les anciens appels fonctionnels tout en expérimentant de nouvelles fonctionnalités.
Utiliser les headers Accept et Content-Type Évite les collisions de données ; vous pouvez recevoir du JSON ou du XML selon vos besoins.
Limiter le payload Envoyez uniquement les champs nécessaires (product_id, quantity, unit_price) pour réduire le volume de traitement.
Seubre les réponses avec un code d’erreur uniformisé (200 OK, 400 Bad Request, 401 Unauthorized, 404 Not Found, 422 Unprocessable Entity) Facilite la gestion d’erreurs côté client sans avoir à décortiquer du HTML ou du PHP raw.
Documenter chaque endpoint avec OpenAPI 3.0 Copiez le fichier openapi.yaml généré par Dolibarr (/api/doc/openapi.yaml) et partagez‑le avec vos équipes.


8️⃣ Exemple complet : synchroniser votre PDV et votre boutique en temps réel

  1. Initialisation du client API (pseudocode en PHP)

<?php
require __DIR__.'/vendor/autoload.php';
$api = new DolibarrApi\Client([
'base_uri' => 'https://ma-boutique.fr/api/retail',
'api_token' => 'retail-demo-001',
'timeout' => 5,
]);
// 1️⃣ Lire le catalogue à chaque démarrage du PDV
$catalogue = $api->get('/product?limit=500');
// 2️⃣ Boucle de discount dynamique (ex: 10% de remise le vendredi)
if (date('N') == 5) {
foreach ($catalogue as &$p) {
$p->price *= 0.9; // remise 10%
}
$api->post('/product/update', ['body' => $catalogue]);
}
// 3️⃣ Notification de passage de stock à zéro
$api->post('/stock/alert', ['json' => ['product_id'=>27,'notify_email'=>'stock@alert.com']]);

  1. Gestion du webhook côté serveur

location /webhook/retail {
limit_req_zone $binary_remote_addr zone=api:10m rate=20r/s;
limit_req zone=api burst=10 nodelay;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}

Résultat : Le système retail se synchronise event‑driven avec la boutique, sans besoin de poller chaque minute.


9️⃣ FAQ rapides – Réponses aux questions les plus fréquentes

Question Réponse
Dois‑je modifier ma base de données pour activer l’API ? Non. L’API crée ses propres tables (api_keys, api_logs). Aucun schéma existant n’est touché.
Puis‑je désactiver l’API sans perdre les commandes déjà traitées ? Oui. Les transactions déjà en base restent rétro‑actives. Désactiver ne supprime que les endpoints.
Qu’est‑ce qui se passe si mon key est compromis ? Révoquez‑le immédiatement via API → Authentification → Supprimer. Toutes les requêtes portant ce token seront rejetées.
L’API introduit‑elle des appels asynchrones qui peuvent ralentir le front‑office ? Non, tant que vous n’utilisez pas les webhooks. Les appels sont stateless et timeout à 5 s par défaut.
Puis‑je limiter l’API à une IP uniquement ? Oui, dans le profil du key vous pouvez spécifier une ou plusieurs IPs autorisées.
Est‑ce que les champs personnalisés (ex. “code_barcode”) sont exportables ? Oui, ajoutez‑les dans le filtre ?_fields=code_barcode,price dans votre requête.
Je veux tester en local sans interférer avec ma boutique réelle. Lancez un conteneur Docker : docker run -p 8080:80 dolibar/dolibarr:latest ; activez l’API sur http://localhost:8080/api/retail.
Comment migrer mes scripts de paiement legacy vers l’API ? Conservez l’URL d’origine (ex. /payments.php) pour le front‑office, mais redirigez les appels du backend vers /api/retail/transaction via un proxy PHP.


🔚 Conclusion – Profiter de l’API sans faire sauter le système

  • Activation ciblée : n’activez que les routes nécessaires (/api/retail/*).
  • Authentification fine : créez des clefs dédiées aux scenarios retail; ne les mélangez pas avec les comptes admin.
  • Versionning & canary : gardez les releases de l’API sous contrôle, testez en petits flux avant le déploiement complet.
  • Rollback simple : un bouton d’activation/désactivation ou un docker‑compose vous ramène à la situation initiale en moins de 30 secondes.

En suivant la checklist et les bonnes pratiques ci‑dessus, votre boutique retail peut bénéficier pleinement de l’API Dolibarr – stocks en temps réel, synchronisation multi‑store, paiements automatisés – sans jamais compromettre le fonctionnement actuel de votre installation.

💡 Prochaine étape : créez votre premier key retail‑demo‑001, testez le endpoint /product depuis votre console, puis intégrez‑le dans votre PDV. Vous serez bientôt capable de publier des soldes, de mettre à jour les prix et de prévoir des alertes de rupture sans jamais toucher au cœur de Dolibarr.


Bonne intégration !

Pour toute question supplémentaire ou besoin de support technique, n’hésitez pas à ouvrir un ticket sur le forum officiel de Dolibarr ou à contacter notre équipe via le canal Slack #dolibarr‑api‑retail.

Publications similaires