uarp_sdk/lib.rs
1//! Async Rust client for the UARP (Snaga) Universal Agent Runtime Platform.
2//!
3//! ```no_run
4//! use futures_util::StreamExt;
5//!
6//! #[tokio::main]
7//! async fn main() -> Result<(), uarp_sdk::Error> {
8//! let client = uarp_sdk::Client::from_env()?;
9//! let agents = client.agents();
10//! let params = uarp_sdk::api::ListAgentsParams { limit: Some(50), ..Default::default() };
11//!
12//! // Every item across every page.
13//! let mut all = std::pin::pin!(agents.list_all(¶ms));
14//! while let Some(agent) = all.next().await {
15//! println!("{:?}", agent?.name);
16//! }
17//! Ok(())
18//! }
19//! ```
20//!
21//! The API surface under [`api`] is generated from `spec/openapi.json`; the
22//! transport, error, pagination and SSE layers are hand-written.
23
24#![forbid(unsafe_code)]
25#![warn(missing_debug_implementations)]
26
27mod client;
28mod error;
29mod multipart;
30mod pagination;
31mod sse;
32mod util;
33
34#[rustfmt::skip]
35mod generated;
36
37pub use client::{Client, ClientBuilder, Request, RequestOptions, NO_BODY, NO_QUERY};
38pub use error::{ApiError, ApiErrorKind, Error, FieldError, Problem, Result};
39pub use multipart::FilePart;
40pub use sse::{Event, EventStream, StreamOptions, StreamState};
41
42pub use generated::meta::{DEFAULT_BASE_URL, SCOPES, SPEC_VERSION};
43pub use generated::models;
44
45/// One module per OpenAPI tag, each with its own `*Api` accessor on [`Client`].
46pub mod api {
47 pub use crate::generated::api::*;
48}
49
50/// The version of this crate.
51pub const VERSION: &str = env!("CARGO_PKG_VERSION");