apibrasil 1.0.0

SDK oficial Rust da plataforma APIBrasil: WhatsApp, SMS, consultas de CPF/CNPJ, veiculos, CEP, correios, pagamentos PIX/boleto e mais.
Documentation
//! Primeiros passos com a SDK.
//!
//! ```bash
//! export APIBRASIL_BEARER_TOKEN=...
//! export APIBRASIL_DEVICE_TOKEN=...
//! cargo run --example basico
//! ```

use apibrasil::{ApiBrasil, ErrorKind};
use serde_json::json;

#[tokio::main]
async fn main() {
    // Credenciais vêm de APIBRASIL_BEARER_TOKEN / APIBRASIL_DEVICE_TOKEN.
    let api = ApiBrasil::from_env();

    // Rota pública: não exige autenticação.
    match api.catalog().status().await {
        Ok(status) => println!("gateway: {status}"),
        Err(error) => eprintln!("status falhou: {error}"),
    }

    // Consulta por créditos: debita o saldo da conta.
    match api
        .consulta()
        .cnpj(json!({ "cnpj": "00000000000000" }))
        .await
    {
        Ok(empresa) => {
            println!("saldo restante: {:?}", empresa.balance());
            println!("dados: {:?}", empresa.data());
        }
        Err(error) => match error.kind() {
            ErrorKind::InsufficientBalance => eprintln!("Recarregue seus créditos"),
            ErrorKind::Authentication => eprintln!("Defina APIBRASIL_BEARER_TOKEN"),
            ErrorKind::RateLimit => eprintln!("Aguarde {:?}", error.retry_after),
            _ => eprintln!("consulta falhou: {error}"),
        },
    }

    // Serviço device-based: exige também o DeviceToken.
    match api.cep().cep(json!({ "cep": "01001000" })).await {
        Ok(cep) => println!("cep: {:?}", cep.response()),
        Err(error) => eprintln!("cep falhou: {error}"),
    }
}