Skip to main content

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(&params));
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");