plexus_comms/activations/whatsapp/
types.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
6pub struct SendMessageParams {
7 pub to: String, pub message: MessageContent,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
12#[serde(tag = "type", rename_all = "snake_case")]
13pub enum MessageContent {
14 Text { body: String },
15 Template { name: String, language: String },
16 Media { url: String, caption: Option<String> },
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
21#[serde(tag = "type", rename_all = "snake_case")]
22pub enum SendMessageEvent {
23 Sent {
24 message_id: String,
25 to: String,
26 },
27 Error {
28 message: String,
29 code: Option<String>,
30 },
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
34#[serde(tag = "type", rename_all = "snake_case")]
35pub enum WebhookEvent {
36 Message {
37 message_id: String,
38 from: String,
39 timestamp: i64,
40 content: MessageContent,
41 },
42 Status {
43 message_id: String,
44 status: DeliveryStatus,
45 },
46 Error {
47 message: String,
48 },
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
52#[serde(rename_all = "lowercase")]
53pub enum DeliveryStatus {
54 Sent,
55 Delivered,
56 Read,
57 Failed,
58}