Expand description
§ATrium API: Rust library for Bluesky’s atproto services
ATrium API is a Rust library that includes the definitions of XRPC requests and their associated input/output model types. These codes are generated from the Lexicon schema on atproto.com.
§Usage
Any HTTP client that implements atrium_xrpc::HttpClient
can be used to handle XRPC requests. Since atrium_xrpc_client
provides several implementations, it is recommended to use one of them that fits your project requirements.
use atrium_api::client::AtpServiceClient;
use atrium_xrpc_client::reqwest::ReqwestClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = AtpServiceClient::new(ReqwestClient::new("https://bsky.social"));
let result = client
.service
.com
.atproto
.server
.create_session(
atrium_api::com::atproto::server::create_session::InputData {
auth_factor_token: None,
identifier: "alice@mail.com".into(),
password: "hunter2".into(),
}
.into(),
)
.await;
println!("{:?}", result);
Ok(())
}
§AtpAgent
(agent
feature)
While AtpServiceClient
can be used for simple XRPC calls, it is better to use AtpAgent
, which has practical features such as session management.
use atrium_api::agent::{store::MemorySessionStore, AtpAgent};
use atrium_xrpc_client::reqwest::ReqwestClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let agent = AtpAgent::new(
ReqwestClient::new("https://bsky.social"),
MemorySessionStore::default(),
);
agent.login("alice@mail.com", "hunter2").await?;
let result = agent
.api
.com
.atproto
.server
.get_session()
.await?;
println!("{:?}", result);
Ok(())
}
§Features
The AtpAgent
used in the above example is included in the agent
feature. atrium-api enables the agent
and bluesky
features by default. It is possible to opt-out if not needed.
agent
: enable theagent
module.bluesky
: enable bluesky-specific lexicon definitions and XRPC methods.- It is also possible to enable only the namespace specified by
namespace-*
.
- It is also possible to enable only the namespace specified by
Re-exports§
pub use atrium_xrpc as xrpc;
Modules§
- agent
agent
Implementation ofAtpAgent
and definitions ofSessionStore
for it. - Definitions for the
app
namespace. - Definitions for the
chat
namespace. - Structs for ATP client, implements all HTTP APIs of XRPC.
- Definitions for the
com
namespace. - Definitions for DID document types.
- Error types.
- A collection of known record types.
- Definitions for the
tools
namespace. - Definitions for AT Protocol’s data models. https://atproto.com/specs/data-model