ODXProxy
SDKs

SDKs

Official ODXProxy client libraries for Python, Swift, Java, JavaScript, PHP, and .NET — all supporting both API versions.

ODXProxy speaks one JSON-RPC 2.0 protocol, so every SDK follows the same design: hold the proxy URL and x-api-key once, bind an Odoo instance with its credentials, then call one method per operation.

The .NET client is currently Windows x64 only (its core is a native Rust library); every other client runs anywhere its language does. The Java SDK is written in Kotlin and is the one to use from Kotlin too.

v1 and v2

Every SDK supports both API versions. v2 (Odoo's JSON-2, for Odoo 19 and later) lives in a separate session or namespace next to the v1 API, with the same method names, so moving a call to v2 is mostly a change of entry point:

SDKv2 sincev1 entry pointv2 entry point
Python0.9.0client.for_instance(...)client.for_instance_v2(...)
Swift1.1.0OdxApiOdxApiV2
Java / Kotlin0.9.0OdxProxyOdxProxyV2
JavaScript0.9.0module functions (search_read, …)the v2 namespace (v2.search_read, …)
PHP0.9.0Odx::searchRead(...), …Odx::v2() / Odx::with($config)->v2()
.NET1.1.0client.ExecuteAsync(OdxAction…)client.ForInstanceV2(...)

v2 also needs ODXProxy 0.9.0 or later on the server. Each SDK has a cached "is v2 available?" helper if you need to choose at runtime.

Errors

All SDKs map JSON-RPC error codes to typed exceptions and preserve the original code, message, and data. On v2 they also expose Odoo's HTTP status (401, 403, 404, 409, 422, 5xx), and they keep the proxy's -32000 separate from Odoo's 401. None of them retry on their own. See Error codes for the catalog.

Building with an AI agent?

The odxproxy-clients Claude Code skill teaches Claude this protocol on both API versions, and how to introspect your Odoo's real schema before it writes any model code.

On this page