use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Space {
pub name: Option<String>,
pub display_name: Option<String>,
#[serde(rename = "type")]
pub type_: Option<String>,
pub space_type: Option<String>,
pub member_count: Option<i32>,
pub last_active_time: Option<String>,
pub threading_state: Option<String>,
pub description: Option<String>,
pub create_time: Option<String>,
pub space_history_state: Option<String>,
pub single_user_bot_dm: Option<bool>,
pub space_details: Option<SpaceDetails>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SpaceDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub guidelines: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Sender {
pub name: Option<String>,
pub display_name: Option<String>,
#[serde(rename = "type")]
pub type_: Option<String>,
pub is_anonymous: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Thread {
pub name: Option<String>,
pub thread_key: Option<String>,
pub messages: Option<Vec<Message>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Message {
pub name: Option<String>,
pub sender: Option<Sender>,
pub create_time: Option<String>,
pub text: Option<String>,
pub thread: Option<Thread>,
pub deleted: Option<bool>,
pub formatted_time: Option<String>,
pub argument_text: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListSpacesResponse {
pub spaces: Option<Vec<Space>>,
pub next_page_token: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListMessagesResponse {
pub messages: Option<Vec<Message>>,
pub next_page_token: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateMessageRequest {
pub text: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MembershipMember {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub domain_id: Option<String>,
}
pub type Member = MembershipMember;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Membership {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub member: Option<MembershipMember>,
#[serde(skip_serializing_if = "Option::is_none")]
pub group_member: Option<GroupMember>,
#[serde(skip_serializing_if = "Option::is_none")]
pub role: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GroupMember {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListMembershipsResponse {
pub memberships: Option<Vec<Membership>>,
pub next_page_token: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CustomEmoji {
#[serde(skip_serializing_if = "Option::is_none")]
pub uid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Emoji {
#[serde(skip_serializing_if = "Option::is_none")]
pub unicode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_emoji: Option<CustomEmoji>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Reaction {
pub name: Option<String>,
pub emoji: Option<Emoji>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListReactionsResponse {
pub reactions: Option<Vec<Reaction>>,
pub next_page_token: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SetupSpace {
pub space_type: String,
pub display_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "singleUserBotDm", skip_serializing_if = "Option::is_none")]
pub single_user_bot_dm: Option<bool>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SetupSpaceRequest {
pub space: SetupSpace,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub memberships: Vec<Membership>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PatchSpaceRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct OfficialPatchSpaceRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub space_details: Option<SpaceDetails>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateMembershipRequest {
pub member: MembershipMember,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateReactionRequest {
pub emoji: Emoji,
}