Odoo REST API接口服务

为AI代理提供与Odoo服务器交互的REST API参考文档,包括认证、请求/响应格式及操作限制。

  • by andhit-r
  • 本地部署
  • 更新于
在 GitHub 查看 andhit-r/odoo-mcp

使用说明

Odoo MCP — AI Agent API Reference

Project ini bertujuan menjadi panduan referensi bagi AI agar dapat berinteraksi dengan server Odoo melalui REST API secara efektif. Semua informasi di sini ditujukan untuk membantu AI memahami endpoint yang tersedia, cara autentikasi, format request/response, dan batasan operasional yang harus dipatuhi.

Dokumentasi ini berlaku untuk semua server Odoo yang menggunakan modul MuK REST. Tidak terikat pada server tertentu — konfigurasi koneksi disimpan di file .env masing-masing.


Tujuan Project

  • Menyediakan dokumentasi API Odoo (MuK REST) yang siap dikonsumsi oleh AI agent
  • Menjadi referensi tentang cara membaca, menulis, menghapus, dan memanggil method di Odoo melalui HTTP
  • Memastikan AI bertindak dengan aman dan tidak melakukan operasi destruktif tanpa persetujuan eksplisit dari pengguna

Struktur Dokumentasi

odoo-mcp/
├── README.md             ← File ini
└── docs/
    ├── INDEX.md          ← Indeks semua endpoint Model API
    └── model/
        ├── search.md         GET  /api/v1/search
        ├── name.md           GET  /api/v1/name
        ├── read.md           GET  /api/v1/read
        ├── search_read.md    GET  /api/v1/search_read
        ├── read_group.md     GET  /api/v1/read_group
        ├── create.md         POST /api/v1/create
        ├── write.md          PUT  /api/v1/write
        ├── unlink.md         DELETE /api/v1/unlink
        └── call.md           POST /api/v1/call

Mulai dari docs/INDEX.md untuk melihat daftar lengkap endpoint beserta deskripsinya.


Autentikasi

PENTING: File .env tidak di-commit ke repository, namun tersedia secara lokal di folder project masing-masing.

Setiap koneksi ke Odoo yang berbeda memiliki folder dan file .env-nya masing-masing. Struktur per-koneksi:

<nama-koneksi>/
└── .env    ← Kredensial khusus untuk koneksi ini

Format isi file .env:

TOKEN=<base64 dari username:password>
BASE_URL="https://odoo.example.com/"
URL_DOC="https://odoo.example.com/rest/docs?template=docs_standalone"

Gunakan sebagai header HTTP:

Authorization: Basic <TOKEN>

AI wajib membaca file .env secara langsung dari folder project yang aktif/relevan untuk mendapatkan nilai TOKEN, BASE_URL, dan URL_DOC. Jangan meminta pengguna menyediakan token secara manual.

Cara Membaca .env di Python

def load_env(path):
    env = {}
    with open(path) as f:
        for line in f:
            line = line.strip()
            if line and not line.startswith("#") and "=" in line:
                k, v = line.split("=", 1)
                env[k.strip()] = v.strip().strip('"')
    return env

# Sesuaikan path ke folder project yang aktif, contoh:
env = load_env("/home/andhit-r/antum-project/odoo-ypii-mcp/.env")
TOKEN = env["TOKEN"]
BASE_URL = env["BASE_URL"].rstrip("/")

Dokumentasi REST API Lengkap (URL_DOC)

Dokumentasi di project ini tidak mencakup semua endpoint yang tersedia.

Setiap file .env menyertakan variabel URL_DOC yang mengarah ke dokumentasi REST API lengkap dari server Odoo target (MuK REST interactive docs). Format:

URL_DOC="https://odoo.example.com/rest/docs?template=docs_standalone"

AI dapat dan sebaiknya mengakses URL_DOC untuk:

  • Menemukan endpoint atau method yang tidak tercakup di dokumentasi project ini
  • Memverifikasi parameter, tipe data, dan format request yang tepat
  • Mengeksplorasi resource atau model Odoo yang belum terdokumentasi di sini

Nilai URL_DOC dibaca dari file .env di folder project yang aktif. AI harus menggunakannya sebagai referensi utama untuk endpoint yang tidak ditemukan di docs/.


⚠️ ATURAN WAJIB UNTUK AI — Konfirmasi Sebelum Menghapus Data

AI HARUS SELALU meminta konfirmasi eksplisit dari pengguna sebelum melakukan operasi penghapusan data di Odoo.

Setiap kali AI menginterpretasikan bahwa pengguna ingin menghapus data (menggunakan endpoint DELETE /api/v1/unlink), AI wajib menampilkan prompt konfirmasi terlebih dahulu dan menunggu persetujuan sebelum menjalankan request.

Contoh Format Konfirmasi

Sebelum menghapus, AI harus menampilkan pesan seperti ini dan menunggu respons pengguna:


Konfirmasi Penghapusan Data

Anda akan menghapus data berikut secara permanen dari Odoo:

  • Model: nama.model
  • Record: ID [x, y, z] — nama record jika diketahui

Penghapusan tidak dapat dibatalkan.

Apakah Anda yakin ingin melanjutkan?

[ Ya, Hapus ]    [ Batal ]


Operasi yang Memerlukan Konfirmasi

Operasi Endpoint Wajib Konfirmasi
Hapus record DELETE /api/v1/unlink Ya
Arsipkan record PUT /api/v1/write dengan active: false Disarankan
Hapus massal DELETE /api/v1/unlink dengan banyak ID Ya, tampilkan jumlah dan daftar record

Operasi yang TIDAK Memerlukan Konfirmasi

Operasi baca (GET) dan tulis (POST/PUT) untuk membuat atau memperbarui data dapat dilakukan langsung tanpa konfirmasi, kecuali diminta oleh pengguna.


Referensi Cepat

Kebutuhan Endpoint
Cari record GET /api/v1/search_read/{model}
Baca detail by ID GET /api/v1/read/{model}
Buat record baru POST /api/v1/create/{model}
Update record PUT /api/v1/write/{model}
Hapus record DELETE /api/v1/unlink/{model} ⚠️ Konfirmasi dulu
Panggil method POST /api/v1/call/{model}/{method}