1use crate::serde_helpers::double_option;
4
5use super::*;
6
7#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8pub struct IntegrationMapping {
9 pub id: String,
10 pub r#type: IntegrationMappingType,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub integration_type: Option<IntegrationMappingIntegrationType>,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 pub is_manually_created: Option<bool>,
15 #[serde(default, skip_serializing_if = "Option::is_none")]
16 pub options: Option<IntegrationMappingSlackOptions>,
17 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub created_by: Option<UserIntegrationMappings>,
19 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub modified_by: Option<UserIntegrationMappings>,
21 pub partner_item: IntegrationMappingPartnerItemSlack,
22 pub box_item: FolderMini,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
27}
28
29#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
30pub struct IntegrationMappingBoxItemSlack {
31 pub r#type: FolderType,
32 pub id: String,
33}
34
35#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
36pub struct IntegrationMappingPartnerItemSlack {
37 pub r#type: IntegrationMappingPartnerItemSlackType,
38 pub id: String,
39 #[serde(
40 default,
41 skip_serializing_if = "Option::is_none",
42 deserialize_with = "double_option"
43 )]
44 pub slack_workspace_id: Option<Option<String>>,
45 #[serde(
46 default,
47 skip_serializing_if = "Option::is_none",
48 deserialize_with = "double_option"
49 )]
50 pub slack_org_id: Option<Option<String>>,
51}
52
53#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
54pub struct IntegrationMappingPartnerItemTeams {
55 pub r#type: IntegrationMappingPartnerItemTeamsType,
56 pub id: String,
57 pub tenant_id: String,
58}
59
60#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
61pub struct IntegrationMappingPartnerItemTeamsCreateRequest {
62 pub r#type: IntegrationMappingPartnerItemTeamsType,
63 pub id: String,
64 pub tenant_id: String,
65 pub team_id: String,
66}
67
68#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
69pub struct IntegrationMappings {
70 #[serde(default, skip_serializing_if = "Option::is_none")]
71 pub limit: Option<i64>,
72 #[serde(
73 default,
74 skip_serializing_if = "Option::is_none",
75 deserialize_with = "double_option"
76 )]
77 pub next_marker: Option<Option<String>>,
78 #[serde(default, skip_serializing_if = "Option::is_none")]
79 pub entries: Option<Vec<IntegrationMapping>>,
80}
81
82#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
83pub struct IntegrationMappingSlackCreateRequest {
84 pub partner_item: IntegrationMappingPartnerItemSlack,
85 pub box_item: IntegrationMappingBoxItemSlack,
86 #[serde(default, skip_serializing_if = "Option::is_none")]
87 pub options: Option<IntegrationMappingSlackOptions>,
88}
89
90#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
91pub struct IntegrationMappingSlackOptions {
92 #[serde(default, skip_serializing_if = "Option::is_none")]
93 pub is_access_management_disabled: Option<bool>,
94}
95
96#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
97pub struct IntegrationMappingsTeams {
98 #[serde(default, skip_serializing_if = "Option::is_none")]
99 pub entries: Option<Vec<IntegrationMappingTeams>>,
100}
101
102#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
103pub struct IntegrationMappingTeams {
104 pub id: String,
105 pub r#type: IntegrationMappingType,
106 #[serde(default, skip_serializing_if = "Option::is_none")]
107 pub integration_type: Option<IntegrationMappingTeamsIntegrationType>,
108 #[serde(default, skip_serializing_if = "Option::is_none")]
109 pub is_overridden_by_manual_mapping: Option<bool>,
110 pub partner_item: IntegrationMappingPartnerItemTeams,
111 pub box_item: FolderReference,
112 #[serde(default, skip_serializing_if = "Option::is_none")]
113 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
114 #[serde(default, skip_serializing_if = "Option::is_none")]
115 pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
116}
117
118#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
119pub struct IntegrationMappingTeamsCreateRequest {
120 pub partner_item: IntegrationMappingPartnerItemTeamsCreateRequest,
121 pub box_item: FolderReference,
122}
123
124#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
125pub struct UserIntegrationMappings {
126 pub id: String,
127 pub r#type: VariableValueType,
128 #[serde(default, skip_serializing_if = "Option::is_none")]
129 pub name: Option<String>,
130 #[serde(default, skip_serializing_if = "Option::is_none")]
131 pub login: Option<String>,
132}
133
134#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
135#[serde(transparent)]
136pub struct IntegrationMappingType(pub String);
137
138impl IntegrationMappingType {
139 pub const INTEGRATION_MAPPING: &'static str = "integration_mapping";
140}
141
142#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
143#[serde(transparent)]
144pub struct IntegrationMappingIntegrationType(pub String);
145
146impl IntegrationMappingIntegrationType {
147 pub const SLACK: &'static str = "slack";
148}
149
150#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
151#[serde(transparent)]
152pub struct IntegrationMappingPartnerItemSlackType(pub String);
153
154impl IntegrationMappingPartnerItemSlackType {
155 pub const CHANNEL: &'static str = "channel";
156}
157
158#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
159#[serde(transparent)]
160pub struct IntegrationMappingPartnerItemTeamsType(pub String);
161
162impl IntegrationMappingPartnerItemTeamsType {
163 pub const CHANNEL: &'static str = "channel";
164 pub const TEAM: &'static str = "team";
165}
166
167#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
168#[serde(transparent)]
169pub struct IntegrationMappingTeamsIntegrationType(pub String);
170
171impl IntegrationMappingTeamsIntegrationType {
172 pub const TEAMS: &'static str = "teams";
173}
174
175#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
176pub struct UpdateSlackRequest {
177 #[serde(default, skip_serializing_if = "Option::is_none")]
178 pub box_item: Option<IntegrationMappingBoxItemSlack>,
179 #[serde(default, skip_serializing_if = "Option::is_none")]
180 pub options: Option<IntegrationMappingSlackOptions>,
181}
182
183#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
184pub struct UpdateTeamRequest {
185 #[serde(default, skip_serializing_if = "Option::is_none")]
186 pub box_item: Option<FolderReference>,
187}