nubis_sdk/lib.rs
1//! Official Nubis SDK for Rust
2//!
3//! This SDK provides a type-safe interface to the Nubis API.
4//!
5//! # Example
6//!
7//! ```no_run
8//! use nubis_sdk::NubisClient;
9//!
10//! #[tokio::main]
11//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
12//! let client = NubisClient::new(
13//! std::env::var("NUBIS_API_KEY")?
14//! );
15//!
16//! // List all VMs in a project
17//! let vms = client
18//! .vms()
19//! .list("proj_01J5X...")
20//! .await?;
21//!
22//! // Create a new VM
23//! use nubis_sdk::types::CreateVmRequest;
24//! let vm = client
25//! .vms()
26//! .create(CreateVmRequest {
27//! project_id: "proj_01J5X...".into(),
28//! name: "api-server".into(),
29//! size: "s-1vcpu-1gb".into(),
30//! region: "nyc1".into(),
31//! image: "ubuntu-24.04-x64".into(),
32//! ssh_keys: vec![],
33//! ssh_public_key: None,
34//! ssh_public_key_id: None,
35//! network_id: None,
36//! firewall_id: None,
37//! public_ip: Some(true),
38//! tags: None,
39//! enable_password_auth: None,
40//! admin_password: None,
41//! ssh_allowed_cidrs: vec![],
42//! })
43//! .await?;
44//!
45//! println!("Created VM: {}", vm.id);
46//! Ok(())
47//! }
48//! ```
49
50pub mod client;
51pub mod error;
52pub mod resources;
53pub mod types;
54
55pub use client::NubisClient;
56pub use error::{NubisError, Result};
57pub use types::*;
58
59use resources::*;
60
61/// Main Nubis SDK client with resource accessors
62impl NubisClient {
63 /// Access VMs API
64 pub fn vms(&self) -> Vms<'_> {
65 Vms::new(self)
66 }
67
68 /// Access projects API
69 pub fn projects(&self) -> Projects<'_> {
70 Projects::new(self)
71 }
72
73 /// Access organizations API
74 pub fn orgs(&self) -> Orgs<'_> {
75 Orgs::new(self)
76 }
77
78 /// Access regions API
79 pub fn regions(&self) -> Regions<'_> {
80 Regions::new(self)
81 }
82
83 /// Access sizes API
84 pub fn sizes(&self) -> Sizes<'_> {
85 Sizes::new(self)
86 }
87
88 /// Access images API
89 pub fn images(&self) -> Images<'_> {
90 Images::new(self)
91 }
92}