Skip to main content

umami_api/
teams.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize};
3
4use crate::users::BaseUser;
5
6#[derive(Clone, Debug, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct TeamMember {
9  pub id: String,
10  pub team_id: String,
11  pub user_id: String,
12  pub role: String,
13  pub created_at: Option<DateTime<Utc>>,
14  pub updated_at: Option<DateTime<Utc>>,
15}
16
17#[derive(Clone, Debug, Deserialize)]
18pub struct TeamMemberWithUser {
19  #[serde(flatten)]
20  pub member: TeamMember,
21  pub user: BaseUser,
22}
23
24#[derive(Clone, Debug, Deserialize)]
25#[serde(rename_all = "camelCase")]
26pub struct BaseTeam {
27  pub id: String,
28  pub name: String,
29  pub logo_url: Option<String>,
30}
31
32#[derive(Clone, Debug, Deserialize)]
33#[serde(rename_all = "camelCase")]
34pub struct Team {
35  #[serde(flatten)]
36  pub base: BaseTeam,
37  pub access_code: String,
38  pub created_at: DateTime<Utc>,
39  pub updated_at: DateTime<Utc>,
40  pub deleted_at: Option<DateTime<Utc>>,
41}
42
43#[derive(Clone, Debug, Deserialize)]
44pub struct TeamWithMembers {
45  #[serde(flatten)]
46  pub team: Team,
47  pub members: Vec<TeamMember>,
48}
49
50#[derive(Clone, Debug, Deserialize)]
51pub struct TeamWithMembersWithUser {
52  #[serde(flatten)]
53  pub team: Team,
54  pub members: Vec<TeamMemberWithUser>,
55}
56
57#[derive(Clone, Debug, Deserialize)]
58pub struct TeamWithMembersCount {
59  #[serde(flatten)]
60  pub team: TeamWithMembersWithUser,
61  #[serde(rename = "_count")]
62  pub count: Count,
63}
64
65#[derive(Clone, Debug, Deserialize)]
66pub struct Count {
67  pub websites: u32,
68  pub members: u32,
69}