MD-EASYAPI
EasyAPI
API REST potente y moderna para conectar Dolibarr con cualquier sistema.
- Compatible con Dolibarr
- Entrega inmediata
- Soporte en español
- Actualizaciones incluidas
EasyAPIAPI REST profesional para Dolibarr · 32 dominios · Idempotencia · Servidor MCP para agentes de IA |
|
| CARACTERÍSTICAS PRINCIPALES | |
| 32 dominios del core | Ventas, compras, stock, proyectos, contabilidad, RRHH, asociación y más — filtros, paginación, ordenación y selección de campos en todos los dominios. Operaciones masivas (bulk) con respuesta 207 Multi-Status por elemento. |
| Seguridad nativa + ACL | Autorización con los permisos NATIVOS de Dolibarr por dominio. ACL por registro (fk_soc / entidad) corregida y uniforme, sin fugas cross-socid/entidad. |
| Sesión por cookie HTTP-only | 4 modos configurables (disabled / static / hybrid / session) para front web sin manejar la api_key en JS. El modo session emite un JWT firmado HS256 con TTL y revocación (POST /logout). CORS con Allow-Credentials automático. |
| Idempotencia | Idempotency-Key en TODA escritura (reserva atómica, replay, conflicto 422): garantía «exactamente una vez» en creates, updates y transiciones de estado. |
| Validación 422 + errores | Validación declarativa con error.fields por regla (required/numeric/enum/exists/orden de fechas…). Taxonomía completa de errores (409, 410, 412, 413, 415, 428, 429, 503…) + request_id + doc_url. |
| Documentación OpenAPI | Scalar, Swagger UI y Redoc embebidos con ejemplos automáticos, agrupados por dominio y generados desde los metadatos reales de los Resources. |
| CAPA PRO — RESILIENCIA CONFIGURABLE | |
| Rate limiting | Límite de peticiones por usuario/ventana con bloqueo de fichero para evitar carreras. Totalmente configurable vía constantes EASYAPI_RATE_*. |
| Reintento de deadlocks | Reintento automático de transacciones de BD abortadas por deadlock (EASYAPI_DB_RETRY_*), transparencia total para el cliente. |
| ETag / If-Match | If-None-Match -> 304 Not Modified (ahorro de ancho de banda). If-Match -> concurrencia optimista con 412 Precondition Failed (sin sobreescrituras perdidas). |
| Modo mantenimiento | Endpoint /status y /health con Retry-After. Límite configurable de tamaño de cuerpo (EASYAPI_MAX_BODY_BYTES). |
| Bulk 207 Multi-Status | Creación, actualización y eliminación masiva (hasta 100 por lote) con resultado individual por elemento: éxito parcial sin abortar el lote. |
| SERVIDOR MCP NATIVO — IA / AGENTES | |
| Model Context Protocol | Servidor MCP autocontenido en PHP sin SDK ni servicios externos. Conecta Claude, Cursor o cualquier agente de IA a Dolibarr con tus permisos y ACL nativos. |
| 3 meta-tools | easyapi_search (búsqueda multi-idioma ES/EN/FR/DE/IT/PT con paginación por cursor), easyapi_describe (esquema de entrada + ejemplo con solo campos requeridos) y easyapi_invoke (ejecución con tus permisos). |
| Workflow compuesto | 4ª meta-tool experimental easyapi_invoke_workflow: secuencia encadenada de operaciones con placeholder $lastId y rollback best-effort (opt-in). |
| Transporte STDIO | Servidor MCP local por stdin/stdout (bin/mcp-stdio.php) para clientes que lanzan un proceso sin URL pública. Auth por variable de entorno EASYAPI_TOKEN. |
| Conformidad MCP 2025-11-25 | Negociación de protocolVersion, validación de Origin (anti DNS-rebinding), structuredContent + outputSchema, destructiveHint y caché APCu del mapa de operaciones. |
| DOCUMENTOS | |
| 28 recursos con docs | Subida, listado, descarga y generación de documentos en /products, /thirdparties, /boms, /manufacturing-orders, /contacts, /tickets, /donations, /partnerships, /knowledge/records, /users, /bank-accounts, /agenda-events, /recruitment/candidature, /recruitment/jobposition, /subscriptions, /invoices, /orders, /proposals, /contracts, /projects, /shipments, /receptions, /interventions, /expense-reports, /members, /supplier-invoices, /supplier-orders y /supplier-proposals. |
| Interoperabilidad UI | Directorios de salida alineados con la pestaña Documentos del core de Dolibarr: los ficheros subidos vía API aparecen en la UI y viceversa. Guardia method_exists para clases sin generateDocument() -> 422 limpio. |
| EXTENSIBILIDAD | |
| Auto-discovery | Resources auto-descubiertos desde carpetas eapi/ de cualquier módulo activo. Dos mecanismos: Resources EAPI (recomendado, con helpers declarativos) o hooks tradicionales (easyapiRegisterRoutes). |
| Integración transparente | Amplías la API sin tocar el core de Dolibarr ni el código de EasyAPI. Tus Resources heredan permisos, idempotencia, validación y resiliencia automáticamente. |
| NOVEDADES v2.24.1 | |
| Log limpio sin multicompany | La comprobación de la tabla llx_entity ya no lanza una consulta que falla. En instalaciones sin multicompany quedaba un error SQL anotado en el log en cada carga; ahora se pregunta al catálogo de la base de datos y el log del cliente queda limpio. |
| Escrituras a medida | Con ?fields= o Prefer: return=minimal, un POST, un PUT o un PATCH (y al validar) ya no devuelven el objeto completo. Sin proyección la respuesta sigue siendo la de siempre: es opt-in y nunca queda vacía. |
| Campos calculados | Se pueden pedir el pendiente de cobro (remaintopay), lo ya cobrado (totalpaid) y el enlace de pago (online_payment_url) de una factura, y las fechas de producto en ISO, sin bajarse el documento entero. |
| Cobros | Nuevo GET /payment-types con el diccionario de formas de pago de la instalación, y el cobro admite paymentcode. Cobrar solo una parte de una factura es un POST con amount, sin pasar por paymentsdistributed. |
| MCP: un resultado recortado mantiene la identidad | El id viaja en structuredContent, que antes se perdía. Y una operación oculta por permisos dice qué permiso falta en vez de «Operation not found». |
| Nada se pierde en silencio | Un campo que el recurso no declara ya no desaparece sin más: llega el aviso aditivo meta.unknown_fields, sin 422. Los operationId quedan congelados con un test contra baseline: añadir es aditivo, pero hay que declararlo en el mismo cambio. |
| Presupuestos, precios y «Acerca de» | GET /proposals/{id} devuelve las líneas por defecto (excepción deliberada a la doctrina aditiva, anotada en la guía) y nuevo GET /products/{id}/prices con el histórico de llx_product_price, solo lectura. En la pestaña «Acerca de», los enlaces del README (COPYING, ChangeLog.md, docs/*.md) ya no dan 404. |
| COMPATIBILIDAD Y REQUISITOS | |
| Dolibarr | Versión 15.0 o superior (compatible hasta 24.x). Familia del módulo: interface. |
| PHP | 7.0 – 8.3+ (Slim 4 requiere 7.4 en tiempo de ejecución; recomendado 8.1+). |
| Base de datos | MySQL 5.7+ / MariaDB 10.2+ / PostgreSQL 10+. Una tabla propia: llx_easyapi_sessions (sesiones JWT). |
| Servidor web | Apache con mod_rewrite o Nginx. Composer para instalar dependencias (Slim 4, PSR-7, FastRoute). |
| Idiomas | Interfaz en 8 idiomas: español, inglés, francés, alemán, italiano, portugués, catalán y gallego. |
| PRECIO Y SOPORTE | |
| Edición Pro | 290 € (HT). Incluye 365 días de acceso a actualizaciones y soporte por email. Módulo único, auto-contenido, sin SaaS ni telemetría. |
| Soporte | info@easysoft.es · www.easysoft.es · Ficha en Dolistore |
| Compatible con Dolibarr v15 o superior · PHP 7.0+ · MySQL / MariaDB / PostgreSQL · 8 idiomas | |
Cómo lo ponemos en marcha
- 1
Instalación y configuración
Lo instalamos en tu Dolibarr y lo dejamos listo para usar.
- 2
Adaptación a tu operativa
Ajustamos el módulo a tu forma de trabajar y a tus procesos.
- 3
Formación y soporte
Formamos a tu equipo y te acompañamos tras la puesta en marcha.
EasyAPI
¿Es compatible con mi versión de Dolibarr?
Damos soporte a las versiones recientes de Dolibarr y te asesoramos si usas una anterior.
¿Incluye soporte e instalación?
Sí. Nos encargamos de la instalación, la configuración inicial y el soporte posterior.
¿Podéis adaptarlo a mi caso?
Sí. Somos los desarrolladores del módulo, así que podemos ajustarlo o ampliarlo a medida.
