plexus_comms/activations/sms/
types.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
6pub struct SendSmsParams {
7 pub to: String,
8 pub message: String,
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub from: Option<String>,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
14pub struct SendBatchParams {
15 pub messages: Vec<SendSmsParams>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
19pub struct CheckStatusParams {
20 pub message_id: String,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
25#[serde(tag = "type", rename_all = "snake_case")]
26pub enum SendSmsEvent {
27 Queued {
28 message_id: String,
29 to: String,
30 },
31 Sent {
32 message_id: String,
33 to: String,
34 timestamp: i64,
35 },
36 Error {
37 message: String,
38 code: Option<String>,
39 },
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
43#[serde(tag = "type", rename_all = "snake_case")]
44pub enum BatchSendEvent {
45 Progress {
46 sent: usize,
47 total: usize,
48 percentage: f32,
49 },
50 SmsSent {
51 index: usize,
52 message_id: String,
53 to: String,
54 },
55 SmsFailed {
56 index: usize,
57 to: String,
58 error: String,
59 },
60 Complete {
61 total_sent: usize,
62 total_failed: usize,
63 },
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
67#[serde(tag = "type", rename_all = "snake_case")]
68pub enum DeliveryStatus {
69 Queued,
70 Sent,
71 Delivered,
72 Failed { reason: String },
73 Unknown,
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
77#[serde(tag = "type", rename_all = "snake_case")]
78pub enum StatusEvent {
79 Status {
80 message_id: String,
81 status: DeliveryStatus,
82 },
83 Error {
84 message: String,
85 },
86}