mattermost_client/openapi/apis/
commands_api.rs

1/*
2 * Mattermost API Reference
3 *
4 * There is also a work-in-progress [Postman API reference](https://documenter.getpostman.com/view/4508214/RW8FERUn).
5 *
6 * The version of the OpenAPI document: 4.0.0
7 * Contact: feedback@mattermost.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11use reqwest;
12
13use super::{configuration, Error};
14use super::ResponseContent;
15
16/// struct for passing parameters to the method [`create_command`]
17#[derive(Clone, Debug, Default)]
18pub struct CreateCommandParams {
19    /// command to be created
20    pub create_command_request: crate::openapi::models::CreateCommandRequest,
21}
22
23/// struct for passing parameters to the method [`delete_command`]
24#[derive(Clone, Debug, Default)]
25pub struct DeleteCommandParams {
26    /// ID of the command to delete
27    pub command_id: String,
28}
29
30/// struct for passing parameters to the method [`execute_command`]
31#[derive(Clone, Debug, Default)]
32pub struct ExecuteCommandParams {
33    /// command to be executed
34    pub execute_command_request: crate::openapi::models::ExecuteCommandRequest,
35}
36
37/// struct for passing parameters to the method [`get_command_by_id`]
38#[derive(Clone, Debug, Default)]
39pub struct GetCommandByIdParams {
40    /// ID of the command to get
41    pub command_id: String,
42}
43
44/// struct for passing parameters to the method [`list_autocomplete_commands`]
45#[derive(Clone, Debug, Default)]
46pub struct ListAutocompleteCommandsParams {
47    /// Team GUID
48    pub team_id: String,
49}
50
51/// struct for passing parameters to the method [`list_command_autocomplete_suggestions`]
52#[derive(Clone, Debug, Default)]
53pub struct ListCommandAutocompleteSuggestionsParams {
54    /// Team GUID
55    pub team_id: String,
56    /// String inputted by the user.
57    pub user_input: String,
58}
59
60/// struct for passing parameters to the method [`list_commands`]
61#[derive(Clone, Debug, Default)]
62pub struct ListCommandsParams {
63    /// The team id.
64    pub team_id: Option<String>,
65    /// To get only the custom commands. If set to false will get the custom if the user have access plus the system commands, otherwise just the system commands.
66    pub custom_only: Option<bool>,
67}
68
69/// struct for passing parameters to the method [`move_command`]
70#[derive(Clone, Debug, Default)]
71pub struct MoveCommandParams {
72    /// ID of the command to move
73    pub command_id: String,
74    pub move_command_request: crate::openapi::models::MoveCommandRequest,
75}
76
77/// struct for passing parameters to the method [`regen_command_token`]
78#[derive(Clone, Debug, Default)]
79pub struct RegenCommandTokenParams {
80    /// ID of the command to generate the new token
81    pub command_id: String,
82}
83
84/// struct for passing parameters to the method [`update_command`]
85#[derive(Clone, Debug, Default)]
86pub struct UpdateCommandParams {
87    /// ID of the command to update
88    pub command_id: String,
89    pub command: crate::openapi::models::Command,
90}
91
92/// struct for typed errors of method [`create_command`]
93#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
94#[serde(untagged)]
95pub enum CreateCommandError {
96    Status400(crate::openapi::models::AppError),
97    Status401(crate::openapi::models::AppError),
98    Status403(crate::openapi::models::AppError),
99    Status501(crate::openapi::models::AppError),
100    UnknownValue(serde_json::Value),
101}
102
103/// struct for typed errors of method [`delete_command`]
104#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
105#[serde(untagged)]
106pub enum DeleteCommandError {
107    Status400(crate::openapi::models::AppError),
108    Status401(crate::openapi::models::AppError),
109    Status403(crate::openapi::models::AppError),
110    Status404(crate::openapi::models::AppError),
111    UnknownValue(serde_json::Value),
112}
113
114/// struct for typed errors of method [`execute_command`]
115#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
116#[serde(untagged)]
117pub enum ExecuteCommandError {
118    Status400(crate::openapi::models::AppError),
119    Status401(crate::openapi::models::AppError),
120    Status403(crate::openapi::models::AppError),
121    Status501(crate::openapi::models::AppError),
122    UnknownValue(serde_json::Value),
123}
124
125/// struct for typed errors of method [`get_command_by_id`]
126#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
127#[serde(untagged)]
128pub enum GetCommandByIdError {
129    Status400(crate::openapi::models::AppError),
130    Status401(crate::openapi::models::AppError),
131    Status404(crate::openapi::models::AppError),
132    UnknownValue(serde_json::Value),
133}
134
135/// struct for typed errors of method [`list_autocomplete_commands`]
136#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
137#[serde(untagged)]
138pub enum ListAutocompleteCommandsError {
139    Status400(crate::openapi::models::AppError),
140    Status401(crate::openapi::models::AppError),
141    Status403(crate::openapi::models::AppError),
142    UnknownValue(serde_json::Value),
143}
144
145/// struct for typed errors of method [`list_command_autocomplete_suggestions`]
146#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
147#[serde(untagged)]
148pub enum ListCommandAutocompleteSuggestionsError {
149    Status400(crate::openapi::models::AppError),
150    Status401(crate::openapi::models::AppError),
151    Status403(crate::openapi::models::AppError),
152    UnknownValue(serde_json::Value),
153}
154
155/// struct for typed errors of method [`list_commands`]
156#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
157#[serde(untagged)]
158pub enum ListCommandsError {
159    Status400(crate::openapi::models::AppError),
160    Status401(crate::openapi::models::AppError),
161    Status403(crate::openapi::models::AppError),
162    Status501(crate::openapi::models::AppError),
163    UnknownValue(serde_json::Value),
164}
165
166/// struct for typed errors of method [`move_command`]
167#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
168#[serde(untagged)]
169pub enum MoveCommandError {
170    Status400(crate::openapi::models::AppError),
171    Status401(crate::openapi::models::AppError),
172    Status403(crate::openapi::models::AppError),
173    Status404(crate::openapi::models::AppError),
174    UnknownValue(serde_json::Value),
175}
176
177/// struct for typed errors of method [`regen_command_token`]
178#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
179#[serde(untagged)]
180pub enum RegenCommandTokenError {
181    Status400(crate::openapi::models::AppError),
182    Status401(crate::openapi::models::AppError),
183    Status403(crate::openapi::models::AppError),
184    UnknownValue(serde_json::Value),
185}
186
187/// struct for typed errors of method [`update_command`]
188#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
189#[serde(untagged)]
190pub enum UpdateCommandError {
191    Status400(crate::openapi::models::AppError),
192    Status401(crate::openapi::models::AppError),
193    Status403(crate::openapi::models::AppError),
194    UnknownValue(serde_json::Value),
195}
196
197/// Create a command for a team. ##### Permissions `manage_slash_commands` for the team the command is in.
198pub async fn create_command(
199    configuration: &configuration::Configuration,
200    params: CreateCommandParams,
201) -> Result<crate::openapi::models::Command, Error<CreateCommandError>> {
202    let local_var_configuration = configuration;
203
204    // unbox the parameters
205    let create_command_request = params.create_command_request;
206
207    let local_var_client = &local_var_configuration.client;
208
209    let local_var_uri_str = format!("{}/api/v4/commands", local_var_configuration.base_path);
210    let mut local_var_req_builder =
211        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
212
213    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
214        local_var_req_builder =
215            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
216    }
217    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
218        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
219    };
220    local_var_req_builder = local_var_req_builder.json(&create_command_request);
221
222    let local_var_req = local_var_req_builder.build()?;
223    let local_var_resp = local_var_client.execute(local_var_req).await?;
224
225    let local_var_status = local_var_resp.status();
226    let local_var_content = local_var_resp.text().await?;
227
228    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
229        serde_json::from_str(&local_var_content).map_err(Error::from)
230    } else {
231        let local_var_entity: Option<CreateCommandError> =
232            serde_json::from_str(&local_var_content).ok();
233        let local_var_error = ResponseContent {
234            status: local_var_status,
235            content: local_var_content,
236            entity: local_var_entity,
237        };
238        Err(Error::ResponseError(local_var_error))
239    }
240}
241
242/// Delete a command based on command id string. ##### Permissions Must have `manage_slash_commands` permission for the team the command is in.
243pub async fn delete_command(
244    configuration: &configuration::Configuration,
245    params: DeleteCommandParams,
246) -> Result<crate::openapi::models::StatusOk, Error<DeleteCommandError>> {
247    let local_var_configuration = configuration;
248
249    // unbox the parameters
250    let command_id = params.command_id;
251
252    let local_var_client = &local_var_configuration.client;
253
254    let local_var_uri_str = format!(
255        "{}/api/v4/commands/{command_id}",
256        local_var_configuration.base_path,
257        command_id = super::urlencode(command_id)
258    );
259    let mut local_var_req_builder =
260        local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
261
262    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
263        local_var_req_builder =
264            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
265    }
266    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
267        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
268    };
269
270    let local_var_req = local_var_req_builder.build()?;
271    let local_var_resp = local_var_client.execute(local_var_req).await?;
272
273    let local_var_status = local_var_resp.status();
274    let local_var_content = local_var_resp.text().await?;
275
276    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
277        serde_json::from_str(&local_var_content).map_err(Error::from)
278    } else {
279        let local_var_entity: Option<DeleteCommandError> =
280            serde_json::from_str(&local_var_content).ok();
281        let local_var_error = ResponseContent {
282            status: local_var_status,
283            content: local_var_content,
284            entity: local_var_entity,
285        };
286        Err(Error::ResponseError(local_var_error))
287    }
288}
289
290/// Execute a command on a team. ##### Permissions Must have `use_slash_commands` permission for the team the command is in.
291pub async fn execute_command(
292    configuration: &configuration::Configuration,
293    params: ExecuteCommandParams,
294) -> Result<crate::openapi::models::CommandResponse, Error<ExecuteCommandError>> {
295    let local_var_configuration = configuration;
296
297    // unbox the parameters
298    let execute_command_request = params.execute_command_request;
299
300    let local_var_client = &local_var_configuration.client;
301
302    let local_var_uri_str = format!(
303        "{}/api/v4/commands/execute",
304        local_var_configuration.base_path
305    );
306    let mut local_var_req_builder =
307        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
308
309    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
310        local_var_req_builder =
311            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
312    }
313    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
314        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
315    };
316    local_var_req_builder = local_var_req_builder.json(&execute_command_request);
317
318    let local_var_req = local_var_req_builder.build()?;
319    let local_var_resp = local_var_client.execute(local_var_req).await?;
320
321    let local_var_status = local_var_resp.status();
322    let local_var_content = local_var_resp.text().await?;
323
324    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
325        serde_json::from_str(&local_var_content).map_err(Error::from)
326    } else {
327        let local_var_entity: Option<ExecuteCommandError> =
328            serde_json::from_str(&local_var_content).ok();
329        let local_var_error = ResponseContent {
330            status: local_var_status,
331            content: local_var_content,
332            entity: local_var_entity,
333        };
334        Err(Error::ResponseError(local_var_error))
335    }
336}
337
338/// Get a command definition based on command id string. ##### Permissions Must have `manage_slash_commands` permission for the team the command is in.  __Minimum server version__: 5.22
339pub async fn get_command_by_id(
340    configuration: &configuration::Configuration,
341    params: GetCommandByIdParams,
342) -> Result<crate::openapi::models::Command, Error<GetCommandByIdError>> {
343    let local_var_configuration = configuration;
344
345    // unbox the parameters
346    let command_id = params.command_id;
347
348    let local_var_client = &local_var_configuration.client;
349
350    let local_var_uri_str = format!(
351        "{}/api/v4/commands/{command_id}",
352        local_var_configuration.base_path,
353        command_id = super::urlencode(command_id)
354    );
355    let mut local_var_req_builder =
356        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
357
358    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
359        local_var_req_builder =
360            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
361    }
362    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
363        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
364    };
365
366    let local_var_req = local_var_req_builder.build()?;
367    let local_var_resp = local_var_client.execute(local_var_req).await?;
368
369    let local_var_status = local_var_resp.status();
370    let local_var_content = local_var_resp.text().await?;
371
372    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
373        serde_json::from_str(&local_var_content).map_err(Error::from)
374    } else {
375        let local_var_entity: Option<GetCommandByIdError> =
376            serde_json::from_str(&local_var_content).ok();
377        let local_var_error = ResponseContent {
378            status: local_var_status,
379            content: local_var_content,
380            entity: local_var_entity,
381        };
382        Err(Error::ResponseError(local_var_error))
383    }
384}
385
386/// List autocomplete commands in the team. ##### Permissions `view_team` for the team.
387pub async fn list_autocomplete_commands(
388    configuration: &configuration::Configuration,
389    params: ListAutocompleteCommandsParams,
390) -> Result<Vec<crate::openapi::models::Command>, Error<ListAutocompleteCommandsError>> {
391    let local_var_configuration = configuration;
392
393    // unbox the parameters
394    let team_id = params.team_id;
395
396    let local_var_client = &local_var_configuration.client;
397
398    let local_var_uri_str = format!(
399        "{}/api/v4/teams/{team_id}/commands/autocomplete",
400        local_var_configuration.base_path,
401        team_id = super::urlencode(team_id)
402    );
403    let mut local_var_req_builder =
404        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
405
406    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
407        local_var_req_builder =
408            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
409    }
410    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
411        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
412    };
413
414    let local_var_req = local_var_req_builder.build()?;
415    let local_var_resp = local_var_client.execute(local_var_req).await?;
416
417    let local_var_status = local_var_resp.status();
418    let local_var_content = local_var_resp.text().await?;
419
420    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
421        serde_json::from_str(&local_var_content).map_err(Error::from)
422    } else {
423        let local_var_entity: Option<ListAutocompleteCommandsError> =
424            serde_json::from_str(&local_var_content).ok();
425        let local_var_error = ResponseContent {
426            status: local_var_status,
427            content: local_var_content,
428            entity: local_var_entity,
429        };
430        Err(Error::ResponseError(local_var_error))
431    }
432}
433
434/// List commands' autocomplete data for the team. ##### Permissions `view_team` for the team. __Minimum server version__: 5.24
435pub async fn list_command_autocomplete_suggestions(
436    configuration: &configuration::Configuration,
437    params: ListCommandAutocompleteSuggestionsParams,
438) -> Result<
439    Vec<crate::openapi::models::AutocompleteSuggestion>,
440    Error<ListCommandAutocompleteSuggestionsError>,
441> {
442    let local_var_configuration = configuration;
443
444    // unbox the parameters
445    let team_id = params.team_id;
446    let user_input = params.user_input;
447
448    let local_var_client = &local_var_configuration.client;
449
450    let local_var_uri_str = format!(
451        "{}/teams/{team_id}/commands/autocomplete_suggestions",
452        local_var_configuration.base_path,
453        team_id = super::urlencode(team_id)
454    );
455    let mut local_var_req_builder =
456        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
457
458    local_var_req_builder = local_var_req_builder.query(&[("user_input", &user_input.to_string())]);
459    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
460        local_var_req_builder =
461            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
462    }
463    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
464        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
465    };
466
467    let local_var_req = local_var_req_builder.build()?;
468    let local_var_resp = local_var_client.execute(local_var_req).await?;
469
470    let local_var_status = local_var_resp.status();
471    let local_var_content = local_var_resp.text().await?;
472
473    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
474        serde_json::from_str(&local_var_content).map_err(Error::from)
475    } else {
476        let local_var_entity: Option<ListCommandAutocompleteSuggestionsError> =
477            serde_json::from_str(&local_var_content).ok();
478        let local_var_error = ResponseContent {
479            status: local_var_status,
480            content: local_var_content,
481            entity: local_var_entity,
482        };
483        Err(Error::ResponseError(local_var_error))
484    }
485}
486
487/// List commands for a team. ##### Permissions `manage_slash_commands` if need list custom commands.
488pub async fn list_commands(
489    configuration: &configuration::Configuration,
490    params: ListCommandsParams,
491) -> Result<Vec<crate::openapi::models::Command>, Error<ListCommandsError>> {
492    let local_var_configuration = configuration;
493
494    // unbox the parameters
495    let team_id = params.team_id;
496    let custom_only = params.custom_only;
497
498    let local_var_client = &local_var_configuration.client;
499
500    let local_var_uri_str = format!("{}/api/v4/commands", local_var_configuration.base_path);
501    let mut local_var_req_builder =
502        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
503
504    if let Some(ref local_var_str) = team_id {
505        local_var_req_builder =
506            local_var_req_builder.query(&[("team_id", &local_var_str.to_string())]);
507    }
508    if let Some(ref local_var_str) = custom_only {
509        local_var_req_builder =
510            local_var_req_builder.query(&[("custom_only", &local_var_str.to_string())]);
511    }
512    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
513        local_var_req_builder =
514            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
515    }
516    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
517        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
518    };
519
520    let local_var_req = local_var_req_builder.build()?;
521    let local_var_resp = local_var_client.execute(local_var_req).await?;
522
523    let local_var_status = local_var_resp.status();
524    let local_var_content = local_var_resp.text().await?;
525
526    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
527        serde_json::from_str(&local_var_content).map_err(Error::from)
528    } else {
529        let local_var_entity: Option<ListCommandsError> =
530            serde_json::from_str(&local_var_content).ok();
531        let local_var_error = ResponseContent {
532            status: local_var_status,
533            content: local_var_content,
534            entity: local_var_entity,
535        };
536        Err(Error::ResponseError(local_var_error))
537    }
538}
539
540/// Move a command to a different team based on command id string. ##### Permissions Must have `manage_slash_commands` permission for the team the command is currently in and the destination team.  __Minimum server version__: 5.22
541pub async fn move_command(
542    configuration: &configuration::Configuration,
543    params: MoveCommandParams,
544) -> Result<crate::openapi::models::StatusOk, Error<MoveCommandError>> {
545    let local_var_configuration = configuration;
546
547    // unbox the parameters
548    let command_id = params.command_id;
549    let move_command_request = params.move_command_request;
550
551    let local_var_client = &local_var_configuration.client;
552
553    let local_var_uri_str = format!(
554        "{}/api/v4/commands/{command_id}/move",
555        local_var_configuration.base_path,
556        command_id = super::urlencode(command_id)
557    );
558    let mut local_var_req_builder =
559        local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
560
561    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
562        local_var_req_builder =
563            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
564    }
565    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
566        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
567    };
568    local_var_req_builder = local_var_req_builder.json(&move_command_request);
569
570    let local_var_req = local_var_req_builder.build()?;
571    let local_var_resp = local_var_client.execute(local_var_req).await?;
572
573    let local_var_status = local_var_resp.status();
574    let local_var_content = local_var_resp.text().await?;
575
576    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
577        serde_json::from_str(&local_var_content).map_err(Error::from)
578    } else {
579        let local_var_entity: Option<MoveCommandError> =
580            serde_json::from_str(&local_var_content).ok();
581        let local_var_error = ResponseContent {
582            status: local_var_status,
583            content: local_var_content,
584            entity: local_var_entity,
585        };
586        Err(Error::ResponseError(local_var_error))
587    }
588}
589
590/// Generate a new token for the command based on command id string. ##### Permissions Must have `manage_slash_commands` permission for the team the command is in.
591pub async fn regen_command_token(
592    configuration: &configuration::Configuration,
593    params: RegenCommandTokenParams,
594) -> Result<crate::openapi::models::RegenCommandToken200Response, Error<RegenCommandTokenError>> {
595    let local_var_configuration = configuration;
596
597    // unbox the parameters
598    let command_id = params.command_id;
599
600    let local_var_client = &local_var_configuration.client;
601
602    let local_var_uri_str = format!(
603        "{}/api/v4/commands/{command_id}/regen_token",
604        local_var_configuration.base_path,
605        command_id = super::urlencode(command_id)
606    );
607    let mut local_var_req_builder =
608        local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
609
610    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
611        local_var_req_builder =
612            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
613    }
614    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
615        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
616    };
617
618    let local_var_req = local_var_req_builder.build()?;
619    let local_var_resp = local_var_client.execute(local_var_req).await?;
620
621    let local_var_status = local_var_resp.status();
622    let local_var_content = local_var_resp.text().await?;
623
624    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
625        serde_json::from_str(&local_var_content).map_err(Error::from)
626    } else {
627        let local_var_entity: Option<RegenCommandTokenError> =
628            serde_json::from_str(&local_var_content).ok();
629        let local_var_error = ResponseContent {
630            status: local_var_status,
631            content: local_var_content,
632            entity: local_var_entity,
633        };
634        Err(Error::ResponseError(local_var_error))
635    }
636}
637
638/// Update a single command based on command id string and Command struct. ##### Permissions Must have `manage_slash_commands` permission for the team the command is in.
639pub async fn update_command(
640    configuration: &configuration::Configuration,
641    params: UpdateCommandParams,
642) -> Result<crate::openapi::models::Command, Error<UpdateCommandError>> {
643    let local_var_configuration = configuration;
644
645    // unbox the parameters
646    let command_id = params.command_id;
647    let command = params.command;
648
649    let local_var_client = &local_var_configuration.client;
650
651    let local_var_uri_str = format!(
652        "{}/api/v4/commands/{command_id}",
653        local_var_configuration.base_path,
654        command_id = super::urlencode(command_id)
655    );
656    let mut local_var_req_builder =
657        local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
658
659    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
660        local_var_req_builder =
661            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
662    }
663    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
664        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
665    };
666    local_var_req_builder = local_var_req_builder.json(&command);
667
668    let local_var_req = local_var_req_builder.build()?;
669    let local_var_resp = local_var_client.execute(local_var_req).await?;
670
671    let local_var_status = local_var_resp.status();
672    let local_var_content = local_var_resp.text().await?;
673
674    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
675        serde_json::from_str(&local_var_content).map_err(Error::from)
676    } else {
677        let local_var_entity: Option<UpdateCommandError> =
678            serde_json::from_str(&local_var_content).ok();
679        let local_var_error = ResponseContent {
680            status: local_var_status,
681            content: local_var_content,
682            entity: local_var_entity,
683        };
684        Err(Error::ResponseError(local_var_error))
685    }
686}