Expand description
§Cirrus SDK
An ergonomic Rust HTTP client for the Salesforce REST API.
Cirrus provides a type-safe, async interface for interacting with
Salesforce while leaving response shapes entirely up to the caller —
no hard-coded sObject types like Account or Contact.
§Design principles
- No user-facing types. The SDK never models org-specific data. Every
handler that returns records is generic over a caller-supplied type, and
defaults to
serde_json::Valuewhen none is specified. - Hard-coded platform types only. Schema-independent envelopes
(
response::QueryResult,response::SObjectCreateResult,response::ApiVersion, the Salesforce error array) are concrete, because their shape is part of the platform contract. - Auth is pluggable. Any
auth::AuthSessionimplementation works; handlers don’t know which OAuth flow produced the token. - No legacy surface. Anything Salesforce labels deprecated or legacy is intentionally not supported.
§Quick start
use cirrus::{Cirrus, auth::StaticTokenAuth};
use std::sync::Arc;
let auth = Arc::new(StaticTokenAuth::new(
"00D...!AQ...",
"https://my-org.my.salesforce.com",
));
let sf = Cirrus::builder()
.auth(auth)
.build()?;
let versions = sf.versions().await?;Re-exports§
pub use auth::AuthSession;pub use handlers::bulk::BulkIngestSpec;pub use handlers::bulk::BulkQuerySpec;pub use handlers::composite::BatchRequest;pub use handlers::composite::BatchSubrequest;pub use handlers::composite::CompositeRequest;pub use handlers::composite::CompositeSubrequest;pub use handlers::sobjects::BlobUploadSpec;pub use pagination::Records;pub use retry::RetryPolicy;
Modules§
- auth
- Authentication abstractions for the Salesforce REST API.
- handlers
- Handlers for Salesforce REST API surfaces.
- pagination
- Lazy, runtime-agnostic pagination over Salesforce query results.
- retry
- Retry policy and backoff machinery for transient HTTP failures.
Structs§
- ApiVersion
- One entry from
GET /services/data— a Salesforce REST API version. - Batch
Response - Top-level response from
POST /composite/batch. - Batch
Subresult - One sub-request result inside
BatchResponse::results. - Bulk
Ingest Job - Response from
POST /jobs/ingestandGET /jobs/ingest/{jobId}. - Bulk
Query Job - Response from
POST /jobs/queryandGET /jobs/query/{jobId}. - Bulk
Query Results - Result of
GET /jobs/query/{jobId}/results. - Bytes
- A cheaply cloneable and sliceable chunk of contiguous memory.
- Cirrus
- The main Salesforce client.
- Cirrus
Builder - Builder for
Cirrus. - Composite
Error - Per-record error entry returned inside composite endpoint results
(
CompositeTreeResult::errors,SObjectCollectionResult::errors). - Composite
Response - Top-level response from
POST /composite. - Composite
Subresponse - One sub-request entry inside
CompositeResponse::composite_response. - Composite
Tree Response - Top-level response from
POST /composite/tree/{SObject}. - Composite
Tree Result - One per-record entry in
CompositeTreeResponse::results. - Describe
Global - Response from
GET /sobjects(describe global). Schema-independent platform metadata — concrete because every org returns the same shape. - Event
LogFile Record - One
EventLogFilesObject record returned by queryingSELECT ... FROM EventLogFile. - Execute
Anonymous Result - Result envelope from
GET /tooling/executeAnonymous?anonymousBody=.... - Limit
- One limit entry from
GET /services/data/vXX.X/limits. - Limit
Info - Snapshot of the
Sforce-Limit-Inforesponse header, parsed. - Query
Result - Envelope returned by SOQL queries (
/query,/queryAll,/query/{locator}). - SObject
Collection Result - One per-record entry in the array returned by
/composite/sobjects(create / update / upsert / delete). - SObject
Create Result - Result of a single-record create/upsert via REST sObjects endpoints.
- SObject
Metadata - Per-object metadata returned in
DescribeGlobal::sobjects. Mirrors the flags Salesforce documents for the describe-global response. - Salesforce
Error - A single Salesforce API error entry.
- Search
Result - Envelope returned by SOSL search endpoints (
/search,/parameterizedSearch).
Enums§
- Bulk
Column Delimiter - CSV column delimiter used in Bulk 2.0 job payloads and result downloads. Salesforce supports a fixed set of single-character delimiters.
- Bulk
JobState - State of a Bulk API 2.0 job.
- Bulk
Line Ending - CSV line ending used in Bulk 2.0 job payloads and result downloads.
- Bulk
Operation - Bulk API 2.0 operation kind. Shared between ingest jobs (insert / update / upsert / delete / hardDelete) and query jobs (query / queryAll).
- Cirrus
Error - Errors produced by the Cirrus client.
Constants§
- DEFAULT_
API_ VERSION - Default Salesforce REST API version when the caller doesn’t override it.
Type Aliases§
- Cirrus
Result - Specialized
Resulttype for Cirrus operations. - OrgLimits
- Top-level response from
GET /limits— keys are limit names.