matomo-rs 0.1.0

Async client for the Matomo Reporting API, focused on data export and migration
Documentation
use serde::Deserialize;
use serde_with::{serde_as, DisplayFromStr, PickFirst};

/// `VisitsSummary.get`. Note the mixed numerics: `bounce_rate` is a string
/// like `"64%"`, `nb_actions_per_visit` is a float, the rest are ints.
#[serde_as]
#[derive(Debug, Clone, Deserialize)]
pub struct VisitsSummary {
    #[serde(default)]
    pub nb_uniq_visitors: i64,
    #[serde(default)]
    pub nb_users: i64,
    pub nb_visits: i64,
    pub nb_actions: i64,
    #[serde(default)]
    pub nb_visits_converted: i64,
    #[serde(default)]
    pub bounce_count: i64,
    #[serde(default)]
    pub sum_visit_length: i64,
    #[serde(default)]
    pub max_actions: i64,
    /// Kept as the raw Matomo display string (e.g. `"64%"`).
    #[serde(default)]
    pub bounce_rate: String,
    #[serde_as(as = "PickFirst<(_, DisplayFromStr)>")]
    #[serde(default)]
    pub nb_actions_per_visit: f64,
    #[serde(default)]
    pub avg_time_on_site: i64,
}