Odoo API Menggunakan JSON-RPC

Aziz Adi Nugroho
3 min readJan 21, 2022

--

Pada dasarnya, Odoo telah menyediakan XML-RPC untuk berinteraksi dengan aplikasi eksternal. Selain XML-RPC, Odoo juga menyediakan opsi lain yaitu JSON-RPC. Opsi ini mungkin kurang populer dibandingkan dengan XML-RPC, karena Odoo tidak mendokumentasikannya secara detail. Maka dari itu, artikel ini akan membahas bagaimana implementasi API menggunakan JSON-RPC di Odoo.

Pada kasus pertama, kita akan membuat endpoint API untuk search data purchase order, dengan po_number sebagai parameter pencariannya. path yang diregistrasi adalah /purchase/search.

Buat file purchase_api.py dan letakkan di folder controller. Disini kita membuat buat modul baru bernama api_jsonrpc.

Pada endpoint API ini, kita akan memberikan beberapa data purchase order kepada client seperti nomor PO, nama vendor, kode produk, harga produk dan kuantitas produk. Script-nya sebagai berikut:

Membuat Endpoint untuk Pencarian PO

Mari kita coba hit endpoint API tersebut dengan aplikasi Postman seperti berikut:

Hit Endpoint dengan Postman

Maka kita akan mendapat response seperti berikut:

Sebagai catatan, penggunaan sudo() diperlukan karena kita tidak mendefinisikan parameter auth pada route. Sehingga pihak manapun yang mengetahui endpoint tersebut dapat mengakses fungsinya, dalam hal ini fungsi search.

Pada kasus berikutnya, kita akan membuat endpoint yang digunakan untuk create data purchase order. Parameter yang dibutuhkan untuk membuat purchase order adalah nama vendor, kode produk, harga produk, kuantitas produk. path yang diregistrasi adalah /purchase/create. Berikut script-nya:

Disini parameter auth dideskripsikan dengan ‘api_key’. Fungsinya untuk memberikan hak akses hanya kepada pemilik key. Untuk itu kita perlu menginstal add-ons tambahan dari OCA yaitu auth_api_key. Jangan lupa untuk menambahkan modul tersebut pada parameter depends di file __manifest__.py.

Dependensi pada modul auth_api_key dari OCA

Setelah itu kita perlu membuat API key pada menu setting -> technical -> auth api key.

Mari kita coba hit endpoint tersebut. Pada headers tambahkan parameter api_key.

Maka kita akan mendapat response sebagai berikut:

--

--

Aziz Adi Nugroho

Python, Odoo ERP and Machine Learning Enthusiast | Lecture | Profesional Instructor