Saltar al contenido

Servicios Web

🐍 ODOO · DESARROLLO · API · INTEGRACIONES

Servicios Web en Odoo: XML-RPC y JSON-RPC

Mecanismos para que aplicaciones externas interactúen con Odoo sin pasar por la UI. Crear, leer, actualizar y eliminar datos vía protocolos estándar (XML-RPC y JSON-RPC) — ideales para integrar e-commerce, apps móviles, ERPs externos o automatizar tareas.

1¿Qué son los servicios web?

Permiten a aplicaciones externas interactuar con la BD y la lógica de negocio de Odoo a través de Internet, sin la interfaz frontend. Exponen funciones CRUD y ejecutan acciones mediante protocolos estándar como XML-RPC y JSON-RPC.

2¿Para qué sirven?

🔗 Integrar con otros sistemas
E-commerce, apps móviles, ERPs externos, plataformas de pago.
🤖 Automatizar tareas
Desde scripts o aplicaciones personalizadas.
⚙️ Operaciones programáticas
Sin acceso directo a la base de datos.

3Flujo de trabajo típico

1
Sistema externo (ej. tienda online) necesita crear pedido en Odoo.
2
Envía petición vía XML-RPC o JSON-RPC.
3
Odoo autentica, procesa y devuelve respuesta estructurada.
🔐 SEGURIDAD
El acceso está protegido por autenticación (usuario/contraseña o token) y depende de los permisos configurados (reglas de acceso y grupos). El servicio web respeta toda la lógica de seguridad del ORM.

4Ejemplo XML-RPC

Protocolo tradicional, usado desde versiones antiguas. Ejemplo: crear una venta para la compañía “INDUSTRIA ILUMINADORA DE ALMACENES” (ID 1) con cliente “XOCHILT CASAS CHAVEZ” (ID 10) usando la librería xmlrpc.client:

Código Python con xmlrpc.client para crear venta

Componentes del script:

HOST, PORT, DB, USER, PASS
Datos de conexión y credenciales.
uid
Login al servicio common, devuelve ID de usuario autenticado.
sock
Proxy del object service para llamar métodos.
args
Campos del registro a crear (sale.order).
order_id
Resultado del create — ID de la nueva venta.

Al ejecutar, obtenemos el ID de la venta:

Resultado: venta creada con id 31

Verificación en Odoo:

Venta visible en la UI con todos sus datos

5Ejemplo JSON-RPC

Protocolo similar pero con JSON como formato (más ligero y legible). Mismo escenario, pero con las librerías json y urllib.request:

Código Python con JSON-RPC para crear compra

Componentes del script:

data
Construye payload JSON para autenticación (service: common, method: login).
req
Petición POST que decodifica respuesta JSON y verifica errores.
uid
Confirma la autenticación tras la petición.
create
Segunda llamada con el método create sobre purchase.order.

Resultado de la ejecución:

Resultado: compra creada con id 13

Verificación en Odoo:

Compra visible en la UI con todos sus datos

6Consejos rápidos

✅ Prefiere JSON-RPC
Más ligero y fácil de debuggear que XML-RPC.
⚠️ Verifica permisos
Define bien grupos de usuario y reglas de acceso para evitar exposiciones indebidas.
💡 Más allá de create
Los ejemplos crean — también puedes read, write, unlink, search y llamar cualquier método del modelo.
🆕 Considera JSON-2 en Odoo 19
Odoo 19 introduce JSON-2 con sintaxis más RESTful — vale la pena explorarlo si trabajas con la versión nueva.

📌 En resumen

Los servicios web son la puerta de entrada para cualquier integración con Odoo desde fuera. XML-RPC es el clásico, JSON-RPC el preferido por simplicidad. En Exdoo integramos Odoo con e-commerces, apps móviles, sistemas legacy y middleware vía estos protocolos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Te gustaría implementar Odoo en tu empresa?

12 años de experiencia · +60 implementaciones exitosas · Partner Gold de Odoo en México

Hablemos por WhatsApp