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.
| Language | Guide | Repository |
|---|---|---|
| Python | Python SDK | ODXProxyClient-Python |
| Swift | Swift SDK | ODXProxyClient-Swift |
| Java | Java SDK | ODXProxyClient-Java |
| JavaScript | JavaScript SDK | odxproxy-client-js |
| PHP | PHP SDK | ODXProxyClient-PHP |
| .NET | .NET SDK | ODXProxyClient-Net |
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:
| SDK | v2 since | v1 entry point | v2 entry point |
|---|---|---|---|
| Python | 0.9.0 | client.for_instance(...) | client.for_instance_v2(...) |
| Swift | 1.1.0 | OdxApi | OdxApiV2 |
| Java / Kotlin | 0.9.0 | OdxProxy | OdxProxyV2 |
| JavaScript | 0.9.0 | module functions (search_read, …) | the v2 namespace (v2.search_read, …) |
| PHP | 0.9.0 | Odx::searchRead(...), … | Odx::v2() / Odx::with($config)->v2() |
| .NET | 1.1.0 | client.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.