slack-rust 0.0.1-alpha

Slack API Client
Documentation
use crate::block::block_object::TextBlockObject;
use crate::channels::channel::Channel;
use crate::chat::message::Message;
use crate::team::teams::Team;
use crate::users::user::User;
use crate::views::view::View;
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;

#[skip_serializing_none]
#[derive(Deserialize, Serialize, Debug, PartialEq)]
pub struct SlashPayload {
    pub token: Option<String>,
    pub team_id: Option<String>,
    pub team_domain: Option<String>,
    pub channel_id: Option<String>,
    pub channel_name: Option<String>,
    pub user_id: Option<String>,
    pub user_name: Option<String>,
    pub command: Option<String>,
    pub text: Option<String>,
    pub response_url: Option<String>,
    pub trigger_id: Option<String>,
}

#[skip_serializing_none]
#[derive(Deserialize, Serialize, Debug, PartialEq)]
pub struct InteractivePayload {
    #[serde(rename = "type")]
    pub type_filed: InteractiveEventType,
    pub team: Option<Team>,
    pub user: Option<User>,
    pub api_app_id: Option<String>,
    pub token: Option<String>,
    pub container: Option<Container>,
    pub trigger_id: Option<String>,
    pub channel: Option<Channel>,
    pub message: Option<Message>,
    pub response_url: Option<String>,
    pub actions: Option<Vec<Action>>,
    pub view: Option<View>,
    pub hash: Option<String>,
    pub block_id: Option<String>,
    pub action_id: Option<String>,
    pub value: Option<String>,
    pub is_enterprise_install: Option<bool>,
    pub callback_id: Option<String>,
}

#[derive(Deserialize, Serialize, Debug, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum InteractiveEventType {
    DialogCancellation,
    DialogSubmission,
    DialogSuggestion,
    InteractionMessage,
    MessageAction,
    BlockActions,
    BlockSuggestion,
    ViewSubmission,
    ViewClosed,
    Shortcut,
}

#[skip_serializing_none]
#[derive(Deserialize, Serialize, Debug, PartialEq)]
pub struct Container {
    #[serde(rename = "type")]
    pub type_filed: String,
    pub message_ts: Option<String>,
    pub attachment_id: Option<i32>,
    pub channel_id: Option<String>,
    pub is_ephemeral: Option<bool>,
    pub is_app_unfurl: Option<bool>,
}

#[skip_serializing_none]
#[derive(Deserialize, Serialize, Debug, PartialEq)]
pub struct Action {
    #[serde(rename = "type")]
    pub type_filed: String,
    pub action_id: Option<String>,
    pub block_id: Option<String>,
    pub text: Option<TextBlockObject>,
    pub value: Option<String>,
    pub action_ts: Option<String>,
}