Skip to main content

slack_web_api/api/
admin_barriers.rs

1// このファイルは codegen/generate.py が生成する。手で編集しない
2
3#![allow(unused_imports)]
4
5use crate::objects::*;
6use crate::{
7    CursorPaginated, NextCursor, ResponseMetadata, SlackApiMethod, SlackClient, SlackError,
8};
9use serde::{Deserialize, Serialize};
10
11/// Arguments for the Slack Web API method [`admin.barriers.create`](https://docs.slack.dev/reference/methods/admin.barriers.create): Create an Information Barrier
12///
13/// Send it with [`SlackClient::admin_barriers_create`].
14#[doc(alias = "admin.barriers.create")]
15#[derive(Debug, Clone, PartialEq, Serialize)]
16#[non_exhaustive]
17pub struct AdminBarriersCreateRequest {
18    /// The id of the primary [IDP Group](https://slack.com/help/articles/115001435788-Connect-identity-provider-groups-to-your-Enterprise-organization)
19    pub primary_usergroup_id: String,
20    /// A list of [IDP Groups](https://slack.com/help/articles/115001435788-Connect-identity-provider-groups-to-your-Enterprise-organization) ids that the primary usergroup is to be barriered from.
21    pub barriered_from_usergroup_ids: Vec<String>,
22    /// What kind of interactions are blocked by this barrier? For v1, we only support a list of all 3, eg `im, mpim, call`
23    #[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/// Successful response of the Slack Web API method [`admin.barriers.create`](https://docs.slack.dev/reference/methods/admin.barriers.create).
47#[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/// Arguments for the Slack Web API method [`admin.barriers.delete`](https://docs.slack.dev/reference/methods/admin.barriers.delete): Delete an existing Information Barrier
143///
144/// Send it with [`SlackClient::admin_barriers_delete`].
145#[doc(alias = "admin.barriers.delete")]
146#[derive(Debug, Clone, PartialEq, Serialize)]
147#[non_exhaustive]
148pub struct AdminBarriersDeleteRequest {
149    /// The ID of the barrier you're trying to delete
150    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/// Successful response of the Slack Web API method [`admin.barriers.delete`](https://docs.slack.dev/reference/methods/admin.barriers.delete).
167#[doc(alias = "admin.barriers.delete")]
168#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
169pub struct AdminBarriersDeleteResponse {
170    /// Fields returned by Slack. This method has no documented response example.
171    #[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/// Arguments for the Slack Web API method [`admin.barriers.list`](https://docs.slack.dev/reference/methods/admin.barriers.list): Get all Information Barriers for your organization
188///
189/// Send it with [`SlackClient::admin_barriers_list`].
190#[doc(alias = "admin.barriers.list")]
191#[derive(Debug, Clone, PartialEq, Serialize, Default)]
192#[non_exhaustive]
193pub struct AdminBarriersListRequest {
194    /// The maximum number of items to return. Must be between 1 - 1000 both inclusive
195    #[serde(skip_serializing_if = "Option::is_none")]
196    pub limit: Option<i64>,
197    /// Set `cursor` to `next_cursor` returned by the previous call to list items in the next page
198    #[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/// Successful response of the Slack Web API method [`admin.barriers.list`](https://docs.slack.dev/reference/methods/admin.barriers.list).
239#[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/// Arguments for the Slack Web API method [`admin.barriers.update`](https://docs.slack.dev/reference/methods/admin.barriers.update): Update an existing Information Barrier
341///
342/// Send it with [`SlackClient::admin_barriers_update`].
343#[doc(alias = "admin.barriers.update")]
344#[derive(Debug, Clone, PartialEq, Serialize)]
345#[non_exhaustive]
346pub struct AdminBarriersUpdateRequest {
347    /// The ID of the barrier you're trying to modify
348    pub barrier_id: String,
349    /// The id of the primary [IDP Group](https://slack.com/help/articles/115001435788-Connect-identity-provider-groups-to-your-Enterprise-organization)
350    pub primary_usergroup_id: String,
351    /// A list of [IDP Groups](https://slack.com/help/articles/115001435788-Connect-identity-provider-groups-to-your-Enterprise-organization) ids that the primary usergroup is to be barriered from.
352    pub barriered_from_usergroup_ids: Vec<String>,
353    /// What kind of interactions are blocked by this barrier? For v1, we only support a list of all 3, eg `im, mpim, call`
354    #[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/// Successful response of the Slack Web API method [`admin.barriers.update`](https://docs.slack.dev/reference/methods/admin.barriers.update).
380#[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    /// Calls the Slack Web API method [`admin.barriers.create`](https://docs.slack.dev/reference/methods/admin.barriers.create): Create an Information Barrier
477    ///
478    /// Required scopes:
479    ///
480    /// - user token: `admin.barriers:write`
481    ///
482    /// Rate limit: Tier 2 (<https://docs.slack.dev/apis/web-api/rate-limits>).
483    ///
484    /// # Errors
485    ///
486    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
487    #[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    /// Calls the Slack Web API method [`admin.barriers.delete`](https://docs.slack.dev/reference/methods/admin.barriers.delete): Delete an existing Information Barrier
496    ///
497    /// Required scopes:
498    ///
499    /// - user token: `admin.barriers:write`
500    ///
501    /// Rate limit: Tier 2 (<https://docs.slack.dev/apis/web-api/rate-limits>).
502    ///
503    /// # Errors
504    ///
505    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
506    #[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    /// Calls the Slack Web API method [`admin.barriers.list`](https://docs.slack.dev/reference/methods/admin.barriers.list): Get all Information Barriers for your organization
515    ///
516    /// Required scopes:
517    ///
518    /// - user token: `admin.barriers:read`
519    ///
520    /// Rate limit: Tier 2 (<https://docs.slack.dev/apis/web-api/rate-limits>).
521    ///
522    /// # Errors
523    ///
524    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
525    #[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    /// Calls the Slack Web API method [`admin.barriers.update`](https://docs.slack.dev/reference/methods/admin.barriers.update): Update an existing Information Barrier
534    ///
535    /// Required scopes:
536    ///
537    /// - user token: `admin.barriers:write`
538    ///
539    /// Rate limit: Tier 2 (<https://docs.slack.dev/apis/web-api/rate-limits>).
540    ///
541    /// # Errors
542    ///
543    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
544    #[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}