Salió Odoo 19, todos hicimos reviews pero se nos olvidó una de las cosas más importantes de esta versión: la introducción de una nueva API. Así que en esta entrada vamos a contar un poco sus novedades y por qué nos parece el camino correcto. También les dejamos un video probando la API en vivo.
Dirección acertada
Odoo siempre tuvo API, la ya mencionada por todos XMLRPC. Desde Exemax desarrollamos Codize justamente utilizando dicha tecnología como modelo conector original. No fue algo simple, las librerías de XMLRPC son viejas y desactualizadas, no funciona bien en Angular o tiene dependencias que sencillamente no levantan y además el método de conexión es un poco más pesado que un API REST normal. Por lo tanto, hace varios años ya, decidimos hacer una Odoo API estilo REST usando Controllers de Odoo. No fuimos los únicos, en la comunidad de OCA hace tiempo que tienen algo similar, y es lógico, XMLRPC no es una solución ideal ni cerca.
Pero en este caso Odoo decide patear el tablero (por fin) y hacer un API REST normal, comunicándose con JSON (que hace años es un standard web) mediante un API que han decidido llama JSON-RPC.
¿Cómo se utiliza?
De forma muy sencilla, se genera un API Key con un usuario de Odoo, clave que solo se mostrará una vez y deberemos utilizarla en el Header del llamado, junto con el nombre de la base de datos. Fuera de eso, la URL es muy sencilla y lógica, vamos a llamar la dirección de odoo y solamente se le va a agregar /json/2 seguido del nombre del modelo de Odoo y la operación que queremos hacer. Por ejemplo, si queremos leer la lista completa de productos, vamos a llamar a /json/2/product.template/search_read se hace via un POST.
Ciertamente, esto hace que muchos proyectos como nuestro odoo-api o el api conector de OCA dejen de tener sentido (al menos a partir de la versión 19) pero era un mimo más que necesario para el sector de desarrollo de Odoo y desde acá lo celebramos.