Promotions

  • RH plus : Gestion avancée des ressources humaines

    Ce module apporte une couche d'ergonomie et des fonctionnalités complémentaires au module de gestion des ressources humaines standard de Dolibarr, telles que la facilité de créer des demandes d'absences depuis le planning salariés, l'ajout de taux de TVA automatique,l'intégration du barème km sur la tranche 1 et de google maps.

    145,00 €  (348€)

Nouveaux produits

  • Focus — Thème clair/sombre et espace de travail pour Dolibarr

    Un Dolibarr plus clair au quotidien : clients, contacts, devis, factures et produits dans un espace personnalisable. Modes clair et sombre, profils métier et listes adaptées au mobile. Support par email et mises à jour inclus pendant 12 mois.

    49,00 €
  • Vigilance sous-traitants

    Suivez l'obligation de vigilance envers vos sous-traitants dans Dolibarr : collecte des attestations URSSAF et Kbis, suivi des échéances, relances automatiques, portail de dépôt pour vos fournisseurs, alertes sur les achats et dossier de preuve. Analyse des pièces en option avec votre propre clé Mistral AI.

    199,00 €

EasyAPI - API REST professionnelle pour Dolibarr (32 domaines du cœur) + MCP

mp23914d20260607102352

API REST professionnelle pour Dolibarr : 32 domaines du cœur avec permissions natives, idempotence, résilience, docs Scalar et serveur MCP pour agents IA.

290,00 €
HT

  • Auteur EasySoft Tech SL
  • Version du module 2.28.0
  • Date de sortie 07/06/2026
  • Accès aux mises à jour et aux téléchargements 1 an
  • Comment contacter l'assistance info@easysoft.es
  • Compatibilité Dolibarr V15 - V24   -   PHP7.0 - 8.3
  • Dernière mise à jour 29/10/2026 22:30

Plus d'infos...

EasySoft Tech - Des solutions qui propulsent votre entreprise

L’API REST que Dolibarr devrait fournir de série

EasyAPI réimplémente les 32 domaines du core de Dolibarr (ventes, achats, stock, comptabilité, projets, RH, associations…) sur un contrat unique : le même envelope de réponse, la même taxonomie d’erreurs, l’idempotence sur toute écriture et un serveur MCP pour les agents IA. Vos permissions et votre ACL Dolibarr restent maîtresses.

32
domaines du core réimplémentés
98
ressources EAPI auto-découvertes
MCP
serveur natif pour les agents IA
V15–V24
Dolibarr compatible · PHP 7.4–8.3

Le problème qu’il résout

L’API fournie de série avec Dolibarr couvre le cas basique. Les problèmes arrivent quand l’intégration doit tenir en production : réessais après une coupure réseau, permissions réellement contrôlées, plusieurs sociétés dans la même installation et documents qui doivent bien totaliser. Ce sont cinq défauts concrets, et aucun ne prévient quand il se produit.

Ce que vous rencontrez Ce que ça vous coûte
Un POST renvoie l’id brut et le GET l’objet : chaque domaine répond à sa façon Une couche de normalisation dans votre code, différente pour chaque ressource, à maintenir pour toujours
Un réessai après un timeout recrée le document : l’en-tête Idempotency-Key n’existe pas Des factures et des encaissements en double que quelqu’un doit annuler et rapprocher à la main
Supprimer un paiement par API renvoie 500 sur Dolibarr 20 ou plus : la signature de Paiement::delete() a changé avec la 20 La seule voie documentée pour défaire un encaissement ne fonctionne plus au moment où vous en avez besoin
En multi-société, une DOLAPIKEY valide d’une autre entité renvoie 503 « module inactif » L’API ne parle qu’à l’entité 1 : chaque société finit par avoir besoin de sa propre installation
Une ligne de facture avec recargo de equivalencia ou IRPF est enregistrée avec la taxe à 0 Le document totalise mal : vous encaissez moins ou vous retenez moins, et aucune erreur ne se déclenche
L’erreur dit seulement « socid field missing », sans le champ exact ni un request_id Support à l’aveugle : il faut reproduire à la main ce qui a déjà échoué en production

Le même envelope, les mêmes codes et les mêmes filtres sur les 32 domaines. On l’apprend une fois et ça sert pour tout : il n’y a pas une façon différente de paginer, de filtrer ou de lire l’erreur selon la ressource que vous touchez.

NOUVEAUTÉ 2.28

Ce que demande l’agent d’IA attend votre confirmation

