Skip to main content

busbar_sf_tooling/
lib.rs

1//! # sf-tooling
2//!
3//! Salesforce Tooling API client for development and deployment operations.
4//!
5//! ## Features
6//!
7//! - **Apex Operations** - Execute anonymous Apex, query Apex logs
8//! - **Metadata Query** - Query ApexClass, ApexTrigger, and other tooling objects
9//! - **Debug Logs** - Retrieve and manage debug logs
10//! - **Trace Flags** - Manage debug trace flags
11//! - **Test Execution** - Run Apex and Flow tests (async/sync, discovery, v65.0+ unified API)
12//! - **Code Coverage** - Get code coverage information
13//! - **Describe** - Get tooling object metadata
14//!
15//! ## Example
16//!
17//! ```rust,ignore
18//! use sf_tooling::ToolingClient;
19//!
20//! #[tokio::main]
21//! async fn main() -> Result<(), sf_tooling::Error> {
22//!     let client = ToolingClient::new(
23//!         "https://myorg.my.salesforce.com",
24//!         "access_token_here",
25//!     )?;
26//!
27//!     // Execute anonymous Apex
28//!     let result = client
29//!         .execute_anonymous("System.debug('Hello World');")
30//!         .await?;
31//!
32//!     if result.success {
33//!         println!("Apex executed successfully");
34//!     }
35//!
36//!     // Query Apex classes
37//!     let classes: Vec<ApexClass> = client
38//!         .query_all("SELECT Id, Name, Body FROM ApexClass LIMIT 10")
39//!         .await?;
40//!
41//!     // Get debug logs
42//!     let logs = client.get_apex_logs(Some(10)).await?;
43//!
44//!     Ok(())
45//! }
46//! ```
47
48mod client;
49mod error;
50mod types;
51
52pub use client::ToolingClient;
53pub use error::{Error, ErrorKind, Result};
54pub use types::*;
55
56// Re-export busbar-sf-client types that users might need
57pub use busbar_sf_client::{ClientConfig, ClientConfigBuilder, QueryResult};
58
59// Re-export composite and collection types from sf-rest for Tooling API usage
60pub use busbar_sf_rest::{
61    CollectionRequest, CollectionResult, CompositeBatchRequest, CompositeBatchResponse,
62    CompositeBatchSubrequest, CompositeBatchSubresponse, CompositeRequest, CompositeResponse,
63    CompositeSubrequest, CompositeSubresponse, CompositeTreeAttributes, CompositeTreeError,
64    CompositeTreeRecord, CompositeTreeRequest, CompositeTreeResponse, CompositeTreeResult,
65    DescribeGlobalResult, DescribeSObjectResult,
66};