use indexmap::IndexMap; use serde::{Deserialize, Serialize}; pub static BASE_URL: &str = "https://team-api.infra.rust-lang.org/v1"; #[derive(Debug, Clone, Copy, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum TeamKind { Team, WorkingGroup, MarkerTeam, #[serde(other)] Unknown, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Team { pub name: String, pub kind: TeamKind, pub subteam_of: Option, pub members: Vec, pub github: Option, pub website_data: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TeamMember { pub name: String, pub github: String, pub github_id: usize, pub is_lead: bool, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TeamGitHub { pub teams: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct GitHubTeam { pub org: String, pub name: String, pub members: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TeamWebsite { pub name: String, pub description: String, pub page: String, pub email: Option, pub repo: Option, pub discord: Option, pub weight: i64, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct DiscordInvite { pub channel: String, pub url: String, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Teams { #[serde(flatten)] pub teams: IndexMap, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct List { pub address: String, pub members: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Lists { pub lists: IndexMap, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Permission { pub github_users: Vec, pub github_ids: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Rfcbot { pub teams: IndexMap, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct RfcbotTeam { pub name: String, pub ping: String, pub members: Vec, }