The odoo_api
crate provides a type-safe and full-coverage implementation
of the Odoo JSON-RPC API, including ORM and Web methods. It supports sessioning,
multi-database, async and blocking via [reqwest
], and bring-your-own requests.
For a full list of supported API methods, see [service
].
By default, odoo_api
uses [reqwest
] as its HTTP implementation. It is also
possible to provide your own HTTP implementation (see [OdooClient
] for more info).
To use the default [reqwest
] implementation, add this to your Cargo.toml
:
toml
[dependencies]
odoo_api = "0.2"
Then make your requests: ```rust use odoo_api::{OdooClient, jvec, jmap};
// build the client and authenticate let url = "https://demo.odoo.com"; let client = OdooClient::newreqwestasync(url)? .authenticate( "some-database", "admin", "password", ).await?;
// fetch a list of users let users = client.execute( "res.users", "search", jvec![] ).send().await?;
// fetch the login and partnerid fields from user id=1 let info = client.executekw( "res.users", "read", jvec![[1]], jmap!{ "fields": ["login", "partner_id"] } ).send().await?;
// fetch a list of databases let databases = client.db_list(false).send().await?;
// fetch server version info let versioninfo = client.commonversion().send().await?; ```