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 odoo_api::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?; ```