Avec la confirmation humaine activée, une écriture demandée par un agent via MCP ne s’exécute pas. Elle attend dans Outils › Actions en attente (IA) avec ses données et un aperçu, et elle n’a lieu que lorsque la personne qui a connecté l’agent clique sur Confirmer.

  • Vous choisissez ce qui attend. Toutes les écritures, ou seulement l’envoi d’e-mails et les suppressions. L’option est désactivée par défaut : la mise à jour ne change rien.
  • L’agent ne peut pas se confirmer lui-même. La confirmation n’existe pas pour le MCP : elle se fait dans Dolibarr ou via l’API REST (POST /mcp/pending/{token}/confirm), et seule la personne qui a demandé l’action peut la donner.
  • Une seule fois, avec expiration. Chaque action se confirme une fois et expire au bout de 10 minutes ; le délai va jusqu’à 24 heures.
  • E-mails marqués. Un e-mail envoyé après confirmation porte X-AI-Generated et X-AI-Reviewed.
DANS LA 2.25

Qui vous doit quoi et depuis quand, et le prix que l’ERP appliquerait à chaque client

La version 2.25 a apporté des indicateurs métier qu’il fallait jusqu’ici reconstituer en additionnant les factures à la main. Le MCP, lui, indique à l’agent ce que fait chaque opération avant qu’il ne l’appelle.

  • Ancienneté des créances. GET /invoices/kpis/aging et GET /supplier-invoices/kpis/aging répartissent le reste dû entre non échu, 1-30, 31-60, 61-90 et plus de 90 jours. Les tranches se règlent avec ?buckets=0,15,45 et ?group=thirdparty donne le détail par tiers. Ils suivent l’ACL des listes : le commercial qui ne voit que ses clients ne voit que la dette de ces clients.
  • Délais moyens et vrai reste dû. /invoices/kpis ajoute dso et /supplier-invoices/kpis ajoute dpo, les délais moyens d’encaissement et de paiement sur les 90 derniers jours. Les KPI outstanding et overdue additionnent ce qui reste vraiment dû : ils déduisent les paiements partiels, les avoirs et les acomptes avec le même calcul que getRemainToPay() du cœur.
  • Prix effectif par client. GET /products/{id}/price?socid=&qty= renvoie le prix que l’ERP mettrait sur la ligne pour ce client et cette quantité, avec TVA, surtaxe et retenue à la source, les totaux et l’origine du prix : base, price_level, customer_price ou quantity.
  • Des erreurs sans SQL. Le message du moteur de base de données reste dans le syslog avec le request_id, et la réponse porte un code exploitable : un doublon donne un 409 avec reason: duplicate_record, et un verrou un 503 avec Retry-After: 2 pour réessayer.
  • Chaque opération déclare son effet. x-effect indique si elle lit (read), écrit dans l’ERP (internal), sort vers l’extérieur (external) ou n’a pas de retour arrière (irreversible), et le MCP le traduit en readOnlyHint et destructiveHint. Les suppressions par MCP peuvent être interdites dans la configuration (EASYAPI_MCP_ALLOW_DELETE) ou utilisateur par utilisateur, et c’est le réglage le plus strict qui s’applique.
  • IBAN masqué. Par MCP, l’IBAN, le numéro de compte et la référence du mandat des comptes bancaires des tiers ne montrent que les 4 derniers caractères. Par REST, rien ne change.

Un aperçu du résultat

La spécification OpenAPI se génère toute seule depuis les ressources et se sert à l’intérieur du module, filtrée selon les permissions de l’utilisateur qui la consulte.

Documentation d’EasyAPI avec Scalar : navigation par domaines, sélecteur de serveur et authentification avec DOLAPIKEY
Les 32 domaines navigables, avec sélecteur de serveur et authentification par DOLAPIKEY. Chaque opération apporte son schéma et un exemple prêt à lancer.

Comparaison avec l’API native

