1#![allow(unused_imports)]
4
5use crate::objects::*;
6use crate::{
7 CursorPaginated, NextCursor, ResponseMetadata, SlackApiMethod, SlackClient, SlackError,
8};
9use serde::{Deserialize, Serialize};
10
11#[doc(alias = "admin.barriers.create")]
15#[derive(Debug, Clone, PartialEq, Serialize)]
16#[non_exhaustive]
17pub struct AdminBarriersCreateRequest {
18 pub primary_usergroup_id: String,
20 pub barriered_from_usergroup_ids: Vec<String>,
22 #[serde(serialize_with = "crate::form::as_json")]
24 pub restricted_subjects: Vec<serde_json::Value>,
25}
26
27impl AdminBarriersCreateRequest {
28 pub fn new(
29 primary_usergroup_id: impl Into<String>,
30 barriered_from_usergroup_ids: Vec<String>,
31 restricted_subjects: Vec<serde_json::Value>,
32 ) -> Self {
33 Self {
34 primary_usergroup_id: primary_usergroup_id.into(),
35 barriered_from_usergroup_ids,
36 restricted_subjects,
37 }
38 }
39}
40
41impl SlackApiMethod for AdminBarriersCreateRequest {
42 const METHOD: &'static str = "admin.barriers.create";
43 type Response = AdminBarriersCreateResponse;
44}
45
46#[doc(alias = "admin.barriers.create")]
48#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
49pub struct AdminBarriersCreateResponse {
50 #[serde(
51 default,
52 deserialize_with = "crate::de::opt_object",
53 skip_serializing_if = "Option::is_none"
54 )]
55 pub barrier: Option<AdminBarriersCreateResponseBarrier>,
56 #[serde(
57 default,
58 deserialize_with = "crate::de::opt_object",
59 skip_serializing_if = "Option::is_none"
60 )]
61 pub response_metadata: Option<ResponseMetadata>,
62 #[serde(
63 default,
64 deserialize_with = "crate::de::opt_string",
65 skip_serializing_if = "Option::is_none"
66 )]
67 pub warning: Option<String>,
68}
69
70#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
71pub struct AdminBarriersCreateResponseBarrier {
72 #[serde(
73 default,
74 deserialize_with = "crate::de::opt_string",
75 skip_serializing_if = "Option::is_none"
76 )]
77 pub id: Option<String>,
78 #[serde(
79 default,
80 deserialize_with = "crate::de::opt_string",
81 skip_serializing_if = "Option::is_none"
82 )]
83 pub enterprise_id: Option<String>,
84 #[serde(
85 default,
86 deserialize_with = "crate::de::opt_object",
87 skip_serializing_if = "Option::is_none"
88 )]
89 pub primary_usergroup: Option<AdminBarriersCreateResponseBarrierPrimaryUsergroup>,
90 #[serde(
91 default,
92 deserialize_with = "crate::de::vec",
93 skip_serializing_if = "Vec::is_empty"
94 )]
95 pub barriered_from_usergroups: Vec<AdminBarriersCreateResponseBarrierBarrieredFromUsergroups>,
96 #[serde(
97 default,
98 deserialize_with = "crate::de::vec",
99 skip_serializing_if = "Vec::is_empty"
100 )]
101 pub restricted_subjects: Vec<String>,
102 #[serde(
103 default,
104 deserialize_with = "crate::de::opt_i64",
105 skip_serializing_if = "Option::is_none"
106 )]
107 pub date_update: Option<i64>,
108}
109
110#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
111pub struct AdminBarriersCreateResponseBarrierPrimaryUsergroup {
112 #[serde(
113 default,
114 deserialize_with = "crate::de::opt_string",
115 skip_serializing_if = "Option::is_none"
116 )]
117 pub id: Option<String>,
118 #[serde(
119 default,
120 deserialize_with = "crate::de::opt_string",
121 skip_serializing_if = "Option::is_none"
122 )]
123 pub name: Option<String>,
124}
125
126#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
127pub struct AdminBarriersCreateResponseBarrierBarrieredFromUsergroups {
128 #[serde(
129 default,
130 deserialize_with = "crate::de::opt_string",
131 skip_serializing_if = "Option::is_none"
132 )]
133 pub id: Option<String>,
134 #[serde(
135 default,
136 deserialize_with = "crate::de::opt_string",
137 skip_serializing_if = "Option::is_none"
138 )]
139 pub name: Option<String>,
140}
141
142#[doc(alias = "admin.barriers.delete")]
146#[derive(Debug, Clone, PartialEq, Serialize)]
147#[non_exhaustive]
148pub struct AdminBarriersDeleteRequest {
149 pub barrier_id: String,
151}
152
153impl AdminBarriersDeleteRequest {
154 pub fn new(barrier_id: impl Into<String>) -> Self {
155 Self {
156 barrier_id: barrier_id.into(),
157 }
158 }
159}
160
161impl SlackApiMethod for AdminBarriersDeleteRequest {
162 const METHOD: &'static str = "admin.barriers.delete";
163 type Response = AdminBarriersDeleteResponse;
164}
165
166#[doc(alias = "admin.barriers.delete")]
168#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
169pub struct AdminBarriersDeleteResponse {
170 #[serde(flatten)]
172 pub extra: serde_json::Map<String, serde_json::Value>,
173 #[serde(
174 default,
175 deserialize_with = "crate::de::opt_object",
176 skip_serializing_if = "Option::is_none"
177 )]
178 pub response_metadata: Option<ResponseMetadata>,
179 #[serde(
180 default,
181 deserialize_with = "crate::de::opt_string",
182 skip_serializing_if = "Option::is_none"
183 )]
184 pub warning: Option<String>,
185}
186
187#[doc(alias = "admin.barriers.list")]
191#[derive(Debug, Clone, PartialEq, Serialize, Default)]
192#[non_exhaustive]
193pub struct AdminBarriersListRequest {
194 #[serde(skip_serializing_if = "Option::is_none")]
196 pub limit: Option<i64>,
197 #[serde(skip_serializing_if = "Option::is_none")]
199 pub cursor: Option<String>,
200}
201
202impl AdminBarriersListRequest {
203 pub fn new() -> Self {
204 Self {
205 limit: None,
206 cursor: None,
207 }
208 }
209
210 pub fn limit(mut self, limit: i64) -> Self {
211 self.limit = Some(limit);
212 self
213 }
214
215 pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
216 self.cursor = Some(cursor.into());
217 self
218 }
219}
220
221impl SlackApiMethod for AdminBarriersListRequest {
222 const METHOD: &'static str = "admin.barriers.list";
223 type Response = AdminBarriersListResponse;
224}
225
226impl CursorPaginated for AdminBarriersListRequest {
227 fn set_cursor(&mut self, cursor: String) {
228 self.cursor = Some(cursor);
229 }
230}
231
232impl NextCursor for AdminBarriersListResponse {
233 fn next_cursor(&self) -> Option<&str> {
234 self.response_metadata.as_ref()?.next_cursor.as_deref()
235 }
236}
237
238#[doc(alias = "admin.barriers.list")]
240#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
241pub struct AdminBarriersListResponse {
242 #[serde(
243 default,
244 deserialize_with = "crate::de::vec",
245 skip_serializing_if = "Vec::is_empty"
246 )]
247 pub barriers: Vec<AdminBarriersListResponseBarriers>,
248 #[serde(
249 default,
250 deserialize_with = "crate::de::opt_object",
251 skip_serializing_if = "Option::is_none"
252 )]
253 pub response_metadata: Option<ResponseMetadata>,
254 #[serde(
255 default,
256 deserialize_with = "crate::de::opt_string",
257 skip_serializing_if = "Option::is_none"
258 )]
259 pub warning: Option<String>,
260}
261
262#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
263pub struct AdminBarriersListResponseBarriers {
264 #[serde(
265 default,
266 deserialize_with = "crate::de::opt_string",
267 skip_serializing_if = "Option::is_none"
268 )]
269 pub id: Option<String>,
270 #[serde(
271 default,
272 deserialize_with = "crate::de::opt_string",
273 skip_serializing_if = "Option::is_none"
274 )]
275 pub enterprise_id: Option<String>,
276 #[serde(
277 default,
278 deserialize_with = "crate::de::opt_object",
279 skip_serializing_if = "Option::is_none"
280 )]
281 pub primary_usergroup: Option<AdminBarriersListResponseBarriersPrimaryUsergroup>,
282 #[serde(
283 default,
284 deserialize_with = "crate::de::vec",
285 skip_serializing_if = "Vec::is_empty"
286 )]
287 pub barriered_from_usergroups: Vec<AdminBarriersListResponseBarriersBarrieredFromUsergroups>,
288 #[serde(
289 default,
290 deserialize_with = "crate::de::vec",
291 skip_serializing_if = "Vec::is_empty"
292 )]
293 pub restricted_subjects: Vec<String>,
294 #[serde(
295 default,
296 deserialize_with = "crate::de::opt_i64",
297 skip_serializing_if = "Option::is_none"
298 )]
299 pub date_update: Option<i64>,
300 #[serde(
301 default,
302 deserialize_with = "crate::de::opt_object",
303 skip_serializing_if = "Option::is_none"
304 )]
305 pub response_metadata: Option<ResponseMetadata>,
306}
307
308#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
309pub struct AdminBarriersListResponseBarriersPrimaryUsergroup {
310 #[serde(
311 default,
312 deserialize_with = "crate::de::opt_string",
313 skip_serializing_if = "Option::is_none"
314 )]
315 pub id: Option<String>,
316 #[serde(
317 default,
318 deserialize_with = "crate::de::opt_string",
319 skip_serializing_if = "Option::is_none"
320 )]
321 pub name: Option<String>,
322}
323
324#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
325pub struct AdminBarriersListResponseBarriersBarrieredFromUsergroups {
326 #[serde(
327 default,
328 deserialize_with = "crate::de::opt_string",
329 skip_serializing_if = "Option::is_none"
330 )]
331 pub id: Option<String>,
332 #[serde(
333 default,
334 deserialize_with = "crate::de::opt_string",
335 skip_serializing_if = "Option::is_none"
336 )]
337 pub name: Option<String>,
338}
339
340#[doc(alias = "admin.barriers.update")]
344#[derive(Debug, Clone, PartialEq, Serialize)]
345#[non_exhaustive]
346pub struct AdminBarriersUpdateRequest {
347 pub barrier_id: String,
349 pub primary_usergroup_id: String,
351 pub barriered_from_usergroup_ids: Vec<String>,
353 #[serde(serialize_with = "crate::form::as_json")]
355 pub restricted_subjects: Vec<serde_json::Value>,
356}
357
358impl AdminBarriersUpdateRequest {
359 pub fn new(
360 barrier_id: impl Into<String>,
361 primary_usergroup_id: impl Into<String>,
362 barriered_from_usergroup_ids: Vec<String>,
363 restricted_subjects: Vec<serde_json::Value>,
364 ) -> Self {
365 Self {
366 barrier_id: barrier_id.into(),
367 primary_usergroup_id: primary_usergroup_id.into(),
368 barriered_from_usergroup_ids,
369 restricted_subjects,
370 }
371 }
372}
373
374impl SlackApiMethod for AdminBarriersUpdateRequest {
375 const METHOD: &'static str = "admin.barriers.update";
376 type Response = AdminBarriersUpdateResponse;
377}
378
379#[doc(alias = "admin.barriers.update")]
381#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
382pub struct AdminBarriersUpdateResponse {
383 #[serde(
384 default,
385 deserialize_with = "crate::de::opt_object",
386 skip_serializing_if = "Option::is_none"
387 )]
388 pub barrier: Option<AdminBarriersUpdateResponseBarrier>,
389 #[serde(
390 default,
391 deserialize_with = "crate::de::opt_object",
392 skip_serializing_if = "Option::is_none"
393 )]
394 pub response_metadata: Option<ResponseMetadata>,
395 #[serde(
396 default,
397 deserialize_with = "crate::de::opt_string",
398 skip_serializing_if = "Option::is_none"
399 )]
400 pub warning: Option<String>,
401}
402
403#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
404pub struct AdminBarriersUpdateResponseBarrier {
405 #[serde(
406 default,
407 deserialize_with = "crate::de::opt_string",
408 skip_serializing_if = "Option::is_none"
409 )]
410 pub id: Option<String>,
411 #[serde(
412 default,
413 deserialize_with = "crate::de::opt_string",
414 skip_serializing_if = "Option::is_none"
415 )]
416 pub enterprise_id: Option<String>,
417 #[serde(
418 default,
419 deserialize_with = "crate::de::opt_object",
420 skip_serializing_if = "Option::is_none"
421 )]
422 pub primary_usergroup: Option<AdminBarriersUpdateResponseBarrierPrimaryUsergroup>,
423 #[serde(
424 default,
425 deserialize_with = "crate::de::vec",
426 skip_serializing_if = "Vec::is_empty"
427 )]
428 pub barriered_from_usergroups: Vec<AdminBarriersUpdateResponseBarrierBarrieredFromUsergroups>,
429 #[serde(
430 default,
431 deserialize_with = "crate::de::vec",
432 skip_serializing_if = "Vec::is_empty"
433 )]
434 pub restricted_subjects: Vec<String>,
435 #[serde(
436 default,
437 deserialize_with = "crate::de::opt_i64",
438 skip_serializing_if = "Option::is_none"
439 )]
440 pub date_update: Option<i64>,
441}
442
443#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
444pub struct AdminBarriersUpdateResponseBarrierPrimaryUsergroup {
445 #[serde(
446 default,
447 deserialize_with = "crate::de::opt_string",
448 skip_serializing_if = "Option::is_none"
449 )]
450 pub id: Option<String>,
451 #[serde(
452 default,
453 deserialize_with = "crate::de::opt_string",
454 skip_serializing_if = "Option::is_none"
455 )]
456 pub name: Option<String>,
457}
458
459#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
460pub struct AdminBarriersUpdateResponseBarrierBarrieredFromUsergroups {
461 #[serde(
462 default,
463 deserialize_with = "crate::de::opt_string",
464 skip_serializing_if = "Option::is_none"
465 )]
466 pub id: Option<String>,
467 #[serde(
468 default,
469 deserialize_with = "crate::de::opt_string",
470 skip_serializing_if = "Option::is_none"
471 )]
472 pub name: Option<String>,
473}
474
475impl SlackClient {
476 #[doc(alias = "admin.barriers.create")]
488 pub async fn admin_barriers_create(
489 &self,
490 request: &AdminBarriersCreateRequest,
491 ) -> Result<AdminBarriersCreateResponse, SlackError> {
492 self.call(request).await
493 }
494
495 #[doc(alias = "admin.barriers.delete")]
507 pub async fn admin_barriers_delete(
508 &self,
509 request: &AdminBarriersDeleteRequest,
510 ) -> Result<AdminBarriersDeleteResponse, SlackError> {
511 self.call(request).await
512 }
513
514 #[doc(alias = "admin.barriers.list")]
526 pub async fn admin_barriers_list(
527 &self,
528 request: &AdminBarriersListRequest,
529 ) -> Result<AdminBarriersListResponse, SlackError> {
530 self.call(request).await
531 }
532
533 #[doc(alias = "admin.barriers.update")]
545 pub async fn admin_barriers_update(
546 &self,
547 request: &AdminBarriersUpdateRequest,
548 ) -> Result<AdminBarriersUpdateResponse, SlackError> {
549 self.call(request).await
550 }
551}