Skip to content

Releases: VynFi/VynFi-rust

v1.8.0 — full parity with Python SDK master

23 Apr 11:39

Choose a tag to compare

Bulk catch-up from v1.0.0 to match the Python SDK's v1.8.0 surface. Every Python resource, method, helper, and type is now on the Rust side, verified live against the production API.

Live-verified

  • SAP Integration Pack — 27 tables emitted, BSEG→BKPF FK integrity clean
  • SAF-T PT export — 3.0 MB OECD 1.04_01 XML, populated header
  • Full baseline probe: DS 4.4.x fixes visible (DocRef types, coa_meta, fraud_split, etc.)

New

Resources (5 new): Adversarial, Ai, Fingerprint, Optimizer (6 subcommands), TemplatePacks (CRUD + validate + enrich + categories).

Jobs (10 new methods): analytics, fraud_split, audit_artifacts, list_files (404-retry), download_archive → JobArchive, download_to, stream_ndjson, tune, wait, wait_for_many.

Configs (4 new methods): from_description, from_company, estimate_size, submit_raw.

JobArchive: new type handling zip + managed_blob transparently. Methods: files, find, categories, read, text, json, size, url, extract_to, audit_opinions, key_audit_matters, sap_tables, sap_table, saft_file, coa_meta.

Types: ~650 lines in types.rs — analytics, audit, fraud-split, optimizer, template packs, NL config, AI/adversarial/fingerprint, SAP/SAF-T config, SAP_DEFAULT_TABLES + SAP_ALL_TABLES constants.

Examples: examples/sap_export.rs + examples/saft_export.rs.

Dependencies

  • Added zip = "2" (deflate-only) for JobArchive.
  • reqwest gains the blocking feature for lazy JobArchive fetches.

Full changelog: CHANGELOG.md

v1.0.0

10 Apr 12:55

Choose a tag to compare

Full API coverage — 6 new resources

The SDK now covers the complete stable VynFi API surface (12 resources, up from 7).

New resources

  • client.configs() — save, list, get, update, delete generation configs + validate, estimate_cost, compose
  • client.credits()purchase, balance, history for prepaid credit management
  • client.sessions()list, create, extend, generate_next for multi-period generation
  • client.scenarios()list, create, run, diff, templates for what-if analysis
  • client.notifications()list, mark_read
  • client.catalog().list_templates() — browse system templates by sector

Other changes

  • 30+ new request/response types with correct camelCase serde attributes
  • Async + blocking support for all new resources
  • 26 mock tests, 31 integration tests — all passing against the live API

See CHANGELOG.md for full details.

v0.2.1

08 Apr 10:09

Choose a tag to compare

See CHANGELOG for details.

v0.2.0

08 Apr 08:04

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

[0.2.0] - 2026-04-08

Added

  • Credits resource (client.credits()) — purchase, balance, history for prepaid credit pack management.
  • DownloadResponse type — jobs().download() now returns a presigned URL with expiry instead of raw bytes.
  • VynFiError::Forbidden variant for 403 responses.
  • FieldError struct and ErrorBody.fields for field-level validation errors.
  • ErrorBody now includes error_type, title, request_id fields (RFC 7807).
  • Job fields: user_id, rows_requested, rows_generated, started_at.
  • SubmitJobResponse fields: object, message.
  • SectorSummary fields: multiplier, quality_score, popularity.
  • UsageSummary.tier field.
  • environment field on ApiKey, ApiKeyCreated, and CreateApiKeyRequest.
  • Integration test suite (tests/integration.rs) for all endpoints against a real API.

Changed

  • jobs().download() returns DownloadResponse (JSON with presigned URL) instead of bytes::Bytes.
  • usage().summary() now calls /v1/usage (was /v1/usage/summary).
  • GenerateRequest.format changed from String to Option<String> (server defaults to JSON).
  • GenerateRequest::new() now takes a sector_slug parameter.
  • ErrorBody variants in VynFiError are now Box<ErrorBody> to reduce enum size.

Removed

  • Quality resource (client.quality()) — not in stabilized API.
  • Webhooks resource (client.webhooks()) — not in stabilized API.
  • Billing resource (client.billing()) — not in stabilized API.
  • jobs().cancel() — no cancel endpoint in API.
  • jobs().stream() — no SSE streaming endpoint in API.
  • catalog().list() and catalog().get_fingerprint() — no such endpoints in API.
  • Types: JobLinks, JobProgress, SseEvent, CatalogItem, Fingerprint, QualityScore, DailyQuality, Webhook, WebhookCreated, CreateWebhookRequest, UpdateWebhookRequest, Subscription, Invoice, PaymentMethod.
  • Dependencies: reqwest-eventsource, futures-core, bytes.

[0.1.0] - 2026-03-01

Added

  • Initial release with async and blocking clients.
  • Resources: jobs, catalog, usage, api_keys, quality, webhooks, billing.

v0.1.0

05 Mar 14:00

Choose a tag to compare

Initial release

First public release of the VynFi Rust SDK.

Features

  • Full coverage of VynFi API resources: Jobs, Catalog, Usage, API Keys, Quality, Webhooks, Billing
  • Async client (tokio + reqwest) with automatic retry on 429/5xx
  • Blocking client behind blocking feature flag
  • SSE streaming for job progress via reqwest-eventsource
  • Typed responses via serde, error hierarchy via thiserror
  • MSRV 1.83

Installation

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

Quick start

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

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