Skip to main content

wave_api/
lib.rs

1//! # wave-api
2//!
3//! Typed Rust client for the [Wave Accounting](https://www.waveapps.com/) GraphQL API.
4//!
5//! `wave_claw` wraps Wave's GraphQL API in idiomatic Rust — no code generation,
6//! no raw GraphQL strings in user code. All connection types are flattened into
7//! [`Page<T>`] results, monetary values use [`rust_decimal::Decimal`], and
8//! mutations use a builder pattern for inputs.
9//!
10//! ## Quick Start
11//!
12//! ```rust,no_run
13//! use wave_claw::{WaveClient, OAuthConfig, ListBusinessesOptions};
14//!
15//! # async fn run() -> Result<(), wave_claw::WaveError> {
16//! let client = WaveClient::with_oauth(OAuthConfig {
17//!     client_id: "...".into(),
18//!     client_secret: "...".into(),
19//!     access_token: "...".into(),
20//!     refresh_token: "...".into(),
21//!     redirect_uri: "http://localhost:3099/callback".into(),
22//!     on_token_refresh: None,
23//! });
24//!
25//! let businesses = client.list_businesses(Default::default()).await?;
26//! for biz in &businesses.items {
27//!     println!("{}: {}", biz.id, biz.name);
28//! }
29//! # Ok(())
30//! # }
31//! ```
32
33pub mod auth;
34pub mod client;
35mod client_mutations;
36mod client_queries;
37pub mod enums;
38pub mod error;
39pub mod inputs;
40pub mod models;
41mod mutations;
42pub mod options;
43pub mod pagination;
44mod queries;
45
46// Re-exports for convenience.
47pub use auth::OAuthConfig;
48pub use client::WaveClient;
49pub use error::WaveError;
50pub use options::*;
51pub use pagination::Page;