plexus_comms/activations/slack/
types.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
6pub struct SendMessageParams {
7 pub channel: String,
8 pub text: String,
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub thread_ts: Option<String>,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub attachments: Option<Vec<serde_json::Value>>,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
16pub struct CreateChannelParams {
17 pub name: String,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub is_private: Option<bool>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
24#[serde(tag = "type", rename_all = "snake_case")]
25pub enum SendMessageEvent {
26 Sent {
27 ts: String,
28 channel: String,
29 },
30 Error {
31 message: String,
32 code: Option<String>,
33 },
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
37#[serde(tag = "type", rename_all = "snake_case")]
38pub enum ChannelEvent {
39 Created {
40 channel_id: String,
41 name: String,
42 },
43 Error {
44 message: String,
45 },
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
49#[serde(tag = "type", rename_all = "snake_case")]
50pub enum SlackEvent {
51 Message {
52 ts: String,
53 channel: String,
54 user: String,
55 text: String,
56 },
57 Reaction {
58 reaction: String,
59 user: String,
60 item_ts: String,
61 },
62 Error {
63 message: String,
64 },
65}