Skip to main content

umami_api/
users.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize};
3
4use crate::teams::BaseTeam;
5
6#[derive(Clone, Debug, Deserialize)]
7pub struct BaseUser {
8  pub id: String,
9  pub username: String,
10}
11
12#[derive(Clone, Debug, Deserialize)]
13pub struct BaseUserWithRole {
14  #[serde(flatten)]
15  pub base: BaseUser,
16  pub role: String,
17}
18
19#[derive(Clone, Debug, Deserialize)]
20#[serde(rename_all = "camelCase")]
21pub struct BaseUserWithRoleCreatedAt {
22  #[serde(flatten)]
23  pub base: BaseUserWithRole,
24  pub created_at: DateTime<Utc>,
25}
26
27#[derive(Clone, Debug, Deserialize)]
28#[serde(rename_all = "camelCase")]
29pub struct User {
30  #[serde(flatten)]
31  pub base: BaseUserWithRole,
32  pub is_admin: bool,
33}
34
35#[derive(Clone, Debug, Deserialize)]
36pub struct UserWithTeams {
37  #[serde(flatten)]
38  pub user: User,
39  pub teams: Vec<BaseTeam>,
40}
41
42#[derive(Clone, Debug, Deserialize)]
43#[serde(rename_all = "camelCase")]
44pub struct DetailedUser {
45  #[serde(flatten)]
46  pub base: BaseUserWithRoleCreatedAt,
47  pub logo_url: Option<String>,
48  pub display_name: Option<String>,
49  pub updated_at: DateTime<Utc>,
50  pub deleted_at: Option<DateTime<Utc>>,
51  #[serde(rename = "_count")]
52  pub count: Count,
53}
54
55#[derive(Clone, Debug, Deserialize)]
56pub struct Count {
57  pub websites: u32,
58}