Rust — getting started
The Rust SDK is the crate babelforce-manager-sdk.
It mirrors the TypeScript and Go SDKs at parity with each other.
Install
[dependencies]
babelforce-manager-sdk = "0.45"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
Connect
use babelforce_manager_sdk::{Auth, ManagerClient};
#[tokio::main]
async fn main() -> Result<(), babelforce_manager_sdk::ManagerError> {
let mgr = ManagerClient::connect(Auth::ClientCredentials {
client_id: "…".into(),
client_secret: "…".into(),
})
.await?; // base_url defaults to https://services.babelforce.com
for user in mgr.users.list_all().await? {
println!("{}", user.email);
}
Ok(())
}
Point at another host or tune retries with the builder:
use babelforce_manager_sdk::{Auth, ManagerClient, RetryPolicy};
let mgr = ManagerClient::builder(Auth::Bearer { token: "…".into() })
.base_url("https://acme.babelforce.com")
.retry(RetryPolicy::default())
.connect()
.await?;
See Authentication for all auth modes — Authorization Code + PKCE, client-credentials, bearer, and password-grant.
Create / enable / disable / delete
use babelforce_manager_sdk::gen::manager::models::CreateManagedUserRequest;
mgr.users.create(CreateManagedUserRequest::new("new.user@acme.com".into(), vec![])).await?;
mgr.users.enable(vec!["new.user@acme.com".into()]).await?;
mgr.users.disable(vec!["new.user@acme.com".into()]).await?;
mgr.users.delete(vec!["new.user@acme.com".into()]).await?;
Error handling
Every facade call returns Result<T, ManagerError>. A non-2xx response is the
ManagerError::Api variant, carrying the status, API error code, message, and raw body:
use babelforce_manager_sdk::ManagerError;
match mgr.users.create(/* CreateManagedUserRequest */).await {
Ok(created) => { /* … */ }
Err(ManagerError::Api { status, code, message, .. }) => {
eprintln!("status={status} code={code:?} msg={message}");
}
Err(e) => eprintln!("{e}"), // Network / Decode / InvalidArgument
}
note
The full operation list is on the Coverage page; the API reference lives on docs.rs.