Odoo retira XML-RPC y JSON-RPC: qué cambia con JSON-2
Si tienes integraciones con Odoo, hay una fecha que conviene apuntar. Los puntos de acceso /xmlrpc, /xmlrpc/2 y /jsonrpc están deprecados desde Odoo 19 y su retirada está prevista para Odoo 22. El propio código de Odoo lo avisa en el registro del servidor. Su sustituta es la API JSON-2.
Qué se retira y qué no
Se retira: las API externas en /xmlrpc, /xmlrpc/2 y /jsonrpc. Según la documentación de Odoo, el servicio db ya desaparece en Odoo 20, y common y object están previstos para Odoo 22.
No se retira: las rutas jsonrpc de los controladores, como las que usa el cliente web. El aviso no las afecta.
Cómo es una llamada JSON-2
Cada método del ORM tiene su propia URL, y la autenticación es una clave API:
curl -X POST https://tu-odoo.com/json/2/res.partner/search_read \
-H "Authorization: Bearer TU_CLAVE_API" \
-H "X-Odoo-Database: mi_base" \
-H "Content-Type: application/json" \
-d '{"domain":[["is_company","=",true]],"fields":["name"],"limit":5}'
Las diferencias que más afectan
Solo argumentos con nombre
En JSON-RPC podías pasar argumentos por posición. En JSON-2 todos llevan nombre:
| Método | JSON-RPC | JSON-2 |
|---|---|---|
search_count | args: [domain] | {"domain": [...]} |
create | args: [valores] | {"vals_list": [valores]} |
| Métodos de registro | ids como primer argumento | {"ids": [...]} |
Errores con códigos HTTP
JSON-RPC responde con HTTP 200 y el error dentro del cuerpo. JSON-2 usa los códigos HTTP, por ejemplo 401 para una clave no válida.
Sin sesiones
Cada petición lleva la clave API. No hay que hacer login ni guardar el uid.
Qué hacer con tus integraciones
- Haz inventario. Busca en tus scripts
xmlrpc,/jsonrpcy librerías comoodoorpc. - Revisa los registros. Odoo avisa cuando recibe peticiones por las vías deprecadas.
- Crea claves API por integración, para poder revocarlas por separado.
- Migra lo crítico antes de actualizar a Odoo 22.
Si necesitas compatibilidad con varias versiones
JSON-2 solo existe desde Odoo 19. Si tu integración debe funcionar con versiones anteriores, puedes elegir la vía según la versión del servidor, que se obtiene en /web/webclient/version_info.
En MultiERP Móvil lo resolvemos así:
- Con contraseña: sesión web, en todas las versiones. Esta vía no está afectada por la retirada.
- Con clave API en Odoo 19 o superior: JSON-2.
- Con clave API en Odoo 14 a 18:
/jsonrpc.
Lo explicamos con más detalle en cómo conectar una app móvil con Odoo.
Preguntas frecuentes
¿Mis integraciones dejan de funcionar en Odoo 19?
No. Siguen funcionando, aunque deprecadas. El riesgo llega con la retirada prevista para Odoo 22.
¿JSON-2 está disponible en Odoo 18?
No. Está disponible desde Odoo 19. En versiones anteriores hay que seguir usando XML-RPC o JSON-RPC.
¿Necesito una clave API?
Sí. JSON-2 se autentica con una clave API creada para el usuario, y cada llamada se ejecuta con sus permisos.