Skip to main content

box_open_sdk/models/schemas/
hub_collaborations.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 HubBase {
9    pub id: String,
10    pub r#type: HubType,
11}
12
13#[derive(Clone, Debug, PartialEq)]
14pub enum HubAccessGrantee {
15    User(HubCollaborationUser),
16    Group(GroupMini),
17    /// An unrecognized discriminator, retained verbatim (open union).
18    Unknown(serde_json::Value),
19}
20
21impl Default for HubAccessGrantee {
22    fn default() -> Self {
23        Self::Unknown(Default::default())
24    }
25}
26
27impl serde::Serialize for HubAccessGrantee {
28    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
29        match self {
30            Self::User(inner) => inner.serialize(serializer),
31            Self::Group(inner) => inner.serialize(serializer),
32            Self::Unknown(inner) => inner.serialize(serializer),
33        }
34    }
35}
36
37impl<'de> serde::Deserialize<'de> for HubAccessGrantee {
38    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
39        let value = serde_json::Value::deserialize(deserializer)?;
40        let tag = value
41            .get("type")
42            .and_then(serde_json::Value::as_str)
43            .map(str::to_owned);
44        match tag.as_deref() {
45            Some("user") => Ok(Self::User(
46                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
47            )),
48            Some("group") => Ok(Self::Group(
49                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
50            )),
51            _ => Ok(Self::Unknown(value)),
52        }
53    }
54}
55
56#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
57pub struct HubCollaboration {
58    pub id: String,
59    pub r#type: HubCollaborationType,
60    #[serde(default, skip_serializing_if = "Option::is_none")]
61    pub hub: Option<HubBase>,
62    #[serde(default, skip_serializing_if = "Option::is_none")]
63    pub accessible_by: Option<HubAccessGrantee>,
64    #[serde(default, skip_serializing_if = "Option::is_none")]
65    pub role: Option<String>,
66    #[serde(default, skip_serializing_if = "Option::is_none")]
67    pub status: Option<HubCollaborationStatus>,
68    #[serde(default, skip_serializing_if = "Option::is_none")]
69    pub acceptance_requirements_status: Option<HubCollaborationAcceptanceRequirementsStatus>,
70}
71
72#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
73pub struct HubCollaborationCreateRequest {
74    pub hub: HubCollaborationCreateRequestHub,
75    pub accessible_by: HubCollaborationCreateRequestAccessibleBy,
76    pub role: String,
77}
78
79#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
80pub struct HubCollaborations {
81    #[serde(default, skip_serializing_if = "Option::is_none")]
82    pub entries: Option<Vec<HubCollaboration>>,
83    #[serde(default, skip_serializing_if = "Option::is_none")]
84    pub limit: Option<i64>,
85    #[serde(
86        default,
87        skip_serializing_if = "Option::is_none",
88        deserialize_with = "double_option"
89    )]
90    pub next_marker: Option<Option<String>>,
91}
92
93#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
94pub struct HubCollaborationUpdateRequest {
95    #[serde(default, skip_serializing_if = "Option::is_none")]
96    pub role: Option<String>,
97}
98
99#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
100pub struct HubCollaborationUser {
101    pub id: String,
102    pub r#type: HubCollaborationUserType,
103    #[serde(default, skip_serializing_if = "Option::is_none")]
104    pub name: Option<String>,
105    #[serde(default, skip_serializing_if = "Option::is_none")]
106    pub login: Option<String>,
107}
108
109#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
110#[serde(transparent)]
111pub struct HubCollaborationType(pub String);
112
113impl HubCollaborationType {
114    pub const HUB_COLLABORATION: &'static str = "hub_collaboration";
115}
116
117#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
118#[serde(transparent)]
119pub struct HubCollaborationStatus(pub String);
120
121impl HubCollaborationStatus {
122    pub const ACCEPTED: &'static str = "accepted";
123    pub const PENDING: &'static str = "pending";
124    pub const REJECTED: &'static str = "rejected";
125}
126
127#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
128pub struct HubCollaborationAcceptanceRequirementsStatus {
129    #[serde(default, skip_serializing_if = "Option::is_none")]
130    pub terms_of_service_requirement: Option<AcceptanceRequirementsStatusTermsOfServiceRequirement>,
131    #[serde(default, skip_serializing_if = "Option::is_none")]
132    pub strong_password_requirement: Option<AcceptanceRequirementsStatusStrongPasswordRequirement>,
133    #[serde(default, skip_serializing_if = "Option::is_none")]
134    pub two_factor_authentication_requirement:
135        Option<AcceptanceRequirementsStatusTwoFactorAuthenticationRequirement>,
136}
137
138#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
139pub struct HubCollaborationCreateRequestHub {
140    pub r#type: HubType,
141    pub id: String,
142}
143
144#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
145pub struct HubCollaborationCreateRequestAccessibleBy {
146    pub r#type: String,
147    #[serde(default, skip_serializing_if = "Option::is_none")]
148    pub id: Option<String>,
149    #[serde(default, skip_serializing_if = "Option::is_none")]
150    pub login: Option<String>,
151}