Dimension API native de Dolibarr EasyAPI
Couverture Plus de 50 classes API réparties dans les modules du core, avec une couverture inégale : en comptabilité, par exemple, le seul endpoint est le dump des données 32 domaines du core complets, avec leurs sous-ressources : lignes, contacts, paiements, remises…
Forme de réponse Hétérogène : un POST renvoie un entier brut, un autre l’objet Envelope uniforme {success, data, meta} : le POST répond 201 avec l’enregistrement créé
Erreurs Des codes et des messages disparates, sans taxonomie et sans rien que vous puissiez citer dans un ticket Taxonomie de 16 types, le champ exact dans error.fields, et request_id + doc_url dans toutes
Idempotence N’existe pas Réservation atomique par Idempotency-Key sur toute écriture, y compris les transitions d’état
Opérations en masse N’existent pas 207 Multi-Status en création, modification et suppression, jusqu’à 100 éléments par lot et avec le résultat de chacun
Requêtes Des filtres SQL bruts à écrire à la main, sans tri ni choix des champs Filtres et tri en JSON, recherche, sélection de champs, ressources imbriquées, pagination par page et par curseur
Résilience N’existe pas Limite de requêtes, réessai des verrous de base de données, concurrence optimiste et mode maintenance
Sécurité Des droits natifs, avec de vrais défauts : la requête des commerciaux renvoie 401 là où un 403 s’impose Les mêmes droits natifs, avec l’ACL par enregistrement corrigée et uniforme : 403 correct et sans fuites entre tiers ni entre entités
Documentation Explorateur Swagger basique OpenAPI généré depuis le code, avec Scalar, Swagger UI et Redoc embarqués et filtré par permissions
Extensibilité Il faut toucher le core pour ajouter des endpoints Auto-découverte : vous créez un dossier dans votre propre module et vos endpoints apparaissent documentés

Comment ça s’utilise

Authentification avec la DOLAPIKEY de votre utilisateur dans l’en-tête. La même clé vaut comme Authorization: Bearer si votre serveur avale les en-têtes personnalisés. Une facture avec sa ligne en un seul appel :

FACTURE AVEC SA LIGNE, EN UNE SEULE REQUÊTE
curl -X POST "https://tu-dolibarr.com/custom/easyapi/api/invoices" \
  -H "DOLAPIKEY: tu_clave" \
  -H "Idempotency-Key: pedido-4417" \
  -H "Content-Type: application/json" \
  -d '{"socid": 128, "lines": [{"fk_product": 55, "qty": 2, "subprice": 49.90}]}'
201 · LA FACTURE NAÎT EN BROUILLON AVEC SA REF PROVISOIRE
{
  "success": true,
  "data": {
    "id": 902,
    "ref": "(PROV902)",
    "socid": 128,
    "statut": 0,
    "total_ttc": 119.76,
    "lines": [ { "id": 3311, "qty": 2, "subprice": 49.90 } ]
  }
}
422 · L’ERREUR VOUS DIT LE CHAMP, PAS SEULEMENT QUE QUELQUE CHOSE A ÉCHOUÉ
{
  "success": false,
  "error": {
    "type": "validation_error",
    "code": 422,
    "message": "Validation failed",
    "fields": { "socid": "does not exist" },
    "request_id": "req_7f3a91c2",
    "doc_url": "https://easysoft.es/docs/api#validation_error"
  }
}

La ref définitive est attribuée par la validation, c’est ainsi que fonctionne Dolibarr : POST /invoices/902/validate remplace le (PROV902) par le numéro de la série et recalcule les totaux. Renvoyez la même requête avec la même Idempotency-Key et vous recevrez la facture d’avant, pas une seconde, avec l’en-tête Idempotent-Replayed: true qui signale qu’elle n’a pas été réexécutée.

Ce qui est inclus

Des écritures qui ne se dupliquent pas
Idempotency-Key avec réservation atomique et replay annoncé sur toute écriture, y compris les transitions d’état (valider, payer, clôturer).
Des erreurs qui s’expliquent d’elles-mêmes
Une taxonomie unique de 16 types, le détail par champ et deux données pour le ticket : l’identifiant de la requête et le lien vers le document de l’erreur.
Des requêtes sans SQL à la main
Filtres, tri, recherche et sélection de champs en JSON ; pagination par page et par curseur pour parcourir de grandes tables sans perdre de lignes.
Vos permissions, telles quelles
Les droits natifs de Dolibarr plus l’ACL par enregistrement corrigée : un commercial ne voit pas ce qui n’est pas à lui, et le 403 apparaît là où il faut.
Serveur MCP pour les agents
Endpoint POST /mcp pour Claude, Cursor ou tout client MCP, authentifié avec votre clé et limitable aux domaines que vous voulez.
Résilience configurable
Limite de requêtes, réessai des verrous de base de données, concurrence optimiste avec ETag, mode maintenance et une limite de taille de corps. Le tout par constantes.

