onspring-api-sdk-rust 0.0.1

Rust SDK for the Onspring API
Documentation
use onspring::{OnspringClient, SaveListItemRequest};

#[tokio::main]
async fn main() -> onspring::Result<()> {
  dotenvy::dotenv().ok();
  let base_url = std::env::var("API_BASE_URL").expect("API_BASE_URL is required");
  let api_key = std::env::var("SANDBOX_API_KEY").expect("SANDBOX_API_KEY is required");
  let list_id: i32 = std::env::var("TEST_LIST_ID")
    .expect("TEST_LIST_ID is required")
    .parse()
    .expect("TEST_LIST_ID must be an integer");

  let client = OnspringClient::builder(&api_key)
    .base_url(&base_url)
    .build();

  // Add a list item
  let name = format!("rust_sdk_example_{}", chrono::Utc::now().timestamp_millis());
  let request = SaveListItemRequest {
    id: None,
    name: name.clone(),
    numeric_value: Some(42.0),
    color: Some("#FF5733".to_string()),
  };

  let response = client.save_list_item(list_id, request).await?;
  println!("Added list item '{}' with ID: {}", name, response.id);

  // Update the list item
  let update_name = format!("updated_{}", name);
  let update_request = SaveListItemRequest {
    id: Some(response.id),
    name: update_name.clone(),
    numeric_value: Some(99.0),
    color: Some("#00FF00".to_string()),
  };

  client.save_list_item(list_id, update_request).await?;
  println!("Updated list item to '{}'", update_name);

  // Delete the list item
  client.delete_list_item(list_id, response.id).await?;
  println!("Deleted list item {}", response.id);

  Ok(())
}