dimescheduler/lib.rs
1//! Official Rust client library for the [Dime.Scheduler](https://dimescheduler.com) API.
2//!
3//! ```no_run
4//! # async fn run() -> dimescheduler::Result<()> {
5//! use dimescheduler::{entities::Tag, DimeSchedulerClient};
6//!
7//! let client = DimeSchedulerClient::from_env()?; // reads DIMESCHEDULER_API_KEY
8//! client
9//! .tags
10//! .create(&Tag { code: "VIP".into(), ..Default::default() })
11//! .await?;
12//! let entries = client.time_entries.get("2026-03-01", "2026-03-31").await?;
13//! println!("{} time entries", entries.len());
14//! # Ok(())
15//! # }
16//! ```
17//!
18//! Unlike the other Dime.Scheduler SDKs, this crate does not retry failed
19//! requests. A 429 or 5xx surfaces as [`Error::Api`]; retry at the call site
20//! if your workload needs it.
21
22#![forbid(unsafe_code)]
23
24mod api;
25mod client;
26mod error;
27mod generated;
28mod transport;
29
30pub use api::{
31 AppointmentApi, ConnectorApi, CrudApi, GeocodeApi, ImportApi, JobApi, MessageApi,
32 NotificationApi, NotificationListOptions, OptimizationApi, ReadOnlyApi, RecommendationApi,
33 RecurringAppointmentApi, ResourceCapacityApi, TaskApi, TaskAssignmentApi, TaskBudgetEntryApi,
34 TaskListOptions, TimeEntryApi, TimeSessionApi, UserApi,
35};
36pub use client::{DimeSchedulerClient, Environment};
37pub use error::{Error, Result};
38pub use generated::{entities, models, types};
39
40#[cfg(test)]
41mod tests;