À quoi ça sert

  • Synchroniser une boutique en ligne ou une marketplace : commandes, stock et prix contre votre base de données, sans écrire de SQL
  • Une appli mobile pour les commerciaux avec session par cookie HttpOnly, où la clé de l’ERP n’arrive jamais au navigateur
  • Des tableaux de bord et de la BI qui lisent les 32 domaines avec filtres et pagination par curseur
  • Des automatisations et des agents IA connectés par MCP à votre propre ERP, avec les règles d’écriture que vous décidez
  • Plusieurs sociétés servies depuis une seule API, chaque utilisateur dans son entité
  • Un ERP externe qui doit créer des factures et des encaissements en sachant qu’un réessai ne duplique rien

Mise en route

1
Décompressez le ZIP dans custom/easyapi et lancez composer install --no-dev --optimize-autoloader.
2
Activez EasyAPI dans Configuration → Modules et ouvrez son écran de configuration : CORS, session, limites et MCP se règlent depuis là.
3
Copiez la clé de votre utilisateur (Utilisateur → onglet API) et vérifiez qu’elle répond : GET /me vous renvoie qui vous êtes.
4
Ouvrez /docs et naviguez dans les 32 domaines. Si votre serveur est nginx, appliquez le bloc du guide inclus avant de valider quoi que ce soit.

Prérequis

Dolibarr V15 à V24 (testé sur la 18 et la 24 ; les signatures du core sont vérifiées de la 10 à la 24)
PHP 7.4 à 8.3, avec curl, json et mbstring
Base de données MySQL 5.7+ · MariaDB 10.2+ · PostgreSQL 10+
Mises à jour 365 jours d’accès aux mises à jour

Avant d’acheter

Puis-je l’adapter à mon cas ?
Oui. Vous recevez tout le code source et vous pouvez le lire, le modifier et l’adapter sans demander la permission. En plus, les ressources se découvrent toutes seules, donc le plus courant est que vous ajoutiez vos propres endpoints depuis votre module au lieu de toucher au nôtre.
Comment le tester sans risquer mes données ?
Installez-le sur une copie de votre Dolibarr et appelez GET /status : il répond sans toucher un seul enregistrement. Toutes les lectures sont inoffensives. Les écritures, elles, créent de vraies données, donc testez-les sur cette copie : ce que garantit Idempotency-Key, c’est qu’un réessai après une coupure réseau ne vous duplique pas l’enregistrement, pas que l’opération soit réversible.
Et si quelque chose ne colle pas avec mon installation ?
Écrivez-nous à info@easysoft.es avant d’acheter et on regarde ça avec vous : version de Dolibarr, PHP, hébergement et ce que vous devez intégrer. On préfère vous dire que ça ne colle pas plutôt que de vous vendre quelque chose qui ne vous sert pas.
Mon intégration va-t-elle casser lors d’une mise à jour ?
Le contrat est une API v1 stable et chaque réponse le déclare dans l’en-tête X-EasyAPI-Version. Dans v1 n’entrent que des changements compatibles : nouveaux champs optionnels, nouveaux endpoints, nouveaux en-têtes. Un changement qui casse le contrat sortirait en v2, et votre intégration resterait en v1 pendant que vous migrez quand ça vous arrange.
Que se passe-t-il quand les 365 jours expirent ?
Le module que vous avez déjà continue de fonctionner : rien ne se désactive ni ne se bloque. Ce qui se termine, c’est l’accès aux mises à jour et aux nouveaux téléchargements, ainsi que le support par e-mail. Si plus tard vous voulez reprendre, ça se renouvelle.

Maintenance active

EasyAPI n’est pas un module publié et oublié : la version actuelle est la 2.28.0 et chaque livraison ajoute des tests qui tiennent ce qu’elle corrige. La 2.28 apporte un test pour chaque règle de la confirmation humaine, vérifié en cassant la règle exprès, un test navigateur de la page des actions en attente et une vérification HTTP sur Dolibarr 15, 18 et 24. En plus des tests, chaque release passe une QA sur des instances réelles de Dolibarr avant publication.

31
modules publiés sur Dolistore
100 %
code source complet
8
langues dans l’interface
365
jours de mises à jour

Ça colle à ce que vous devez intégrer ?

Racontez-nous votre cas et on vous dit si EasyAPI vous sert — et sinon, on vous le dit aussi.

info@easysoft.es www.easysoft.es



If you think this module is a fork of another one (published after the first one) or violates some terms or conditions of use (for users or vendors), you can make a report at dolistore@dolibarr.org