umami-api 0.0.2

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

use crate::users::BaseUser;

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TeamMember {
  pub id: String,
  pub team_id: String,
  pub user_id: String,
  pub role: String,
  pub created_at: Option<DateTime<Utc>>,
  pub updated_at: Option<DateTime<Utc>>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct TeamMemberWithUser {
  #[serde(flatten)]
  pub member: TeamMember,
  pub user: BaseUser,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BaseTeam {
  pub id: String,
  pub name: String,
  pub logo_url: Option<String>,
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Team {
  #[serde(flatten)]
  pub base: BaseTeam,
  pub access_code: String,
  pub created_at: DateTime<Utc>,
  pub updated_at: DateTime<Utc>,
  pub deleted_at: Option<DateTime<Utc>>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct TeamWithMembers {
  #[serde(flatten)]
  pub team: Team,
  pub members: Vec<TeamMember>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct TeamWithMembersWithUser {
  #[serde(flatten)]
  pub team: Team,
  pub members: Vec<TeamMemberWithUser>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct TeamWithMembersCount {
  #[serde(flatten)]
  pub team: TeamWithMembersWithUser,
  #[serde(rename = "_count")]
  pub count: Count,
}

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