busbar_sf_api/lib.rs
1//! # busbar-sf-api
2//!
3//! A comprehensive Salesforce API client library for Rust.
4//!
5//! This library provides type-safe access to Salesforce APIs with built-in
6//! authentication, retry logic, and error handling.
7//!
8//! ## Security
9//!
10//! This library is designed with security in mind:
11//! - Sensitive data (tokens, secrets) are redacted in Debug output
12//! - Tracing/logging skips credential parameters
13//! - Error messages sanitize any credential data
14//!
15//! ## Crates
16//!
17//! - **busbar-sf-client** - Core HTTP client infrastructure with retry, compression, rate limiting
18//! - **busbar-sf-auth** - Authentication: OAuth 2.0 flows, JWT Bearer, credentials management
19//! - **busbar-sf-rest** - REST API: CRUD, Query, Describe, Composite, Collections
20//! - **busbar-sf-tooling** - Tooling API: Apex operations, debug logs, code coverage
21//! - **busbar-sf-bulk** - Bulk API 2.0: Large-scale data operations
22//! - **busbar-sf-metadata** - Metadata API: Deploy and retrieve metadata
23//!
24//! ## Quick Start
25//!
26//! ```rust,ignore
27//! use busbar_sf_auth::SalesforceCredentials;
28//! use busbar_sf_rest::SalesforceRestClient;
29//!
30//! #[tokio::main]
31//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
32//! // Get credentials from SF CLI
33//! let creds = SalesforceCredentials::from_sfdx_alias("my-org").await?;
34//!
35//! // Create REST client
36//! let client = SalesforceRestClient::new(
37//! creds.instance_url(),
38//! creds.access_token(),
39//! )?;
40//!
41//! // Query accounts
42//! let accounts: Vec<serde_json::Value> = client
43//! .query_all("SELECT Id, Name FROM Account LIMIT 10")
44//! .await?;
45//!
46//! for account in accounts {
47//! println!("{}", account["Name"]);
48//! }
49//!
50//! Ok(())
51//! }
52//! ```
53
54// Re-export all crates for convenient access
55#[cfg(feature = "auth")]
56pub use busbar_sf_auth as auth;
57
58#[cfg(feature = "bulk")]
59pub use busbar_sf_bulk as bulk;
60
61#[cfg(feature = "client")]
62pub use busbar_sf_client as client;
63
64#[cfg(feature = "metadata")]
65pub use busbar_sf_metadata as metadata;
66
67#[cfg(feature = "rest")]
68pub use busbar_sf_rest as rest;
69
70#[cfg(feature = "tooling")]
71pub use busbar_sf_tooling as tooling;
72
73// Re-export commonly used types at the top level
74#[cfg(feature = "auth")]
75pub use busbar_sf_auth::{Credentials, SalesforceCredentials};
76
77#[cfg(feature = "client")]
78pub use busbar_sf_client::{ClientConfig, SalesforceClient};
79
80#[cfg(feature = "rest")]
81pub use busbar_sf_rest::SalesforceRestClient;
82
83#[cfg(feature = "tooling")]
84pub use busbar_sf_tooling::ToolingClient;