Skip to main content

box_open_sdk/models/schemas/
shield_lists.rs

1// Code generated by box-gantry 0.1.0 (spec 3fb3510fe12f2f80) for Box API 2024.0. DO NOT EDIT.
2
3use super::*;
4
5#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6pub struct ShieldList {
7    pub id: String,
8    pub r#type: String,
9    pub name: String,
10    pub enterprise: EnterpriseReference,
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub description: Option<String>,
13    pub created_at: chrono::DateTime<chrono::Utc>,
14    pub updated_at: chrono::DateTime<chrono::Utc>,
15    pub content: ShieldListContent,
16}
17
18#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
19pub struct ShieldListMini {
20    pub id: String,
21    pub r#type: ShieldListMiniType,
22    pub name: String,
23    pub content: ShieldListMiniContent,
24}
25
26#[derive(Clone, Debug, PartialEq)]
27pub enum ShieldListContent {
28    Country(ShieldListContentCountry),
29    Domain(ShieldListContentDomain),
30    Email(ShieldListContentEmail),
31    Ip(ShieldListContentIp),
32    Integration(ShieldListContentIntegration),
33    /// An unrecognized discriminator, retained verbatim (open union).
34    Unknown(serde_json::Value),
35}
36
37impl Default for ShieldListContent {
38    fn default() -> Self {
39        Self::Unknown(Default::default())
40    }
41}
42
43impl serde::Serialize for ShieldListContent {
44    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
45        match self {
46            Self::Country(inner) => inner.serialize(serializer),
47            Self::Domain(inner) => inner.serialize(serializer),
48            Self::Email(inner) => inner.serialize(serializer),
49            Self::Ip(inner) => inner.serialize(serializer),
50            Self::Integration(inner) => inner.serialize(serializer),
51            Self::Unknown(inner) => inner.serialize(serializer),
52        }
53    }
54}
55
56impl<'de> serde::Deserialize<'de> for ShieldListContent {
57    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
58        let value = serde_json::Value::deserialize(deserializer)?;
59        let tag = value
60            .get("type")
61            .and_then(serde_json::Value::as_str)
62            .map(str::to_owned);
63        match tag.as_deref() {
64            Some("country") => Ok(Self::Country(
65                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
66            )),
67            Some("domain") => Ok(Self::Domain(
68                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
69            )),
70            Some("email") => Ok(Self::Email(
71                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
72            )),
73            Some("ip") => Ok(Self::Ip(
74                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
75            )),
76            Some("integration") => Ok(Self::Integration(
77                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
78            )),
79            _ => Ok(Self::Unknown(value)),
80        }
81    }
82}
83
84#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
85pub struct ShieldListContentCountry {
86    pub r#type: ShieldListContentCountryType,
87    pub country_codes: Vec<String>,
88}
89
90#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
91pub struct ShieldListContentDomain {
92    pub r#type: ShieldListContentDomainType,
93    pub domains: Vec<String>,
94}
95
96#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
97pub struct ShieldListContentEmail {
98    pub r#type: ShieldListContentEmailType,
99    pub email_addresses: Vec<String>,
100}
101
102#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
103pub struct ShieldListContentIntegration {
104    pub r#type: ShieldListContentIntegrationType,
105    pub integrations: Vec<ShieldListContentIntegrationIntegrations>,
106}
107
108#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
109pub struct ShieldListContentIp {
110    pub r#type: ShieldListContentIpType,
111    pub ip_addresses: Vec<String>,
112}
113
114#[derive(Clone, Debug, PartialEq)]
115pub enum ShieldListContentRequest {
116    Country(ShieldListContentCountry),
117    Domain(ShieldListContentDomain),
118    Email(ShieldListContentEmail),
119    Ip(ShieldListContentIp),
120    /// An unrecognized discriminator, retained verbatim (open union).
121    Unknown(serde_json::Value),
122}
123
124impl Default for ShieldListContentRequest {
125    fn default() -> Self {
126        Self::Unknown(Default::default())
127    }
128}
129
130impl serde::Serialize for ShieldListContentRequest {
131    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
132        match self {
133            Self::Country(inner) => inner.serialize(serializer),
134            Self::Domain(inner) => inner.serialize(serializer),
135            Self::Email(inner) => inner.serialize(serializer),
136            Self::Ip(inner) => inner.serialize(serializer),
137            Self::Unknown(inner) => inner.serialize(serializer),
138        }
139    }
140}
141
142impl<'de> serde::Deserialize<'de> for ShieldListContentRequest {
143    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
144        let value = serde_json::Value::deserialize(deserializer)?;
145        let tag = value
146            .get("type")
147            .and_then(serde_json::Value::as_str)
148            .map(str::to_owned);
149        match tag.as_deref() {
150            Some("country") => Ok(Self::Country(
151                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
152            )),
153            Some("domain") => Ok(Self::Domain(
154                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
155            )),
156            Some("email") => Ok(Self::Email(
157                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
158            )),
159            Some("ip") => Ok(Self::Ip(
160                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
161            )),
162            _ => Ok(Self::Unknown(value)),
163        }
164    }
165}
166
167#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
168pub struct ShieldLists {
169    #[serde(default, skip_serializing_if = "Option::is_none")]
170    pub entries: Option<Vec<ShieldListMini>>,
171}
172
173#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
174pub struct ShieldListsCreate {
175    pub name: String,
176    #[serde(default, skip_serializing_if = "Option::is_none")]
177    pub description: Option<String>,
178    pub content: ShieldListContentRequest,
179}
180
181#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
182pub struct ShieldListsUpdate {
183    pub name: String,
184    #[serde(default, skip_serializing_if = "Option::is_none")]
185    pub description: Option<String>,
186    pub content: ShieldListContentRequest,
187}
188
189#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
190#[serde(transparent)]
191pub struct ShieldListMiniType(pub String);
192
193impl ShieldListMiniType {
194    pub const SHIELD_LIST: &'static str = "shield_list";
195}
196
197#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
198pub struct ShieldListMiniContent {
199    #[serde(default, skip_serializing_if = "Option::is_none")]
200    pub r#type: Option<String>,
201}
202
203#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
204#[serde(transparent)]
205pub struct ShieldListContentCountryType(pub String);
206
207impl ShieldListContentCountryType {
208    pub const COUNTRY: &'static str = "country";
209}
210
211#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
212#[serde(transparent)]
213pub struct ShieldListContentDomainType(pub String);
214
215impl ShieldListContentDomainType {
216    pub const DOMAIN: &'static str = "domain";
217}
218
219#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
220#[serde(transparent)]
221pub struct ShieldListContentEmailType(pub String);
222
223impl ShieldListContentEmailType {
224    pub const EMAIL: &'static str = "email";
225}
226
227#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
228#[serde(transparent)]
229pub struct ShieldListContentIntegrationType(pub String);
230
231impl ShieldListContentIntegrationType {
232    pub const INTEGRATION: &'static str = "integration";
233}
234
235#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
236pub struct ShieldListContentIntegrationIntegrations {
237    #[serde(default, skip_serializing_if = "Option::is_none")]
238    pub id: Option<String>,
239}
240
241#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
242#[serde(transparent)]
243pub struct ShieldListContentIpType(pub String);
244
245impl ShieldListContentIpType {
246    pub const IP: &'static str = "ip";
247}