kumo_api_types/
tsa.rs

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}