umami-api 0.0.2

Easily interact with the Umami API (self-hosted instances)
Documentation
use chrono::{DateTime, Utc};
use serde::{Deserialize};

use crate::teams::BaseTeam;

#[derive(Clone, Debug, Deserialize)]
pub struct BaseUser {
  pub id: String,
  pub username: String,
}

#[derive(Clone, Debug, Deserialize)]
pub struct BaseUserWithRole {
  #[serde(flatten)]
  pub base: BaseUser,
  pub role: String,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BaseUserWithRoleCreatedAt {
  #[serde(flatten)]
  pub base: BaseUserWithRole,
  pub created_at: DateTime<Utc>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct User {
  #[serde(flatten)]
  pub base: BaseUserWithRole,
  pub is_admin: bool,
}

#[derive(Clone, Debug, Deserialize)]
pub struct UserWithTeams {
  #[serde(flatten)]
  pub user: User,
  pub teams: Vec<BaseTeam>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DetailedUser {
  #[serde(flatten)]
  pub base: BaseUserWithRoleCreatedAt,
  pub logo_url: Option<String>,
  pub display_name: Option<String>,
  pub updated_at: DateTime<Utc>,
  pub deleted_at: Option<DateTime<Utc>>,
  #[serde(rename = "_count")]
  pub count: Count,
}

#[derive(Clone, Debug, Deserialize)]
pub struct Count {
  pub websites: u32,
}