Skip to main content

box_open_sdk/models/schemas/
search.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 MetadataFieldFilterDateRange {
7    #[serde(default, skip_serializing_if = "Option::is_none")]
8    pub lt: Option<chrono::DateTime<chrono::Utc>>,
9    #[serde(default, skip_serializing_if = "Option::is_none")]
10    pub gt: Option<chrono::DateTime<chrono::Utc>>,
11}
12
13#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
14pub struct MetadataFieldFilterFloatRange {
15    #[serde(default, skip_serializing_if = "Option::is_none")]
16    pub lt: Option<f64>,
17    #[serde(default, skip_serializing_if = "Option::is_none")]
18    pub gt: Option<f64>,
19}
20
21#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
22pub struct MetadataFilter {
23    #[serde(default, skip_serializing_if = "Option::is_none")]
24    pub scope: Option<MetadataFilterScope>,
25    #[serde(
26        rename = "templateKey",
27        default,
28        skip_serializing_if = "Option::is_none"
29    )]
30    pub template_key: Option<String>,
31    #[serde(default, skip_serializing_if = "Option::is_none")]
32    pub filters: Option<std::collections::HashMap<String, MetadataFilterValue>>,
33}
34
35#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
36#[serde(transparent)]
37pub struct MetadataFilterValue(pub serde_json::Value);
38
39#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
40pub struct MetadataQuery {
41    pub from: String,
42    #[serde(default, skip_serializing_if = "Option::is_none")]
43    pub query: Option<String>,
44    #[serde(default, skip_serializing_if = "Option::is_none")]
45    pub query_params: Option<std::collections::HashMap<String, serde_json::Value>>,
46    pub ancestor_folder_id: String,
47    #[serde(default, skip_serializing_if = "Option::is_none")]
48    pub order_by: Option<Vec<MetadataQueryOrderBy>>,
49    #[serde(default, skip_serializing_if = "Option::is_none")]
50    pub limit: Option<i64>,
51    #[serde(default, skip_serializing_if = "Option::is_none")]
52    pub marker: Option<String>,
53    #[serde(default, skip_serializing_if = "Option::is_none")]
54    pub fields: Option<Vec<String>>,
55}
56
57#[derive(Clone, Debug, PartialEq)]
58pub enum MetadataQueryResultItem {
59    File(FileFull),
60    Folder(FolderFull),
61    /// An unrecognized discriminator, retained verbatim (open union).
62    Unknown(serde_json::Value),
63}
64
65impl Default for MetadataQueryResultItem {
66    fn default() -> Self {
67        Self::Unknown(Default::default())
68    }
69}
70
71impl serde::Serialize for MetadataQueryResultItem {
72    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
73        match self {
74            Self::File(inner) => inner.serialize(serializer),
75            Self::Folder(inner) => inner.serialize(serializer),
76            Self::Unknown(inner) => inner.serialize(serializer),
77        }
78    }
79}
80
81impl<'de> serde::Deserialize<'de> for MetadataQueryResultItem {
82    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
83        let value = serde_json::Value::deserialize(deserializer)?;
84        let tag = value
85            .get("type")
86            .and_then(serde_json::Value::as_str)
87            .map(str::to_owned);
88        match tag.as_deref() {
89            Some("file") => Ok(Self::File(
90                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
91            )),
92            Some("folder") => Ok(Self::Folder(
93                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
94            )),
95            _ => Ok(Self::Unknown(value)),
96        }
97    }
98}
99
100#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
101pub struct MetadataQueryResults {
102    #[serde(default, skip_serializing_if = "Option::is_none")]
103    pub entries: Option<Vec<MetadataQueryResultItem>>,
104    #[serde(default, skip_serializing_if = "Option::is_none")]
105    pub limit: Option<i64>,
106    #[serde(default, skip_serializing_if = "Option::is_none")]
107    pub next_marker: Option<String>,
108}
109
110#[derive(Clone, Debug, PartialEq)]
111pub enum SearchResultItem {
112    File(FileFull),
113    Folder(FolderFull),
114    WebLink(WebLink),
115    /// An unrecognized discriminator, retained verbatim (open union).
116    Unknown(serde_json::Value),
117}
118
119impl Default for SearchResultItem {
120    fn default() -> Self {
121        Self::Unknown(Default::default())
122    }
123}
124
125impl serde::Serialize for SearchResultItem {
126    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
127        match self {
128            Self::File(inner) => inner.serialize(serializer),
129            Self::Folder(inner) => inner.serialize(serializer),
130            Self::WebLink(inner) => inner.serialize(serializer),
131            Self::Unknown(inner) => inner.serialize(serializer),
132        }
133    }
134}
135
136impl<'de> serde::Deserialize<'de> for SearchResultItem {
137    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
138        let value = serde_json::Value::deserialize(deserializer)?;
139        let tag = value
140            .get("type")
141            .and_then(serde_json::Value::as_str)
142            .map(str::to_owned);
143        match tag.as_deref() {
144            Some("file") => Ok(Self::File(
145                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
146            )),
147            Some("folder") => Ok(Self::Folder(
148                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
149            )),
150            Some("web_link") => Ok(Self::WebLink(
151                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
152            )),
153            _ => Ok(Self::Unknown(value)),
154        }
155    }
156}
157
158#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
159pub struct SearchResults {
160    #[serde(default, skip_serializing_if = "Option::is_none")]
161    pub total_count: Option<i64>,
162    #[serde(default, skip_serializing_if = "Option::is_none")]
163    pub limit: Option<i64>,
164    #[serde(default, skip_serializing_if = "Option::is_none")]
165    pub offset: Option<i64>,
166    pub r#type: SearchResultsType,
167    #[serde(default, skip_serializing_if = "Option::is_none")]
168    pub entries: Option<Vec<SearchResultItem>>,
169}
170
171#[derive(Clone, Debug, PartialEq)]
172pub enum SearchResultsResponse {
173    SearchResultsItems(SearchResults),
174    SearchResultsWithSharedLinks(SearchResultsWithSharedLinks),
175    /// An unrecognized discriminator, retained verbatim (open union).
176    Unknown(serde_json::Value),
177}
178
179impl Default for SearchResultsResponse {
180    fn default() -> Self {
181        Self::Unknown(Default::default())
182    }
183}
184
185impl serde::Serialize for SearchResultsResponse {
186    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
187        match self {
188            Self::SearchResultsItems(inner) => inner.serialize(serializer),
189            Self::SearchResultsWithSharedLinks(inner) => inner.serialize(serializer),
190            Self::Unknown(inner) => inner.serialize(serializer),
191        }
192    }
193}
194
195impl<'de> serde::Deserialize<'de> for SearchResultsResponse {
196    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
197        let value = serde_json::Value::deserialize(deserializer)?;
198        let tag = value
199            .get("type")
200            .and_then(serde_json::Value::as_str)
201            .map(str::to_owned);
202        match tag.as_deref() {
203            Some("search_results_items") => Ok(Self::SearchResultsItems(
204                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
205            )),
206            Some("search_results_with_shared_links") => Ok(Self::SearchResultsWithSharedLinks(
207                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
208            )),
209            _ => Ok(Self::Unknown(value)),
210        }
211    }
212}
213
214#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
215pub struct SearchResultsWithSharedLinks {
216    #[serde(default, skip_serializing_if = "Option::is_none")]
217    pub total_count: Option<i64>,
218    #[serde(default, skip_serializing_if = "Option::is_none")]
219    pub limit: Option<i64>,
220    #[serde(default, skip_serializing_if = "Option::is_none")]
221    pub offset: Option<i64>,
222    pub r#type: SearchResultsWithSharedLinksType,
223    #[serde(default, skip_serializing_if = "Option::is_none")]
224    pub entries: Option<Vec<SearchResultWithSharedLink>>,
225}
226
227#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
228pub struct SearchResultWithSharedLink {
229    #[serde(default, skip_serializing_if = "Option::is_none")]
230    pub accessible_via_shared_link: Option<String>,
231    #[serde(default, skip_serializing_if = "Option::is_none")]
232    pub item: Option<SearchResultWithSharedLinkItem>,
233    #[serde(default, skip_serializing_if = "Option::is_none")]
234    pub r#type: Option<String>,
235}
236
237#[derive(Clone, Debug, PartialEq)]
238pub enum SearchResultWithSharedLinkItem {
239    File(FileFull),
240    Folder(FolderFull),
241    WebLink(WebLink),
242    /// An unrecognized discriminator, retained verbatim (open union).
243    Unknown(serde_json::Value),
244}
245
246impl Default for SearchResultWithSharedLinkItem {
247    fn default() -> Self {
248        Self::Unknown(Default::default())
249    }
250}
251
252impl serde::Serialize for SearchResultWithSharedLinkItem {
253    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
254        match self {
255            Self::File(inner) => inner.serialize(serializer),
256            Self::Folder(inner) => inner.serialize(serializer),
257            Self::WebLink(inner) => inner.serialize(serializer),
258            Self::Unknown(inner) => inner.serialize(serializer),
259        }
260    }
261}
262
263impl<'de> serde::Deserialize<'de> for SearchResultWithSharedLinkItem {
264    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
265        let value = serde_json::Value::deserialize(deserializer)?;
266        let tag = value
267            .get("type")
268            .and_then(serde_json::Value::as_str)
269            .map(str::to_owned);
270        match tag.as_deref() {
271            Some("file") => Ok(Self::File(
272                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
273            )),
274            Some("folder") => Ok(Self::Folder(
275                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
276            )),
277            Some("web_link") => Ok(Self::WebLink(
278                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
279            )),
280            _ => Ok(Self::Unknown(value)),
281        }
282    }
283}
284
285#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
286#[serde(transparent)]
287pub struct MetadataFilterScope(pub String);
288
289impl MetadataFilterScope {
290    pub const GLOBAL: &'static str = "global";
291    pub const ENTERPRISE: &'static str = "enterprise";
292    pub const ENTERPRISE_ENTERPRISE_ID: &'static str = "enterprise_{enterprise_id}";
293}
294
295#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
296#[serde(transparent)]
297pub struct OrderByDirection(pub String);
298
299impl OrderByDirection {
300    pub const ASC: &'static str = "ASC";
301    pub const DESC: &'static str = "DESC";
302    pub const ASC_2: &'static str = "asc";
303    pub const DESC_2: &'static str = "desc";
304}
305
306#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
307pub struct MetadataQueryOrderBy {
308    #[serde(default, skip_serializing_if = "Option::is_none")]
309    pub field_key: Option<String>,
310    #[serde(default, skip_serializing_if = "Option::is_none")]
311    pub direction: Option<OrderByDirection>,
312}
313
314#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
315#[serde(transparent)]
316pub struct SearchResultsType(pub String);
317
318impl SearchResultsType {
319    pub const SEARCH_RESULTS_ITEMS: &'static str = "search_results_items";
320}
321
322#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
323#[serde(transparent)]
324pub struct SearchResultsWithSharedLinksType(pub String);
325
326impl SearchResultsWithSharedLinksType {
327    pub const SEARCH_RESULTS_WITH_SHARED_LINKS: &'static str = "search_results_with_shared_links";
328}
329
330#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
331#[serde(transparent)]
332pub struct GetScope(pub String);
333
334impl GetScope {
335    pub const USER_CONTENT: &'static str = "user_content";
336    pub const ENTERPRISE_CONTENT: &'static str = "enterprise_content";
337}
338
339#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
340#[serde(transparent)]
341pub struct GetContentTypes(pub String);
342
343impl GetContentTypes {
344    pub const NAME: &'static str = "name";
345    pub const DESCRIPTION: &'static str = "description";
346    pub const FILE_CONTENT: &'static str = "file_content";
347    pub const COMMENTS: &'static str = "comments";
348    pub const TAGS: &'static str = "tags";
349}
350
351#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
352#[serde(transparent)]
353pub struct GetType(pub String);
354
355impl GetType {
356    pub const FILE: &'static str = "file";
357    pub const FOLDER: &'static str = "folder";
358    pub const WEB_LINK: &'static str = "web_link";
359}
360
361#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
362#[serde(transparent)]
363pub struct GetTrashContent(pub String);
364
365impl GetTrashContent {
366    pub const NON_TRASHED_ONLY: &'static str = "non_trashed_only";
367    pub const TRASHED_ONLY: &'static str = "trashed_only";
368    pub const ALL_ITEMS: &'static str = "all_items";
369}
370
371#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
372#[serde(transparent)]
373pub struct GetSort(pub String);
374
375impl GetSort {
376    pub const MODIFIED_AT: &'static str = "modified_at";
377    pub const RELEVANCE: &'static str = "relevance";
378}