Skip to content

VynFi/VynFi-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VynFi Rust SDK

Official Rust client for the VynFi synthetic financial data API.

Installation

[dependencies]
vynfi = "1"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }

For the blocking client:

[dependencies]
vynfi = { version = "1", features = ["blocking"] }

Quick Start

use vynfi::{Client, GenerateRequest, TableSpec};

#[tokio::main]
async fn main() -> Result<(), vynfi::VynFiError> {
    let client = Client::builder("vf_live_...").build()?;

    // Browse catalog and templates
    let sectors = client.catalog().list_sectors().await?;
    let templates = client.catalog().list_templates(None).await?;

    // Validate and estimate cost before generating
    use vynfi::{ValidateConfigRequest, EstimateCostRequest};
    let config = serde_json::json!({"rows": 1000, "sector": "retail"});

    let validation = client.configs().validate(&ValidateConfigRequest {
        config: config.clone(), partial: None, step: None,
    }).await?;
    println!("Valid: {}", validation.valid);

    let estimate = client.configs().estimate_cost(&EstimateCostRequest {
        config: config.clone(),
    }).await?;
    println!("Cost: {} credits", estimate.total_credits);

    // Generate synthetic data
    let job = client.jobs().generate(&GenerateRequest::new(
        vec![TableSpec { name: "transactions".into(), rows: 1000, base_rate: None }],
        "retail",
    )).await?;
    println!("Job submitted: {}", job.id);

    // Check usage
    let usage = client.usage().summary(None).await?;
    println!("Balance: {} credits", usage.balance);

    Ok(())
}

Blocking Client

use vynfi::blocking::Client;

fn main() -> Result<(), vynfi::VynFiError> {
    let client = Client::builder("vf_live_...").build()?;
    let sectors = client.catalog().list_sectors()?;
    Ok(())
}

Resources

Resource Methods
client.jobs() generate, generate_config, generate_quick, list, get, cancel, stream, download, download_file
client.catalog() list_sectors, get_sector, list, get_fingerprint, list_templates
client.configs() create, list, get, update, delete, validate, estimate_cost, compose
client.credits() purchase, balance, history
client.sessions() list, create, extend, generate_next
client.scenarios() list, create, run, diff, templates
client.usage() summary, daily
client.api_keys() create, list, get, update, revoke
client.quality() scores, timeline
client.webhooks() create, list, get, update, delete, test
client.billing() subscription, checkout, portal, invoices, payment_method
client.notifications() list, mark_read

Error Handling

All methods return Result<T, VynFiError>. Match on error variants:

use vynfi::VynFiError;

match client.jobs().get("bad-id").await {
    Ok(job) => println!("Got job: {}", job.id),
    Err(VynFiError::NotFound(_)) => println!("Job not found"),
    Err(VynFiError::RateLimit(_)) => println!("Rate limited, retry later"),
    Err(VynFiError::InsufficientCredits(_)) => println!("Not enough credits"),
    Err(VynFiError::Forbidden(_)) => println!("Forbidden"),
    Err(e) => eprintln!("Error: {e}"),
}

Feature Flags

Flag Default Description
rustls-tls Yes Use rustls for TLS
native-tls No Use platform-native TLS
blocking No Enable synchronous client

License

Apache-2.0

About

Official Rust client for the VynFi synthetic financial data API.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages