Skip to main content

box_open_sdk/models/schemas/
hub_items.rs

1// Code generated by box-gantry 0.1.0 (spec 3fb3510fe12f2f80) for Box API 2024.0. DO NOT EDIT.
2
3use crate::serde_helpers::double_option;
4
5use super::*;
6
7#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8pub struct HubItem {
9    pub id: String,
10    pub r#type: HubItemType,
11    pub name: String,
12}
13
14#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
15pub struct HubItemOperation {
16    pub action: HubItemOperationAction,
17    pub item: HubItemReference,
18    #[serde(default, skip_serializing_if = "Option::is_none")]
19    pub parent_id: Option<String>,
20}
21
22#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
23pub struct HubItemOperationResult {
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub action: Option<String>,
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub item: Option<HubItemReference>,
28    #[serde(default, skip_serializing_if = "Option::is_none")]
29    pub parent_id: Option<String>,
30    #[serde(default, skip_serializing_if = "Option::is_none")]
31    pub status: Option<i64>,
32    #[serde(default, skip_serializing_if = "Option::is_none")]
33    pub error: Option<String>,
34}
35
36#[derive(Clone, Debug, PartialEq)]
37pub enum HubItemReference {
38    File(FileReference),
39    Folder(FolderReference),
40    WebLink(WeblinkReference),
41    /// An unrecognized discriminator, retained verbatim (open union).
42    Unknown(serde_json::Value),
43}
44
45impl Default for HubItemReference {
46    fn default() -> Self {
47        Self::Unknown(Default::default())
48    }
49}
50
51impl serde::Serialize for HubItemReference {
52    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
53        match self {
54            Self::File(inner) => inner.serialize(serializer),
55            Self::Folder(inner) => inner.serialize(serializer),
56            Self::WebLink(inner) => inner.serialize(serializer),
57            Self::Unknown(inner) => inner.serialize(serializer),
58        }
59    }
60}
61
62impl<'de> serde::Deserialize<'de> for HubItemReference {
63    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
64        let value = serde_json::Value::deserialize(deserializer)?;
65        let tag = value
66            .get("type")
67            .and_then(serde_json::Value::as_str)
68            .map(str::to_owned);
69        match tag.as_deref() {
70            Some("file") => Ok(Self::File(
71                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
72            )),
73            Some("folder") => Ok(Self::Folder(
74                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
75            )),
76            Some("web_link") => Ok(Self::WebLink(
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 HubItems {
86    #[serde(default, skip_serializing_if = "Option::is_none")]
87    pub entries: Option<Vec<HubItem>>,
88    #[serde(default, skip_serializing_if = "Option::is_none")]
89    pub limit: Option<i64>,
90    #[serde(
91        default,
92        skip_serializing_if = "Option::is_none",
93        deserialize_with = "double_option"
94    )]
95    pub next_marker: Option<Option<String>>,
96}
97
98#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
99pub struct HubItemsManageRequest {
100    #[serde(default, skip_serializing_if = "Option::is_none")]
101    pub operations: Option<Vec<HubItemOperation>>,
102}
103
104#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
105pub struct HubItemsManageResponse {
106    pub operations: Vec<HubItemOperationResult>,
107}
108
109#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
110pub struct WeblinkReference {
111    pub r#type: WeblinkReferenceType,
112    pub id: String,
113}
114
115#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
116#[serde(transparent)]
117pub struct HubItemType(pub String);
118
119impl HubItemType {
120    pub const FILE: &'static str = "file";
121    pub const FOLDER: &'static str = "folder";
122    pub const WEB_LINK: &'static str = "web_link";
123}
124
125#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
126#[serde(transparent)]
127pub struct HubItemOperationAction(pub String);
128
129impl HubItemOperationAction {
130    pub const ADD: &'static str = "add";
131    pub const REMOVE: &'static str = "remove";
132}
133
134#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
135#[serde(transparent)]
136pub struct WeblinkReferenceType(pub String);
137
138impl WeblinkReferenceType {
139    pub const WEB_LINK: &'static str = "web_link";
140}