Skip to main content

odoo-api-integration

Odoo 18 external API integration — JSON-RPC, controllers, FastAPI patterns

ソース情報

リポジトリ
Insightpulseai/odoo
ソースの最終更新活動
2026年4月9日 11:24
検出された SKILL.md の言語
英語
スター
6
フォーク
2

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
odoo_api_integration
description
Odoo 18 external API integration — JSON-RPC, controllers, FastAPI patterns
category
integration
priority
high
version
1.0
# API Integration ## JSON-RPC (Primary External API) Endpoint: /jsonrpc ```python import json, urllib.request def rpc(url, service, method, *args): payload = json.dumps({ "jsonrpc": "2.0", "method": "call", "id": 1, "params": {"service": service, "method": method, "args": list(args)} }).encode() req = urllib.request.Request(url, payload, {"Content-Type": "application/json"}) return json.loads(urllib.request.urlopen(req).read())["result"] ``` ## Authentication ```python uid = rpc(url, "common", "authenticate", db, user, password, {}) ``` ## CRUD via execute_kw ```python rpc(url, "object", "execute_kw", db, uid, pwd, model, method, args, kwargs) # Methods: search, search_read, read, create, write, unlink, search_count ``` ## HTTP Controllers ```python from odoo import http class MyController(http.Controller): @http.route('/my/endpoint', type='json', auth='user', methods=['POST']) def my_endpoint(self, **kw): return {'status': 'ok'} ``` - Controller file: name after module (my_module.py), NOT main.py - type='json' for JSON-RPC, type='http' for standard HTTP - auth='user' (logged in), 'public' (anyone), 'none' (no session) ## OCA FastAPI (Recommended for Agent APIs) - Module: fastapi from OCA/rest-framework - Pydantic type safety, OpenAPI auto-docs - Native Odoo ORM access in routes - Preferred over custom controllers for AI agent communication ## Context Flags (Suppress Side Effects) ```python context = { 'no_reset_password': True, # No email invite 'mail_create_nosubscribe': True, # No follower subscription 'mail_notrack': True, # No tracking messages 'tracking_disable': True, # No field tracking } ``` ## Odoo 18 API Notes - Field: group_ids (not groups_id) on res.users - Portal/Internal User are exclusive groups — cannot assign both - Command tuples for relational writes: (4, id) add, (3, id) remove, (6, 0, [ids]) replace
GitHubで見る