Skip to main content

slack_web_api/api/
functions.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 [`functions.completeError`](https://docs.slack.dev/reference/methods/functions.completeError): Signal that a function failed to complete
12///
13/// Send it with [`SlackClient::functions_complete_error`].
14#[doc(alias = "functions.completeError")]
15#[derive(Debug, Clone, PartialEq, Serialize)]
16#[non_exhaustive]
17pub struct FunctionsCompleteErrorRequest {
18    /// Context identifier that maps to the executed function
19    pub function_execution_id: String,
20    /// A human-readable error message that contains information about why the function failed to complete
21    pub error: String,
22}
23
24impl FunctionsCompleteErrorRequest {
25    pub fn new(function_execution_id: impl Into<String>, error: impl Into<String>) -> Self {
26        Self {
27            function_execution_id: function_execution_id.into(),
28            error: error.into(),
29        }
30    }
31}
32
33impl SlackApiMethod for FunctionsCompleteErrorRequest {
34    const METHOD: &'static str = "functions.completeError";
35    type Response = FunctionsCompleteErrorResponse;
36}
37
38/// Successful response of the Slack Web API method [`functions.completeError`](https://docs.slack.dev/reference/methods/functions.completeError).
39#[doc(alias = "functions.completeError")]
40#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
41pub struct FunctionsCompleteErrorResponse {
42    /// Fields returned by Slack. This method has no documented response example.
43    #[serde(flatten)]
44    pub extra: serde_json::Map<String, serde_json::Value>,
45    #[serde(
46        default,
47        deserialize_with = "crate::de::opt_object",
48        skip_serializing_if = "Option::is_none"
49    )]
50    pub response_metadata: Option<ResponseMetadata>,
51    #[serde(
52        default,
53        deserialize_with = "crate::de::opt_string",
54        skip_serializing_if = "Option::is_none"
55    )]
56    pub warning: Option<String>,
57}
58
59/// Arguments for the Slack Web API method [`functions.completeSuccess`](https://docs.slack.dev/reference/methods/functions.completeSuccess): Signal the successful completion of a function
60///
61/// Send it with [`SlackClient::functions_complete_success`].
62#[doc(alias = "functions.completeSuccess")]
63#[derive(Debug, Clone, PartialEq, Serialize)]
64#[non_exhaustive]
65pub struct FunctionsCompleteSuccessRequest {
66    /// Context identifier that maps to the executed function
67    pub function_execution_id: String,
68    /// A JSON-based object that conforms to the [output parameters](https://docs.slack.dev/deno-slack-sdk/guides/creating-custom-functions.md#input-output) schema for the custom function defined in the manifest
69    pub outputs: serde_json::Value,
70}
71
72impl FunctionsCompleteSuccessRequest {
73    pub fn new(function_execution_id: impl Into<String>, outputs: serde_json::Value) -> Self {
74        Self {
75            function_execution_id: function_execution_id.into(),
76            outputs,
77        }
78    }
79}
80
81impl SlackApiMethod for FunctionsCompleteSuccessRequest {
82    const METHOD: &'static str = "functions.completeSuccess";
83    type Response = FunctionsCompleteSuccessResponse;
84}
85
86/// Successful response of the Slack Web API method [`functions.completeSuccess`](https://docs.slack.dev/reference/methods/functions.completeSuccess).
87#[doc(alias = "functions.completeSuccess")]
88#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
89pub struct FunctionsCompleteSuccessResponse {
90    /// Fields returned by Slack. This method has no documented response example.
91    #[serde(flatten)]
92    pub extra: serde_json::Map<String, serde_json::Value>,
93    #[serde(
94        default,
95        deserialize_with = "crate::de::opt_object",
96        skip_serializing_if = "Option::is_none"
97    )]
98    pub response_metadata: Option<ResponseMetadata>,
99    #[serde(
100        default,
101        deserialize_with = "crate::de::opt_string",
102        skip_serializing_if = "Option::is_none"
103    )]
104    pub warning: Option<String>,
105}
106
107/// Arguments for the Slack Web API method [`functions.distributions.permissions.add`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.add): Grant users access to a custom slack function if its permission_type is set to named_entities
108///
109/// Send it with [`SlackClient::functions_distributions_permissions_add`].
110#[doc(alias = "functions.distributions.permissions.add")]
111#[derive(Debug, Clone, PartialEq, Serialize, Default)]
112#[non_exhaustive]
113pub struct FunctionsDistributionsPermissionsAddRequest {
114    /// The encoded ID of the function
115    #[serde(skip_serializing_if = "Option::is_none")]
116    pub function_id: Option<String>,
117    /// The callback ID defined in the function's definition file
118    #[serde(skip_serializing_if = "Option::is_none")]
119    pub function_callback_id: Option<String>,
120    /// The encoded ID of the app
121    #[serde(skip_serializing_if = "Option::is_none")]
122    pub function_app_id: Option<String>,
123    /// List of encoded user IDs
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub user_ids: Option<Vec<String>>,
126}
127
128impl FunctionsDistributionsPermissionsAddRequest {
129    pub fn new() -> Self {
130        Self {
131            function_id: None,
132            function_callback_id: None,
133            function_app_id: None,
134            user_ids: None,
135        }
136    }
137
138    pub fn function_id(mut self, function_id: impl Into<String>) -> Self {
139        self.function_id = Some(function_id.into());
140        self
141    }
142
143    pub fn function_callback_id(mut self, function_callback_id: impl Into<String>) -> Self {
144        self.function_callback_id = Some(function_callback_id.into());
145        self
146    }
147
148    pub fn function_app_id(mut self, function_app_id: impl Into<String>) -> Self {
149        self.function_app_id = Some(function_app_id.into());
150        self
151    }
152
153    pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
154        self.user_ids = Some(user_ids);
155        self
156    }
157}
158
159impl SlackApiMethod for FunctionsDistributionsPermissionsAddRequest {
160    const METHOD: &'static str = "functions.distributions.permissions.add";
161    type Response = FunctionsDistributionsPermissionsAddResponse;
162}
163
164/// Successful response of the Slack Web API method [`functions.distributions.permissions.add`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.add).
165#[doc(alias = "functions.distributions.permissions.add")]
166#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
167pub struct FunctionsDistributionsPermissionsAddResponse {
168    #[serde(
169        default,
170        deserialize_with = "crate::de::opt_string",
171        skip_serializing_if = "Option::is_none"
172    )]
173    pub permission_type: Option<String>,
174    #[serde(
175        default,
176        deserialize_with = "crate::de::vec",
177        skip_serializing_if = "Vec::is_empty"
178    )]
179    pub users: Vec<FunctionsDistributionsPermissionsAddResponseUsers>,
180    #[serde(
181        default,
182        deserialize_with = "crate::de::opt_object",
183        skip_serializing_if = "Option::is_none"
184    )]
185    pub response_metadata: Option<ResponseMetadata>,
186    #[serde(
187        default,
188        deserialize_with = "crate::de::opt_string",
189        skip_serializing_if = "Option::is_none"
190    )]
191    pub warning: Option<String>,
192}
193
194#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
195pub struct FunctionsDistributionsPermissionsAddResponseUsers {
196    #[serde(
197        default,
198        deserialize_with = "crate::de::opt_string",
199        skip_serializing_if = "Option::is_none"
200    )]
201    pub user_id: Option<String>,
202    #[serde(
203        default,
204        deserialize_with = "crate::de::opt_string",
205        skip_serializing_if = "Option::is_none"
206    )]
207    pub username: Option<String>,
208    #[serde(
209        default,
210        deserialize_with = "crate::de::opt_string",
211        skip_serializing_if = "Option::is_none"
212    )]
213    pub email: Option<String>,
214}
215
216/// Arguments for the Slack Web API method [`functions.distributions.permissions.list`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.list): List the access type of a custom slack function and include the users, team or org ids with access if its permission_type is set to named_entities
217///
218/// Send it with [`SlackClient::functions_distributions_permissions_list`].
219#[doc(alias = "functions.distributions.permissions.list")]
220#[derive(Debug, Clone, PartialEq, Serialize, Default)]
221#[non_exhaustive]
222pub struct FunctionsDistributionsPermissionsListRequest {
223    /// The encoded ID of the function
224    #[serde(skip_serializing_if = "Option::is_none")]
225    pub function_id: Option<String>,
226    /// The callback ID defined in the function's definition file
227    #[serde(skip_serializing_if = "Option::is_none")]
228    pub function_callback_id: Option<String>,
229    /// The encoded ID of the app
230    #[serde(skip_serializing_if = "Option::is_none")]
231    pub function_app_id: Option<String>,
232}
233
234impl FunctionsDistributionsPermissionsListRequest {
235    pub fn new() -> Self {
236        Self {
237            function_id: None,
238            function_callback_id: None,
239            function_app_id: None,
240        }
241    }
242
243    pub fn function_id(mut self, function_id: impl Into<String>) -> Self {
244        self.function_id = Some(function_id.into());
245        self
246    }
247
248    pub fn function_callback_id(mut self, function_callback_id: impl Into<String>) -> Self {
249        self.function_callback_id = Some(function_callback_id.into());
250        self
251    }
252
253    pub fn function_app_id(mut self, function_app_id: impl Into<String>) -> Self {
254        self.function_app_id = Some(function_app_id.into());
255        self
256    }
257}
258
259impl SlackApiMethod for FunctionsDistributionsPermissionsListRequest {
260    const METHOD: &'static str = "functions.distributions.permissions.list";
261    type Response = FunctionsDistributionsPermissionsListResponse;
262}
263
264/// Successful response of the Slack Web API method [`functions.distributions.permissions.list`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.list).
265#[doc(alias = "functions.distributions.permissions.list")]
266#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
267pub struct FunctionsDistributionsPermissionsListResponse {
268    #[serde(
269        default,
270        deserialize_with = "crate::de::opt_string",
271        skip_serializing_if = "Option::is_none"
272    )]
273    pub permission_type: Option<String>,
274    #[serde(
275        default,
276        deserialize_with = "crate::de::vec",
277        skip_serializing_if = "Vec::is_empty"
278    )]
279    pub users: Vec<FunctionsDistributionsPermissionsListResponseUsers>,
280    #[serde(
281        default,
282        deserialize_with = "crate::de::opt_object",
283        skip_serializing_if = "Option::is_none"
284    )]
285    pub response_metadata: Option<ResponseMetadata>,
286    #[serde(
287        default,
288        deserialize_with = "crate::de::opt_string",
289        skip_serializing_if = "Option::is_none"
290    )]
291    pub warning: Option<String>,
292}
293
294#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
295pub struct FunctionsDistributionsPermissionsListResponseUsers {
296    #[serde(
297        default,
298        deserialize_with = "crate::de::opt_string",
299        skip_serializing_if = "Option::is_none"
300    )]
301    pub user_id: Option<String>,
302    #[serde(
303        default,
304        deserialize_with = "crate::de::opt_string",
305        skip_serializing_if = "Option::is_none"
306    )]
307    pub username: Option<String>,
308    #[serde(
309        default,
310        deserialize_with = "crate::de::opt_string",
311        skip_serializing_if = "Option::is_none"
312    )]
313    pub email: Option<String>,
314}
315
316/// Arguments for the Slack Web API method [`functions.distributions.permissions.remove`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.remove): Revoke user access to a custom slack function if permission_type set to named_entities
317///
318/// Send it with [`SlackClient::functions_distributions_permissions_remove`].
319#[doc(alias = "functions.distributions.permissions.remove")]
320#[derive(Debug, Clone, PartialEq, Serialize, Default)]
321#[non_exhaustive]
322pub struct FunctionsDistributionsPermissionsRemoveRequest {
323    /// The encoded ID of the function
324    #[serde(skip_serializing_if = "Option::is_none")]
325    pub function_id: Option<String>,
326    /// The callback ID defined in the function's definition file
327    #[serde(skip_serializing_if = "Option::is_none")]
328    pub function_callback_id: Option<String>,
329    /// The encoded ID of the app.
330    #[serde(skip_serializing_if = "Option::is_none")]
331    pub function_app_id: Option<String>,
332    /// List of encoded user IDs
333    #[serde(skip_serializing_if = "Option::is_none")]
334    pub user_ids: Option<Vec<String>>,
335}
336
337impl FunctionsDistributionsPermissionsRemoveRequest {
338    pub fn new() -> Self {
339        Self {
340            function_id: None,
341            function_callback_id: None,
342            function_app_id: None,
343            user_ids: None,
344        }
345    }
346
347    pub fn function_id(mut self, function_id: impl Into<String>) -> Self {
348        self.function_id = Some(function_id.into());
349        self
350    }
351
352    pub fn function_callback_id(mut self, function_callback_id: impl Into<String>) -> Self {
353        self.function_callback_id = Some(function_callback_id.into());
354        self
355    }
356
357    pub fn function_app_id(mut self, function_app_id: impl Into<String>) -> Self {
358        self.function_app_id = Some(function_app_id.into());
359        self
360    }
361
362    pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
363        self.user_ids = Some(user_ids);
364        self
365    }
366}
367
368impl SlackApiMethod for FunctionsDistributionsPermissionsRemoveRequest {
369    const METHOD: &'static str = "functions.distributions.permissions.remove";
370    type Response = FunctionsDistributionsPermissionsRemoveResponse;
371}
372
373/// Successful response of the Slack Web API method [`functions.distributions.permissions.remove`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.remove).
374#[doc(alias = "functions.distributions.permissions.remove")]
375#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
376pub struct FunctionsDistributionsPermissionsRemoveResponse {
377    #[serde(
378        default,
379        deserialize_with = "crate::de::opt_string",
380        skip_serializing_if = "Option::is_none"
381    )]
382    pub permission_type: Option<String>,
383    #[serde(
384        default,
385        deserialize_with = "crate::de::vec",
386        skip_serializing_if = "Vec::is_empty"
387    )]
388    pub users: Vec<FunctionsDistributionsPermissionsRemoveResponseUsers>,
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 FunctionsDistributionsPermissionsRemoveResponseUsers {
405    #[serde(
406        default,
407        deserialize_with = "crate::de::opt_string",
408        skip_serializing_if = "Option::is_none"
409    )]
410    pub user_id: Option<String>,
411    #[serde(
412        default,
413        deserialize_with = "crate::de::opt_string",
414        skip_serializing_if = "Option::is_none"
415    )]
416    pub username: Option<String>,
417    #[serde(
418        default,
419        deserialize_with = "crate::de::opt_string",
420        skip_serializing_if = "Option::is_none"
421    )]
422    pub email: Option<String>,
423}
424
425/// Arguments for the Slack Web API method [`functions.distributions.permissions.set`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.set): Set the access type of a custom slack function and define the users, team or org ids to be granted access if permission_type is set to named_entities
426///
427/// Send it with [`SlackClient::functions_distributions_permissions_set`].
428#[doc(alias = "functions.distributions.permissions.set")]
429#[derive(Debug, Clone, PartialEq, Serialize, Default)]
430#[non_exhaustive]
431pub struct FunctionsDistributionsPermissionsSetRequest {
432    /// The encoded ID of the function
433    #[serde(skip_serializing_if = "Option::is_none")]
434    pub function_id: Option<String>,
435    /// The callback ID defined in the function's definition file
436    #[serde(skip_serializing_if = "Option::is_none")]
437    pub function_callback_id: Option<String>,
438    /// The encoded ID of the app
439    #[serde(skip_serializing_if = "Option::is_none")]
440    pub function_app_id: Option<String>,
441    /// The type of permission that defines how the function can be distributed
442    #[serde(skip_serializing_if = "Option::is_none")]
443    pub permission_type: Option<String>,
444    /// List of encoded user IDs
445    #[serde(skip_serializing_if = "Option::is_none")]
446    pub user_ids: Option<Vec<String>>,
447    /// List of team IDs to allow for named\_entities permission
448    #[serde(skip_serializing_if = "Option::is_none")]
449    pub team_ids: Option<Vec<String>>,
450    /// List of org IDs to allow for named\_entities permission
451    #[serde(skip_serializing_if = "Option::is_none")]
452    pub org_ids: Option<Vec<String>>,
453}
454
455impl FunctionsDistributionsPermissionsSetRequest {
456    pub fn new() -> Self {
457        Self {
458            function_id: None,
459            function_callback_id: None,
460            function_app_id: None,
461            permission_type: None,
462            user_ids: None,
463            team_ids: None,
464            org_ids: None,
465        }
466    }
467
468    pub fn function_id(mut self, function_id: impl Into<String>) -> Self {
469        self.function_id = Some(function_id.into());
470        self
471    }
472
473    pub fn function_callback_id(mut self, function_callback_id: impl Into<String>) -> Self {
474        self.function_callback_id = Some(function_callback_id.into());
475        self
476    }
477
478    pub fn function_app_id(mut self, function_app_id: impl Into<String>) -> Self {
479        self.function_app_id = Some(function_app_id.into());
480        self
481    }
482
483    pub fn permission_type(mut self, permission_type: impl Into<String>) -> Self {
484        self.permission_type = Some(permission_type.into());
485        self
486    }
487
488    pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
489        self.user_ids = Some(user_ids);
490        self
491    }
492
493    pub fn team_ids(mut self, team_ids: Vec<String>) -> Self {
494        self.team_ids = Some(team_ids);
495        self
496    }
497
498    pub fn org_ids(mut self, org_ids: Vec<String>) -> Self {
499        self.org_ids = Some(org_ids);
500        self
501    }
502}
503
504impl SlackApiMethod for FunctionsDistributionsPermissionsSetRequest {
505    const METHOD: &'static str = "functions.distributions.permissions.set";
506    type Response = FunctionsDistributionsPermissionsSetResponse;
507}
508
509/// Successful response of the Slack Web API method [`functions.distributions.permissions.set`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.set).
510#[doc(alias = "functions.distributions.permissions.set")]
511#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
512pub struct FunctionsDistributionsPermissionsSetResponse {
513    #[serde(
514        default,
515        deserialize_with = "crate::de::opt_string",
516        skip_serializing_if = "Option::is_none"
517    )]
518    pub permission_type: Option<String>,
519    #[serde(
520        default,
521        deserialize_with = "crate::de::vec",
522        skip_serializing_if = "Vec::is_empty"
523    )]
524    pub users: Vec<FunctionsDistributionsPermissionsSetResponseUsers>,
525    #[serde(
526        default,
527        deserialize_with = "crate::de::opt_object",
528        skip_serializing_if = "Option::is_none"
529    )]
530    pub response_metadata: Option<ResponseMetadata>,
531    #[serde(
532        default,
533        deserialize_with = "crate::de::opt_string",
534        skip_serializing_if = "Option::is_none"
535    )]
536    pub warning: Option<String>,
537}
538
539#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
540pub struct FunctionsDistributionsPermissionsSetResponseUsers {
541    #[serde(
542        default,
543        deserialize_with = "crate::de::opt_string",
544        skip_serializing_if = "Option::is_none"
545    )]
546    pub user_id: Option<String>,
547    #[serde(
548        default,
549        deserialize_with = "crate::de::opt_string",
550        skip_serializing_if = "Option::is_none"
551    )]
552    pub username: Option<String>,
553    #[serde(
554        default,
555        deserialize_with = "crate::de::opt_string",
556        skip_serializing_if = "Option::is_none"
557    )]
558    pub email: Option<String>,
559}
560
561/// Arguments for the Slack Web API method [`functions.workflows.steps.list`](https://docs.slack.dev/reference/methods/functions.workflows.steps.list): List the steps of a specific function of a workflow's versions
562///
563/// Send it with [`SlackClient::functions_workflows_steps_list`].
564#[doc(alias = "functions.workflows.steps.list")]
565#[derive(Debug, Clone, PartialEq, Serialize)]
566#[non_exhaustive]
567pub struct FunctionsWorkflowsStepsListRequest {
568    /// The ID of the function to query
569    pub function_id: String,
570    /// The workflow ID, starts with Wf\*
571    #[serde(skip_serializing_if = "Option::is_none")]
572    pub workflow_id: Option<String>,
573    /// The workflow encoded ID or workflow reference
574    #[serde(skip_serializing_if = "Option::is_none")]
575    pub workflow: Option<String>,
576    /// The app tied to the workflow reference.
577    #[serde(skip_serializing_if = "Option::is_none")]
578    pub workflow_app_id: Option<String>,
579}
580
581impl FunctionsWorkflowsStepsListRequest {
582    pub fn new(function_id: impl Into<String>) -> Self {
583        Self {
584            function_id: function_id.into(),
585            workflow_id: None,
586            workflow: None,
587            workflow_app_id: None,
588        }
589    }
590
591    pub fn workflow_id(mut self, workflow_id: impl Into<String>) -> Self {
592        self.workflow_id = Some(workflow_id.into());
593        self
594    }
595
596    pub fn workflow(mut self, workflow: impl Into<String>) -> Self {
597        self.workflow = Some(workflow.into());
598        self
599    }
600
601    pub fn workflow_app_id(mut self, workflow_app_id: impl Into<String>) -> Self {
602        self.workflow_app_id = Some(workflow_app_id.into());
603        self
604    }
605}
606
607impl SlackApiMethod for FunctionsWorkflowsStepsListRequest {
608    const METHOD: &'static str = "functions.workflows.steps.list";
609    type Response = FunctionsWorkflowsStepsListResponse;
610}
611
612/// Successful response of the Slack Web API method [`functions.workflows.steps.list`](https://docs.slack.dev/reference/methods/functions.workflows.steps.list).
613#[doc(alias = "functions.workflows.steps.list")]
614#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
615pub struct FunctionsWorkflowsStepsListResponse {
616    #[serde(
617        default,
618        deserialize_with = "crate::de::vec",
619        skip_serializing_if = "Vec::is_empty"
620    )]
621    pub steps_versions: Vec<FunctionsWorkflowsStepsListResponseStepsVersions>,
622    #[serde(
623        default,
624        deserialize_with = "crate::de::opt_object",
625        skip_serializing_if = "Option::is_none"
626    )]
627    pub response_metadata: Option<ResponseMetadata>,
628    #[serde(
629        default,
630        deserialize_with = "crate::de::opt_string",
631        skip_serializing_if = "Option::is_none"
632    )]
633    pub warning: Option<String>,
634}
635
636#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
637pub struct FunctionsWorkflowsStepsListResponseStepsVersions {
638    #[serde(
639        default,
640        deserialize_with = "crate::de::opt_string",
641        skip_serializing_if = "Option::is_none"
642    )]
643    pub title: Option<String>,
644    #[serde(
645        default,
646        deserialize_with = "crate::de::opt_string",
647        skip_serializing_if = "Option::is_none"
648    )]
649    pub workflow_id: Option<String>,
650    #[serde(
651        default,
652        deserialize_with = "crate::de::opt_string",
653        skip_serializing_if = "Option::is_none"
654    )]
655    pub step_id: Option<String>,
656    #[serde(
657        default,
658        deserialize_with = "crate::de::opt_bool",
659        skip_serializing_if = "Option::is_none"
660    )]
661    pub is_deleted: Option<bool>,
662    #[serde(
663        default,
664        deserialize_with = "crate::de::opt_string",
665        skip_serializing_if = "Option::is_none"
666    )]
667    pub workflow_version_created: Option<String>,
668}
669
670/// Arguments for the Slack Web API method [`functions.workflows.steps.responses.export`](https://docs.slack.dev/reference/methods/functions.workflows.steps.responses.export): Download form responses of a workflow
671///
672/// Send it with [`SlackClient::functions_workflows_steps_responses_export`].
673#[doc(alias = "functions.workflows.steps.responses.export")]
674#[derive(Debug, Clone, PartialEq, Serialize)]
675#[non_exhaustive]
676pub struct FunctionsWorkflowsStepsResponsesExportRequest {
677    /// The ID of the OpenForm step to export.
678    pub step_id: String,
679    /// The workflow ID, starts with Wf\*
680    #[serde(skip_serializing_if = "Option::is_none")]
681    pub workflow_id: Option<String>,
682    /// The workflow encoded ID or workflow reference
683    #[serde(skip_serializing_if = "Option::is_none")]
684    pub workflow: Option<String>,
685    /// The app tied to the workflow reference.
686    #[serde(skip_serializing_if = "Option::is_none")]
687    pub workflow_app_id: Option<String>,
688}
689
690impl FunctionsWorkflowsStepsResponsesExportRequest {
691    pub fn new(step_id: impl Into<String>) -> Self {
692        Self {
693            step_id: step_id.into(),
694            workflow_id: None,
695            workflow: None,
696            workflow_app_id: None,
697        }
698    }
699
700    pub fn workflow_id(mut self, workflow_id: impl Into<String>) -> Self {
701        self.workflow_id = Some(workflow_id.into());
702        self
703    }
704
705    pub fn workflow(mut self, workflow: impl Into<String>) -> Self {
706        self.workflow = Some(workflow.into());
707        self
708    }
709
710    pub fn workflow_app_id(mut self, workflow_app_id: impl Into<String>) -> Self {
711        self.workflow_app_id = Some(workflow_app_id.into());
712        self
713    }
714}
715
716impl SlackApiMethod for FunctionsWorkflowsStepsResponsesExportRequest {
717    const METHOD: &'static str = "functions.workflows.steps.responses.export";
718    type Response = FunctionsWorkflowsStepsResponsesExportResponse;
719}
720
721/// Successful response of the Slack Web API method [`functions.workflows.steps.responses.export`](https://docs.slack.dev/reference/methods/functions.workflows.steps.responses.export).
722#[doc(alias = "functions.workflows.steps.responses.export")]
723#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
724pub struct FunctionsWorkflowsStepsResponsesExportResponse {
725    /// Fields returned by Slack. This method has no documented response example.
726    #[serde(flatten)]
727    pub extra: serde_json::Map<String, serde_json::Value>,
728    #[serde(
729        default,
730        deserialize_with = "crate::de::opt_object",
731        skip_serializing_if = "Option::is_none"
732    )]
733    pub response_metadata: Option<ResponseMetadata>,
734    #[serde(
735        default,
736        deserialize_with = "crate::de::opt_string",
737        skip_serializing_if = "Option::is_none"
738    )]
739    pub warning: Option<String>,
740}
741
742impl SlackClient {
743    /// Calls the Slack Web API method [`functions.completeError`](https://docs.slack.dev/reference/methods/functions.completeError): Signal that a function failed to complete
744    ///
745    /// Rate limit: Tier 3 (<https://docs.slack.dev/apis/web-api/rate-limits>).
746    ///
747    /// # Errors
748    ///
749    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
750    #[doc(alias = "functions.completeError")]
751    pub async fn functions_complete_error(
752        &self,
753        request: &FunctionsCompleteErrorRequest,
754    ) -> Result<FunctionsCompleteErrorResponse, SlackError> {
755        self.call(request).await
756    }
757
758    /// Calls the Slack Web API method [`functions.completeSuccess`](https://docs.slack.dev/reference/methods/functions.completeSuccess): Signal the successful completion of a function
759    ///
760    /// Rate limit: Tier 3 (<https://docs.slack.dev/apis/web-api/rate-limits>).
761    ///
762    /// # Errors
763    ///
764    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
765    #[doc(alias = "functions.completeSuccess")]
766    pub async fn functions_complete_success(
767        &self,
768        request: &FunctionsCompleteSuccessRequest,
769    ) -> Result<FunctionsCompleteSuccessResponse, SlackError> {
770        self.call(request).await
771    }
772
773    /// Calls the Slack Web API method [`functions.distributions.permissions.add`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.add): Grant users access to a custom slack function if its permission_type is set to named_entities
774    ///
775    /// Rate limit: Tier 3 (<https://docs.slack.dev/apis/web-api/rate-limits>).
776    ///
777    /// # Errors
778    ///
779    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
780    #[doc(alias = "functions.distributions.permissions.add")]
781    pub async fn functions_distributions_permissions_add(
782        &self,
783        request: &FunctionsDistributionsPermissionsAddRequest,
784    ) -> Result<FunctionsDistributionsPermissionsAddResponse, SlackError> {
785        self.call(request).await
786    }
787
788    /// Calls the Slack Web API method [`functions.distributions.permissions.list`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.list): List the access type of a custom slack function and include the users, team or org ids with access if its permission_type is set to named_entities
789    ///
790    /// Rate limit: Tier 3 (<https://docs.slack.dev/apis/web-api/rate-limits>).
791    ///
792    /// # Errors
793    ///
794    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
795    #[doc(alias = "functions.distributions.permissions.list")]
796    pub async fn functions_distributions_permissions_list(
797        &self,
798        request: &FunctionsDistributionsPermissionsListRequest,
799    ) -> Result<FunctionsDistributionsPermissionsListResponse, SlackError> {
800        self.call(request).await
801    }
802
803    /// Calls the Slack Web API method [`functions.distributions.permissions.remove`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.remove): Revoke user access to a custom slack function if permission_type set to named_entities
804    ///
805    /// Rate limit: Tier 3 (<https://docs.slack.dev/apis/web-api/rate-limits>).
806    ///
807    /// # Errors
808    ///
809    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
810    #[doc(alias = "functions.distributions.permissions.remove")]
811    pub async fn functions_distributions_permissions_remove(
812        &self,
813        request: &FunctionsDistributionsPermissionsRemoveRequest,
814    ) -> Result<FunctionsDistributionsPermissionsRemoveResponse, SlackError> {
815        self.call(request).await
816    }
817
818    /// Calls the Slack Web API method [`functions.distributions.permissions.set`](https://docs.slack.dev/reference/methods/functions.distributions.permissions.set): Set the access type of a custom slack function and define the users, team or org ids to be granted access if permission_type is set to named_entities
819    ///
820    /// Rate limit: Tier 3 (<https://docs.slack.dev/apis/web-api/rate-limits>).
821    ///
822    /// # Errors
823    ///
824    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
825    #[doc(alias = "functions.distributions.permissions.set")]
826    pub async fn functions_distributions_permissions_set(
827        &self,
828        request: &FunctionsDistributionsPermissionsSetRequest,
829    ) -> Result<FunctionsDistributionsPermissionsSetResponse, SlackError> {
830        self.call(request).await
831    }
832
833    /// Calls the Slack Web API method [`functions.workflows.steps.list`](https://docs.slack.dev/reference/methods/functions.workflows.steps.list): List the steps of a specific function of a workflow's versions
834    ///
835    /// Rate limit: Tier 3 (<https://docs.slack.dev/apis/web-api/rate-limits>).
836    ///
837    /// # Errors
838    ///
839    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
840    #[doc(alias = "functions.workflows.steps.list")]
841    pub async fn functions_workflows_steps_list(
842        &self,
843        request: &FunctionsWorkflowsStepsListRequest,
844    ) -> Result<FunctionsWorkflowsStepsListResponse, SlackError> {
845        self.call(request).await
846    }
847
848    /// Calls the Slack Web API method [`functions.workflows.steps.responses.export`](https://docs.slack.dev/reference/methods/functions.workflows.steps.responses.export): Download form responses of a workflow
849    ///
850    /// Rate limit: Tier 3 (<https://docs.slack.dev/apis/web-api/rate-limits>).
851    ///
852    /// # Errors
853    ///
854    /// Returns [`SlackError::Api`] when Slack answers `"ok": false`; see [`SlackClient::call`] for the other cases.
855    #[doc(alias = "functions.workflows.steps.responses.export")]
856    pub async fn functions_workflows_steps_responses_export(
857        &self,
858        request: &FunctionsWorkflowsStepsResponsesExportRequest,
859    ) -> Result<FunctionsWorkflowsStepsResponsesExportResponse, SlackError> {
860        self.call(request).await
861    }
862}