1use chrono::{DateTime, Utc};
2use serde::Serialize;
3
4#[derive(Serialize, Default)]
5pub struct Suspensions {
6 pub ready_q: Vec<ReadyQSuspension>,
7 pub sched_q: Vec<SchedQSuspension>,
8}
9
10#[derive(Serialize, Default, Clone)]
11pub struct ReadyQSuspension {
12 pub rule_hash: String,
13 pub site_name: String,
14 pub reason: String,
15 pub source: String,
16 pub expires: DateTime<Utc>,
17}
18
19#[derive(Serialize, Default, Clone)]
20pub struct SchedQSuspension {
21 pub rule_hash: String,
22 pub tenant: String,
23 pub domain: String,
24 pub campaign: Option<String>,
25 pub reason: String,
26 pub expires: DateTime<Utc>,
27}
28
29#[derive(Serialize, Clone)]
30pub enum SuspensionEntry {
31 ReadyQ(ReadyQSuspension),
32 SchedQ(SchedQSuspension),
33}
34
35#[derive(Serialize, Default, Clone)]
36pub struct SchedQBounce {
37 pub rule_hash: String,
38 pub domain: String,
39 pub tenant: Option<String>,
40 pub campaign: Option<String>,
41 pub reason: String,
42 pub expires: DateTime<Utc>,
43}
44
45#[derive(Serialize, Clone)]
46pub enum SubscriptionItem {
47 ReadyQSuspension(ReadyQSuspension),
48 SchedQSuspension(SchedQSuspension),
49 SchedQBounce(SchedQBounce),
50}