unosend 1.0.0

Official Rust SDK for Unosend - Email API for developers
Documentation
use crate::client::Unosend;
use crate::error::UnosendError;
use serde::{Deserialize, Serialize};

/// Audience management API.
pub struct AudiencesApi {
    client: Unosend,
}

impl AudiencesApi {
    pub(crate) fn new(client: Unosend) -> Self {
        Self { client }
    }

    /// Create a new audience.
    pub async fn create(&self, name: &str) -> Result<Audience, UnosendError> {
        self.client
            .post("/audiences", &CreateAudienceRequest { name: name.to_string() })
            .await
    }

    /// List all audiences.
    pub async fn list(&self) -> Result<AudienceList, UnosendError> {
        self.client.get("/audiences").await
    }

    /// Get an audience by ID.
    pub async fn get(&self, audience_id: &str) -> Result<Audience, UnosendError> {
        self.client.get(&format!("/audiences/{}", audience_id)).await
    }

    /// Delete an audience.
    pub async fn delete(&self, audience_id: &str) -> Result<(), UnosendError> {
        self.client.delete(&format!("/audiences/{}", audience_id)).await
    }
}

#[derive(Serialize)]
struct CreateAudienceRequest {
    name: String,
}

/// Audience information.
#[derive(Debug, Clone, Deserialize)]
pub struct Audience {
    pub id: String,
    pub name: String,
    pub created_at: String,
}

/// List of audiences.
#[derive(Debug, Clone, Deserialize)]
pub struct AudienceList {
    pub data: Vec<Audience>,
}