zammad-api 0.4.0

Async, idiomatic Rust client for the Zammad Service Platform
Documentation
//! Stream every ticket from a Zammad instance.
//!
//! ```sh
//! ZAMMAD_URL=https://help.example.com ZAMMAD_TOKEN=... \
//!   cargo run --example list_tickets
//! ```

use futures_util::TryStreamExt;
use zammad_api::{Auth, Client};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let url = std::env::var("ZAMMAD_URL")?;
    let token = std::env::var("ZAMMAD_TOKEN")?;

    let client = Client::builder().url(url).auth(Auth::token(token)).build()?;

    let mut stream = client.tickets().list().per_page(100).stream();
    let mut count = 0usize;
    while let Some(t) = stream.try_next().await? {
        count += 1;
        println!(
            "#{:>6}  {}  {}",
            t.id,
            t.number.as_deref().unwrap_or("-"),
            t.title.as_deref().unwrap_or("")
        );
    }
    eprintln!("scanned {count} tickets");
    Ok(())
}