1use super::*;
2
3use chrono;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6#[non_exhaustive]
7pub struct Team {
8 pub id: TeamId,
9 pub node_id: String,
10 pub url: Url,
11 pub html_url: Url,
12 pub name: String,
13 pub slug: String,
14 pub description: Option<String>,
15 pub privacy: TeamPrivacy,
16 pub permission: String,
17 pub members_url: Url,
18 pub repositories_url: Url,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub members_count: Option<i64>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub repos_count: Option<i64>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub organization: Option<orgs::Organization>,
29}
30
31#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
32#[non_exhaustive]
33pub struct RequestedReviewers {
34 pub users: Vec<Author>,
35 pub teams: Vec<Team>,
36}
37#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
38#[non_exhaustive]
39pub struct RequestedTeam {
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub id: Option<TeamId>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub node_id: Option<String>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub url: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub html_url: Option<String>,
48 pub name: String,
49 pub slug: String,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub description: Option<String>,
52 pub privacy: TeamPrivacy,
53 pub permission: String,
54 pub members_url: Url,
55 pub repositories_url: Url,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub parent: Option<Team>,
58}
59
60#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)]
61#[non_exhaustive]
62pub struct TeamInvitation {
63 pub id: TeamInvitationId,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub login: Option<String>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub email: Option<String>,
68 pub role: String,
69 pub created_at: chrono::DateTime<chrono::Utc>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub failed_at: Option<chrono::DateTime<chrono::Utc>>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub failed_reason: Option<String>,
74 pub inviter: Author,
75 pub team_count: u32,
76 pub node_id: String,
77 pub invitation_teams_url: String,
78}
79
80#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)]
81#[serde(rename_all = "snake_case")]
82#[non_exhaustive]
83pub enum TeamPrivacy {
84 Open,
85 Closed,
86 Secret,
87}