rusoto_swf/
generated.rs

1// =================================================================
2//
3//                           * WARNING *
4//
5//                    This file is generated!
6//
7//  Changes made to this file will be overwritten. If changes are
8//  required to the generated code, the service_crategen project
9//  must be updated to generate the changes.
10//
11// =================================================================
12
13use std::error::Error;
14use std::fmt;
15
16use async_trait::async_trait;
17use rusoto_core::credential::ProvideAwsCredentials;
18use rusoto_core::region;
19use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
20use rusoto_core::{Client, RusotoError};
21
22use rusoto_core::proto;
23use rusoto_core::request::HttpResponse;
24use rusoto_core::signature::SignedRequest;
25#[allow(unused_imports)]
26use serde::{Deserialize, Serialize};
27
28impl SwfClient {
29    fn new_signed_request(&self, http_method: &str, request_uri: &str) -> SignedRequest {
30        let mut request = SignedRequest::new(http_method, "swf", &self.region, request_uri);
31
32        request.set_content_type("application/x-amz-json-1.0".to_owned());
33
34        request
35    }
36
37    async fn sign_and_dispatch<E>(
38        &self,
39        request: SignedRequest,
40        from_response: fn(BufferedHttpResponse) -> RusotoError<E>,
41    ) -> Result<HttpResponse, RusotoError<E>> {
42        let mut response = self.client.sign_and_dispatch(request).await?;
43        if !response.status.is_success() {
44            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
45            return Err(from_response(response));
46        }
47
48        Ok(response)
49    }
50}
51
52use serde_json;
53/// <p>Unit of work sent to an activity worker.</p>
54#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
55#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
56pub struct ActivityTask {
57    /// <p>The unique ID of the task.</p>
58    #[serde(rename = "activityId")]
59    pub activity_id: String,
60    /// <p>The type of this activity task.</p>
61    #[serde(rename = "activityType")]
62    pub activity_type: ActivityType,
63    /// <p>The inputs provided when the activity task was scheduled. The form of the input is user defined and should be meaningful to the activity implementation.</p>
64    #[serde(rename = "input")]
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub input: Option<String>,
67    /// <p>The ID of the <code>ActivityTaskStarted</code> event recorded in the history.</p>
68    #[serde(rename = "startedEventId")]
69    pub started_event_id: i64,
70    /// <p>The opaque string used as a handle on the task. This token is used by workers to communicate progress and response information back to the system about the task.</p>
71    #[serde(rename = "taskToken")]
72    pub task_token: String,
73    /// <p>The workflow execution that started this activity task.</p>
74    #[serde(rename = "workflowExecution")]
75    pub workflow_execution: WorkflowExecution,
76}
77
78/// <p>Provides the details of the <code>ActivityTaskCancelRequested</code> event.</p>
79#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
80#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
81pub struct ActivityTaskCancelRequestedEventAttributes {
82    /// <p>The unique ID of the task.</p>
83    #[serde(rename = "activityId")]
84    pub activity_id: String,
85    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>RequestCancelActivityTask</code> decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
86    #[serde(rename = "decisionTaskCompletedEventId")]
87    pub decision_task_completed_event_id: i64,
88}
89
90/// <p>Provides the details of the <code>ActivityTaskCanceled</code> event.</p>
91#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
92#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
93pub struct ActivityTaskCanceledEventAttributes {
94    /// <p>Details of the cancellation.</p>
95    #[serde(rename = "details")]
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub details: Option<String>,
98    /// <p>If set, contains the ID of the last <code>ActivityTaskCancelRequested</code> event recorded for this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
99    #[serde(rename = "latestCancelRequestedEventId")]
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub latest_cancel_requested_event_id: Option<i64>,
102    /// <p>The ID of the <code>ActivityTaskScheduled</code> event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
103    #[serde(rename = "scheduledEventId")]
104    pub scheduled_event_id: i64,
105    /// <p>The ID of the <code>ActivityTaskStarted</code> event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
106    #[serde(rename = "startedEventId")]
107    pub started_event_id: i64,
108}
109
110/// <p>Provides the details of the <code>ActivityTaskCompleted</code> event.</p>
111#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
112#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
113pub struct ActivityTaskCompletedEventAttributes {
114    /// <p>The results of the activity task.</p>
115    #[serde(rename = "result")]
116    #[serde(skip_serializing_if = "Option::is_none")]
117    pub result: Option<String>,
118    /// <p>The ID of the <code>ActivityTaskScheduled</code> event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
119    #[serde(rename = "scheduledEventId")]
120    pub scheduled_event_id: i64,
121    /// <p>The ID of the <code>ActivityTaskStarted</code> event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
122    #[serde(rename = "startedEventId")]
123    pub started_event_id: i64,
124}
125
126/// <p>Provides the details of the <code>ActivityTaskFailed</code> event.</p>
127#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
128#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
129pub struct ActivityTaskFailedEventAttributes {
130    /// <p>The details of the failure.</p>
131    #[serde(rename = "details")]
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub details: Option<String>,
134    /// <p>The reason provided for the failure.</p>
135    #[serde(rename = "reason")]
136    #[serde(skip_serializing_if = "Option::is_none")]
137    pub reason: Option<String>,
138    /// <p>The ID of the <code>ActivityTaskScheduled</code> event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
139    #[serde(rename = "scheduledEventId")]
140    pub scheduled_event_id: i64,
141    /// <p>The ID of the <code>ActivityTaskStarted</code> event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
142    #[serde(rename = "startedEventId")]
143    pub started_event_id: i64,
144}
145
146/// <p>Provides the details of the <code>ActivityTaskScheduled</code> event.</p>
147#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
148#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
149pub struct ActivityTaskScheduledEventAttributes {
150    /// <p>The unique ID of the activity task.</p>
151    #[serde(rename = "activityId")]
152    pub activity_id: String,
153    /// <p>The type of the activity task.</p>
154    #[serde(rename = "activityType")]
155    pub activity_type: ActivityType,
156    /// <p>Data attached to the event that can be used by the decider in subsequent workflow tasks. This data isn't sent to the activity.</p>
157    #[serde(rename = "control")]
158    #[serde(skip_serializing_if = "Option::is_none")]
159    pub control: Option<String>,
160    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision that resulted in the scheduling of this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
161    #[serde(rename = "decisionTaskCompletedEventId")]
162    pub decision_task_completed_event_id: i64,
163    /// <p>The maximum time before which the worker processing this task must report progress by calling <a>RecordActivityTaskHeartbeat</a>. If the timeout is exceeded, the activity task is automatically timed out. If the worker subsequently attempts to record a heartbeat or return a result, it is ignored.</p>
164    #[serde(rename = "heartbeatTimeout")]
165    #[serde(skip_serializing_if = "Option::is_none")]
166    pub heartbeat_timeout: Option<String>,
167    /// <p>The input provided to the activity task.</p>
168    #[serde(rename = "input")]
169    #[serde(skip_serializing_if = "Option::is_none")]
170    pub input: Option<String>,
171    /// <p>The maximum amount of time for this activity task.</p>
172    #[serde(rename = "scheduleToCloseTimeout")]
173    #[serde(skip_serializing_if = "Option::is_none")]
174    pub schedule_to_close_timeout: Option<String>,
175    /// <p>The maximum amount of time the activity task can wait to be assigned to a worker.</p>
176    #[serde(rename = "scheduleToStartTimeout")]
177    #[serde(skip_serializing_if = "Option::is_none")]
178    pub schedule_to_start_timeout: Option<String>,
179    /// <p>The maximum amount of time a worker may take to process the activity task.</p>
180    #[serde(rename = "startToCloseTimeout")]
181    #[serde(skip_serializing_if = "Option::is_none")]
182    pub start_to_close_timeout: Option<String>,
183    /// <p>The task list in which the activity task has been scheduled.</p>
184    #[serde(rename = "taskList")]
185    pub task_list: TaskList,
186    /// <p> The priority to assign to the scheduled activity task. If set, this overrides any default priority value that was assigned when the activity type was registered.</p> <p>Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
187    #[serde(rename = "taskPriority")]
188    #[serde(skip_serializing_if = "Option::is_none")]
189    pub task_priority: Option<String>,
190}
191
192/// <p>Provides the details of the <code>ActivityTaskStarted</code> event.</p>
193#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
194#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
195pub struct ActivityTaskStartedEventAttributes {
196    /// <p>Identity of the worker that was assigned this task. This aids diagnostics when problems arise. The form of this identity is user defined.</p>
197    #[serde(rename = "identity")]
198    #[serde(skip_serializing_if = "Option::is_none")]
199    pub identity: Option<String>,
200    /// <p>The ID of the <code>ActivityTaskScheduled</code> event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
201    #[serde(rename = "scheduledEventId")]
202    pub scheduled_event_id: i64,
203}
204
205/// <p>Status information about an activity task.</p>
206#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
207#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
208pub struct ActivityTaskStatus {
209    /// <p>Set to <code>true</code> if cancellation of the task is requested.</p>
210    #[serde(rename = "cancelRequested")]
211    pub cancel_requested: bool,
212}
213
214/// <p>Provides the details of the <code>ActivityTaskTimedOut</code> event.</p>
215#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
216#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
217pub struct ActivityTaskTimedOutEventAttributes {
218    /// <p>Contains the content of the <code>details</code> parameter for the last call made by the activity to <code>RecordActivityTaskHeartbeat</code>.</p>
219    #[serde(rename = "details")]
220    #[serde(skip_serializing_if = "Option::is_none")]
221    pub details: Option<String>,
222    /// <p>The ID of the <code>ActivityTaskScheduled</code> event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
223    #[serde(rename = "scheduledEventId")]
224    pub scheduled_event_id: i64,
225    /// <p>The ID of the <code>ActivityTaskStarted</code> event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
226    #[serde(rename = "startedEventId")]
227    pub started_event_id: i64,
228    /// <p>The type of the timeout that caused this event.</p>
229    #[serde(rename = "timeoutType")]
230    pub timeout_type: String,
231}
232
233/// <p>Represents an activity type.</p>
234#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
235pub struct ActivityType {
236    /// <p><p>The name of this activity.</p> <note> <p>The combination of activity type name and version must be unique within a domain.</p> </note></p>
237    #[serde(rename = "name")]
238    pub name: String,
239    /// <p><p>The version of this activity.</p> <note> <p>The combination of activity type name and version must be unique with in a domain.</p> </note></p>
240    #[serde(rename = "version")]
241    pub version: String,
242}
243
244/// <p>Configuration settings registered with the activity type.</p>
245#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
246#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
247pub struct ActivityTypeConfiguration {
248    /// <p> The default maximum time, in seconds, before which a worker processing a task must report progress by calling <a>RecordActivityTaskHeartbeat</a>.</p> <p>You can specify this value only when <i>registering</i> an activity type. The registered default value can be overridden when you schedule a task through the <code>ScheduleActivityTask</code> <a>Decision</a>. If the activity worker subsequently attempts to record a heartbeat or returns a result, the activity worker receives an <code>UnknownResource</code> fault. In this case, Amazon SWF no longer considers the activity task to be valid; the activity worker should clean up the activity task.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
249    #[serde(rename = "defaultTaskHeartbeatTimeout")]
250    #[serde(skip_serializing_if = "Option::is_none")]
251    pub default_task_heartbeat_timeout: Option<String>,
252    /// <p> The default task list specified for this activity type at registration. This default is used if a task list isn't provided when a task is scheduled through the <code>ScheduleActivityTask</code> <a>Decision</a>. You can override the default registered task list when scheduling a task through the <code>ScheduleActivityTask</code> <a>Decision</a>.</p>
253    #[serde(rename = "defaultTaskList")]
254    #[serde(skip_serializing_if = "Option::is_none")]
255    pub default_task_list: Option<TaskList>,
256    /// <p> The default task priority for tasks of this activity type, specified at registration. If not set, then <code>0</code> is used as the default priority. This default can be overridden when scheduling an activity task.</p> <p>Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
257    #[serde(rename = "defaultTaskPriority")]
258    #[serde(skip_serializing_if = "Option::is_none")]
259    pub default_task_priority: Option<String>,
260    /// <p> The default maximum duration, specified when registering the activity type, for tasks of this activity type. You can override this default when scheduling a task through the <code>ScheduleActivityTask</code> <a>Decision</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
261    #[serde(rename = "defaultTaskScheduleToCloseTimeout")]
262    #[serde(skip_serializing_if = "Option::is_none")]
263    pub default_task_schedule_to_close_timeout: Option<String>,
264    /// <p> The default maximum duration, specified when registering the activity type, that a task of an activity type can wait before being assigned to a worker. You can override this default when scheduling a task through the <code>ScheduleActivityTask</code> <a>Decision</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
265    #[serde(rename = "defaultTaskScheduleToStartTimeout")]
266    #[serde(skip_serializing_if = "Option::is_none")]
267    pub default_task_schedule_to_start_timeout: Option<String>,
268    /// <p> The default maximum duration for tasks of an activity type specified when registering the activity type. You can override this default when scheduling a task through the <code>ScheduleActivityTask</code> <a>Decision</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
269    #[serde(rename = "defaultTaskStartToCloseTimeout")]
270    #[serde(skip_serializing_if = "Option::is_none")]
271    pub default_task_start_to_close_timeout: Option<String>,
272}
273
274/// <p>Detailed information about an activity type.</p>
275#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
276#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
277pub struct ActivityTypeDetail {
278    /// <p>The configuration settings registered with the activity type.</p>
279    #[serde(rename = "configuration")]
280    pub configuration: ActivityTypeConfiguration,
281    /// <p><p>General information about the activity type.</p> <p>The status of activity type (returned in the ActivityTypeInfo structure) can be one of the following.</p> <ul> <li> <p> <code>REGISTERED</code> – The type is registered and available. Workers supporting this type should be running. </p> </li> <li> <p> <code>DEPRECATED</code> – The type was deprecated using <a>DeprecateActivityType</a>, but is still in use. You should keep workers supporting this type running. You cannot create new tasks of this type. </p> </li> </ul></p>
282    #[serde(rename = "typeInfo")]
283    pub type_info: ActivityTypeInfo,
284}
285
286/// <p>Detailed information about an activity type.</p>
287#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
288#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
289pub struct ActivityTypeInfo {
290    /// <p>The <a>ActivityType</a> type structure representing the activity type.</p>
291    #[serde(rename = "activityType")]
292    pub activity_type: ActivityType,
293    /// <p>The date and time this activity type was created through <a>RegisterActivityType</a>.</p>
294    #[serde(rename = "creationDate")]
295    pub creation_date: f64,
296    /// <p>If DEPRECATED, the date and time <a>DeprecateActivityType</a> was called.</p>
297    #[serde(rename = "deprecationDate")]
298    #[serde(skip_serializing_if = "Option::is_none")]
299    pub deprecation_date: Option<f64>,
300    /// <p>The description of the activity type provided in <a>RegisterActivityType</a>.</p>
301    #[serde(rename = "description")]
302    #[serde(skip_serializing_if = "Option::is_none")]
303    pub description: Option<String>,
304    /// <p>The current status of the activity type.</p>
305    #[serde(rename = "status")]
306    pub status: String,
307}
308
309/// <p>Contains a paginated list of activity type information structures.</p>
310#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
311#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
312pub struct ActivityTypeInfos {
313    /// <p>If a <code>NextPageToken</code> was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in <code>nextPageToken</code>. Keep all other arguments unchanged.</p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call.</p>
314    #[serde(rename = "nextPageToken")]
315    #[serde(skip_serializing_if = "Option::is_none")]
316    pub next_page_token: Option<String>,
317    /// <p>List of activity type information.</p>
318    #[serde(rename = "typeInfos")]
319    pub type_infos: Vec<ActivityTypeInfo>,
320}
321
322/// <p>Provides the details of the <code>CancelTimer</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
323#[derive(Clone, Debug, Default, PartialEq, Serialize)]
324#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
325pub struct CancelTimerDecisionAttributes {
326    /// <p> The unique ID of the timer to cancel.</p>
327    #[serde(rename = "timerId")]
328    pub timer_id: String,
329}
330
331/// <p>Provides the details of the <code>CancelTimerFailed</code> event.</p>
332#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
333#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
334pub struct CancelTimerFailedEventAttributes {
335    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
336    #[serde(rename = "cause")]
337    pub cause: String,
338    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>CancelTimer</code> decision to cancel this timer. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
339    #[serde(rename = "decisionTaskCompletedEventId")]
340    pub decision_task_completed_event_id: i64,
341    /// <p>The timerId provided in the <code>CancelTimer</code> decision that failed.</p>
342    #[serde(rename = "timerId")]
343    pub timer_id: String,
344}
345
346/// <p>Provides the details of the <code>CancelWorkflowExecution</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
347#[derive(Clone, Debug, Default, PartialEq, Serialize)]
348#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
349pub struct CancelWorkflowExecutionDecisionAttributes {
350    /// <p> Details of the cancellation.</p>
351    #[serde(rename = "details")]
352    #[serde(skip_serializing_if = "Option::is_none")]
353    pub details: Option<String>,
354}
355
356/// <p>Provides the details of the <code>CancelWorkflowExecutionFailed</code> event.</p>
357#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
358#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
359pub struct CancelWorkflowExecutionFailedEventAttributes {
360    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
361    #[serde(rename = "cause")]
362    pub cause: String,
363    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>CancelWorkflowExecution</code> decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
364    #[serde(rename = "decisionTaskCompletedEventId")]
365    pub decision_task_completed_event_id: i64,
366}
367
368/// <p>Provide details of the <code>ChildWorkflowExecutionCanceled</code> event.</p>
369#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
370#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
371pub struct ChildWorkflowExecutionCanceledEventAttributes {
372    /// <p>Details of the cancellation (if provided).</p>
373    #[serde(rename = "details")]
374    #[serde(skip_serializing_if = "Option::is_none")]
375    pub details: Option<String>,
376    /// <p>The ID of the <code>StartChildWorkflowExecutionInitiated</code> event corresponding to the <code>StartChildWorkflowExecution</code> <a>Decision</a> to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
377    #[serde(rename = "initiatedEventId")]
378    pub initiated_event_id: i64,
379    /// <p>The ID of the <code>ChildWorkflowExecutionStarted</code> event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
380    #[serde(rename = "startedEventId")]
381    pub started_event_id: i64,
382    /// <p>The child workflow execution that was canceled.</p>
383    #[serde(rename = "workflowExecution")]
384    pub workflow_execution: WorkflowExecution,
385    /// <p>The type of the child workflow execution.</p>
386    #[serde(rename = "workflowType")]
387    pub workflow_type: WorkflowType,
388}
389
390/// <p>Provides the details of the <code>ChildWorkflowExecutionCompleted</code> event.</p>
391#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
392#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
393pub struct ChildWorkflowExecutionCompletedEventAttributes {
394    /// <p>The ID of the <code>StartChildWorkflowExecutionInitiated</code> event corresponding to the <code>StartChildWorkflowExecution</code> <a>Decision</a> to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
395    #[serde(rename = "initiatedEventId")]
396    pub initiated_event_id: i64,
397    /// <p>The result of the child workflow execution.</p>
398    #[serde(rename = "result")]
399    #[serde(skip_serializing_if = "Option::is_none")]
400    pub result: Option<String>,
401    /// <p>The ID of the <code>ChildWorkflowExecutionStarted</code> event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
402    #[serde(rename = "startedEventId")]
403    pub started_event_id: i64,
404    /// <p>The child workflow execution that was completed.</p>
405    #[serde(rename = "workflowExecution")]
406    pub workflow_execution: WorkflowExecution,
407    /// <p>The type of the child workflow execution.</p>
408    #[serde(rename = "workflowType")]
409    pub workflow_type: WorkflowType,
410}
411
412/// <p>Provides the details of the <code>ChildWorkflowExecutionFailed</code> event.</p>
413#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
414#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
415pub struct ChildWorkflowExecutionFailedEventAttributes {
416    /// <p>The details of the failure (if provided).</p>
417    #[serde(rename = "details")]
418    #[serde(skip_serializing_if = "Option::is_none")]
419    pub details: Option<String>,
420    /// <p>The ID of the <code>StartChildWorkflowExecutionInitiated</code> event corresponding to the <code>StartChildWorkflowExecution</code> <a>Decision</a> to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
421    #[serde(rename = "initiatedEventId")]
422    pub initiated_event_id: i64,
423    /// <p>The reason for the failure (if provided).</p>
424    #[serde(rename = "reason")]
425    #[serde(skip_serializing_if = "Option::is_none")]
426    pub reason: Option<String>,
427    /// <p>The ID of the <code>ChildWorkflowExecutionStarted</code> event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
428    #[serde(rename = "startedEventId")]
429    pub started_event_id: i64,
430    /// <p>The child workflow execution that failed.</p>
431    #[serde(rename = "workflowExecution")]
432    pub workflow_execution: WorkflowExecution,
433    /// <p>The type of the child workflow execution.</p>
434    #[serde(rename = "workflowType")]
435    pub workflow_type: WorkflowType,
436}
437
438/// <p>Provides the details of the <code>ChildWorkflowExecutionStarted</code> event.</p>
439#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
440#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
441pub struct ChildWorkflowExecutionStartedEventAttributes {
442    /// <p>The ID of the <code>StartChildWorkflowExecutionInitiated</code> event corresponding to the <code>StartChildWorkflowExecution</code> <a>Decision</a> to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
443    #[serde(rename = "initiatedEventId")]
444    pub initiated_event_id: i64,
445    /// <p>The child workflow execution that was started.</p>
446    #[serde(rename = "workflowExecution")]
447    pub workflow_execution: WorkflowExecution,
448    /// <p>The type of the child workflow execution.</p>
449    #[serde(rename = "workflowType")]
450    pub workflow_type: WorkflowType,
451}
452
453/// <p>Provides the details of the <code>ChildWorkflowExecutionTerminated</code> event.</p>
454#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
455#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
456pub struct ChildWorkflowExecutionTerminatedEventAttributes {
457    /// <p>The ID of the <code>StartChildWorkflowExecutionInitiated</code> event corresponding to the <code>StartChildWorkflowExecution</code> <a>Decision</a> to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
458    #[serde(rename = "initiatedEventId")]
459    pub initiated_event_id: i64,
460    /// <p>The ID of the <code>ChildWorkflowExecutionStarted</code> event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
461    #[serde(rename = "startedEventId")]
462    pub started_event_id: i64,
463    /// <p>The child workflow execution that was terminated.</p>
464    #[serde(rename = "workflowExecution")]
465    pub workflow_execution: WorkflowExecution,
466    /// <p>The type of the child workflow execution.</p>
467    #[serde(rename = "workflowType")]
468    pub workflow_type: WorkflowType,
469}
470
471/// <p>Provides the details of the <code>ChildWorkflowExecutionTimedOut</code> event.</p>
472#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
473#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
474pub struct ChildWorkflowExecutionTimedOutEventAttributes {
475    /// <p>The ID of the <code>StartChildWorkflowExecutionInitiated</code> event corresponding to the <code>StartChildWorkflowExecution</code> <a>Decision</a> to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
476    #[serde(rename = "initiatedEventId")]
477    pub initiated_event_id: i64,
478    /// <p>The ID of the <code>ChildWorkflowExecutionStarted</code> event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
479    #[serde(rename = "startedEventId")]
480    pub started_event_id: i64,
481    /// <p>The type of the timeout that caused the child workflow execution to time out.</p>
482    #[serde(rename = "timeoutType")]
483    pub timeout_type: String,
484    /// <p>The child workflow execution that timed out.</p>
485    #[serde(rename = "workflowExecution")]
486    pub workflow_execution: WorkflowExecution,
487    /// <p>The type of the child workflow execution.</p>
488    #[serde(rename = "workflowType")]
489    pub workflow_type: WorkflowType,
490}
491
492/// <p>Used to filter the closed workflow executions in visibility APIs by their close status.</p>
493#[derive(Clone, Debug, Default, PartialEq, Serialize)]
494#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
495pub struct CloseStatusFilter {
496    /// <p> The close status that must match the close status of an execution for it to meet the criteria of this filter.</p>
497    #[serde(rename = "status")]
498    pub status: String,
499}
500
501/// <p>Provides the details of the <code>CompleteWorkflowExecution</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
502#[derive(Clone, Debug, Default, PartialEq, Serialize)]
503#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
504pub struct CompleteWorkflowExecutionDecisionAttributes {
505    /// <p>The result of the workflow execution. The form of the result is implementation defined.</p>
506    #[serde(rename = "result")]
507    #[serde(skip_serializing_if = "Option::is_none")]
508    pub result: Option<String>,
509}
510
511/// <p>Provides the details of the <code>CompleteWorkflowExecutionFailed</code> event.</p>
512#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
513#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
514pub struct CompleteWorkflowExecutionFailedEventAttributes {
515    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
516    #[serde(rename = "cause")]
517    pub cause: String,
518    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>CompleteWorkflowExecution</code> decision to complete this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
519    #[serde(rename = "decisionTaskCompletedEventId")]
520    pub decision_task_completed_event_id: i64,
521}
522
523/// <p>Provides the details of the <code>ContinueAsNewWorkflowExecution</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tag</code> – A tag used to identify the workflow execution</p> </li> <li> <p> <code>taskList</code> – String constraint. The key is <code>swf:taskList.name</code>.</p> </li> <li> <p> <code>workflowType.version</code> – String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
524#[derive(Clone, Debug, Default, PartialEq, Serialize)]
525#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
526pub struct ContinueAsNewWorkflowExecutionDecisionAttributes {
527    /// <p><p>If set, specifies the policy to use for the child workflow executions of the new execution if it is terminated by calling the <a>TerminateWorkflowExecution</a> action explicitly or due to an expired timeout. This policy overrides the default child policy specified when registering the workflow type using <a>RegisterWorkflowType</a>.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul> <note> <p>A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault is returned.</p> </note></p>
528    #[serde(rename = "childPolicy")]
529    #[serde(skip_serializing_if = "Option::is_none")]
530    pub child_policy: Option<String>,
531    /// <p><p>If set, specifies the total duration for this workflow execution. This overrides the <code>defaultExecutionStartToCloseTimeout</code> specified when registering the workflow type.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p> <note> <p>An execution start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this field. If neither this field is set nor a default execution start-to-close timeout was specified at registration time then a fault is returned.</p> </note></p>
532    #[serde(rename = "executionStartToCloseTimeout")]
533    #[serde(skip_serializing_if = "Option::is_none")]
534    pub execution_start_to_close_timeout: Option<String>,
535    /// <p>The input provided to the new workflow execution.</p>
536    #[serde(rename = "input")]
537    #[serde(skip_serializing_if = "Option::is_none")]
538    pub input: Option<String>,
539    /// <p>The IAM role to attach to the new (continued) execution.</p>
540    #[serde(rename = "lambdaRole")]
541    #[serde(skip_serializing_if = "Option::is_none")]
542    pub lambda_role: Option<String>,
543    /// <p>The list of tags to associate with the new workflow execution. A maximum of 5 tags can be specified. You can list workflow executions with a specific tag by calling <a>ListOpenWorkflowExecutions</a> or <a>ListClosedWorkflowExecutions</a> and specifying a <a>TagFilter</a>.</p>
544    #[serde(rename = "tagList")]
545    #[serde(skip_serializing_if = "Option::is_none")]
546    pub tag_list: Option<Vec<String>>,
547    /// <p>The task list to use for the decisions of the new (continued) workflow execution.</p>
548    #[serde(rename = "taskList")]
549    #[serde(skip_serializing_if = "Option::is_none")]
550    pub task_list: Option<TaskList>,
551    /// <p> The task priority that, if set, specifies the priority for the decision tasks for this workflow execution. This overrides the defaultTaskPriority specified when registering the workflow type. Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
552    #[serde(rename = "taskPriority")]
553    #[serde(skip_serializing_if = "Option::is_none")]
554    pub task_priority: Option<String>,
555    /// <p><p>Specifies the maximum duration of decision tasks for the new workflow execution. This parameter overrides the <code>defaultTaskStartToCloseTimout</code> specified when registering the workflow type using <a>RegisterWorkflowType</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p> <note> <p>A task start-to-close timeout for the new workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task start-to-close timeout was specified at registration time then a fault is returned.</p> </note></p>
556    #[serde(rename = "taskStartToCloseTimeout")]
557    #[serde(skip_serializing_if = "Option::is_none")]
558    pub task_start_to_close_timeout: Option<String>,
559    /// <p>The version of the workflow to start.</p>
560    #[serde(rename = "workflowTypeVersion")]
561    #[serde(skip_serializing_if = "Option::is_none")]
562    pub workflow_type_version: Option<String>,
563}
564
565/// <p>Provides the details of the <code>ContinueAsNewWorkflowExecutionFailed</code> event.</p>
566#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
567#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
568pub struct ContinueAsNewWorkflowExecutionFailedEventAttributes {
569    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
570    #[serde(rename = "cause")]
571    pub cause: String,
572    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>ContinueAsNewWorkflowExecution</code> decision that started this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
573    #[serde(rename = "decisionTaskCompletedEventId")]
574    pub decision_task_completed_event_id: i64,
575}
576
577#[derive(Clone, Debug, Default, PartialEq, Serialize)]
578#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
579pub struct CountClosedWorkflowExecutionsInput {
580    /// <p><p>If specified, only workflow executions that match this close status are counted. This filter has an affect only if <code>executionStatus</code> is specified as <code>CLOSED</code>.</p> <note> <p> <code>closeStatusFilter</code>, <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
581    #[serde(rename = "closeStatusFilter")]
582    #[serde(skip_serializing_if = "Option::is_none")]
583    pub close_status_filter: Option<CloseStatusFilter>,
584    /// <p><p>If specified, only workflow executions that meet the close time criteria of the filter are counted.</p> <note> <p> <code>startTimeFilter</code> and <code>closeTimeFilter</code> are mutually exclusive. You must specify one of these in a request but not both.</p> </note></p>
585    #[serde(rename = "closeTimeFilter")]
586    #[serde(skip_serializing_if = "Option::is_none")]
587    pub close_time_filter: Option<ExecutionTimeFilter>,
588    /// <p>The name of the domain containing the workflow executions to count.</p>
589    #[serde(rename = "domain")]
590    pub domain: String,
591    /// <p><p>If specified, only workflow executions matching the <code>WorkflowId</code> in the filter are counted.</p> <note> <p> <code>closeStatusFilter</code>, <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
592    #[serde(rename = "executionFilter")]
593    #[serde(skip_serializing_if = "Option::is_none")]
594    pub execution_filter: Option<WorkflowExecutionFilter>,
595    /// <p><p>If specified, only workflow executions that meet the start time criteria of the filter are counted.</p> <note> <p> <code>startTimeFilter</code> and <code>closeTimeFilter</code> are mutually exclusive. You must specify one of these in a request but not both.</p> </note></p>
596    #[serde(rename = "startTimeFilter")]
597    #[serde(skip_serializing_if = "Option::is_none")]
598    pub start_time_filter: Option<ExecutionTimeFilter>,
599    /// <p><p>If specified, only executions that have a tag that matches the filter are counted.</p> <note> <p> <code>closeStatusFilter</code>, <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
600    #[serde(rename = "tagFilter")]
601    #[serde(skip_serializing_if = "Option::is_none")]
602    pub tag_filter: Option<TagFilter>,
603    /// <p><p>If specified, indicates the type of the workflow executions to be counted.</p> <note> <p> <code>closeStatusFilter</code>, <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
604    #[serde(rename = "typeFilter")]
605    #[serde(skip_serializing_if = "Option::is_none")]
606    pub type_filter: Option<WorkflowTypeFilter>,
607}
608
609#[derive(Clone, Debug, Default, PartialEq, Serialize)]
610#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
611pub struct CountOpenWorkflowExecutionsInput {
612    /// <p>The name of the domain containing the workflow executions to count.</p>
613    #[serde(rename = "domain")]
614    pub domain: String,
615    /// <p><p>If specified, only workflow executions matching the <code>WorkflowId</code> in the filter are counted.</p> <note> <p> <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
616    #[serde(rename = "executionFilter")]
617    #[serde(skip_serializing_if = "Option::is_none")]
618    pub execution_filter: Option<WorkflowExecutionFilter>,
619    /// <p>Specifies the start time criteria that workflow executions must meet in order to be counted.</p>
620    #[serde(rename = "startTimeFilter")]
621    pub start_time_filter: ExecutionTimeFilter,
622    /// <p><p>If specified, only executions that have a tag that matches the filter are counted.</p> <note> <p> <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
623    #[serde(rename = "tagFilter")]
624    #[serde(skip_serializing_if = "Option::is_none")]
625    pub tag_filter: Option<TagFilter>,
626    /// <p><p>Specifies the type of the workflow executions to be counted.</p> <note> <p> <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
627    #[serde(rename = "typeFilter")]
628    #[serde(skip_serializing_if = "Option::is_none")]
629    pub type_filter: Option<WorkflowTypeFilter>,
630}
631
632#[derive(Clone, Debug, Default, PartialEq, Serialize)]
633#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
634pub struct CountPendingActivityTasksInput {
635    /// <p>The name of the domain that contains the task list.</p>
636    #[serde(rename = "domain")]
637    pub domain: String,
638    /// <p>The name of the task list.</p>
639    #[serde(rename = "taskList")]
640    pub task_list: TaskList,
641}
642
643#[derive(Clone, Debug, Default, PartialEq, Serialize)]
644#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
645pub struct CountPendingDecisionTasksInput {
646    /// <p>The name of the domain that contains the task list.</p>
647    #[serde(rename = "domain")]
648    pub domain: String,
649    /// <p>The name of the task list.</p>
650    #[serde(rename = "taskList")]
651    pub task_list: TaskList,
652}
653
654/// <p><p>Specifies a decision made by the decider. A decision can be one of these types:</p> <ul> <li> <p> <code>CancelTimer</code> – Cancels a previously started timer and records a <code>TimerCanceled</code> event in the history.</p> </li> <li> <p> <code>CancelWorkflowExecution</code> – Closes the workflow execution and records a <code>WorkflowExecutionCanceled</code> event in the history.</p> </li> <li> <p> <code>CompleteWorkflowExecution</code> – Closes the workflow execution and records a <code>WorkflowExecutionCompleted</code> event in the history .</p> </li> <li> <p> <code>ContinueAsNewWorkflowExecution</code> – Closes the workflow execution and starts a new workflow execution of the same type using the same workflow ID and a unique run Id. A <code>WorkflowExecutionContinuedAsNew</code> event is recorded in the history.</p> </li> <li> <p> <code>FailWorkflowExecution</code> – Closes the workflow execution and records a <code>WorkflowExecutionFailed</code> event in the history.</p> </li> <li> <p> <code>RecordMarker</code> – Records a <code>MarkerRecorded</code> event in the history. Markers can be used for adding custom information in the history for instance to let deciders know that they don&#39;t need to look at the history beyond the marker event.</p> </li> <li> <p> <code>RequestCancelActivityTask</code> – Attempts to cancel a previously scheduled activity task. If the activity task was scheduled but has not been assigned to a worker, then it is canceled. If the activity task was already assigned to a worker, then the worker is informed that cancellation has been requested in the response to <a>RecordActivityTaskHeartbeat</a>.</p> </li> <li> <p> <code>RequestCancelExternalWorkflowExecution</code> – Requests that a request be made to cancel the specified external workflow execution and records a <code>RequestCancelExternalWorkflowExecutionInitiated</code> event in the history.</p> </li> <li> <p> <code>ScheduleActivityTask</code> – Schedules an activity task.</p> </li> <li> <p> <code>SignalExternalWorkflowExecution</code> – Requests a signal to be delivered to the specified external workflow execution and records a <code>SignalExternalWorkflowExecutionInitiated</code> event in the history.</p> </li> <li> <p> <code>StartChildWorkflowExecution</code> – Requests that a child workflow execution be started and records a <code>StartChildWorkflowExecutionInitiated</code> event in the history. The child workflow execution is a separate workflow execution with its own history.</p> </li> <li> <p> <code>StartTimer</code> – Starts a timer for this workflow execution and records a <code>TimerStarted</code> event in the history. This timer fires after the specified delay and record a <code>TimerFired</code> event.</p> </li> </ul> <p> <b>Access Control</b> </p> <p>If you grant permission to use <code>RespondDecisionTaskCompleted</code>, you can use IAM policies to express permissions for the list of decisions returned by this action as if they were members of the API. Treating decisions as a pseudo API maintains a uniform conceptual model and helps keep policies readable. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> <p> <b>Decision Failure</b> </p> <p>Decisions can fail for several reasons</p> <ul> <li> <p>The ordering of decisions should follow a logical flow. Some decisions might not make sense in the current context of the workflow execution and therefore fails.</p> </li> <li> <p>A limit on your account was reached.</p> </li> <li> <p>The decision lacks sufficient permissions.</p> </li> </ul> <p>One of the following events might be added to the history to indicate an error. The event attribute&#39;s <code>cause</code> parameter indicates the cause. If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> <ul> <li> <p> <code>ScheduleActivityTaskFailed</code> – A <code>ScheduleActivityTask</code> decision failed. This could happen if the activity type specified in the decision isn&#39;t registered, is in a deprecated state, or the decision isn&#39;t properly configured.</p> </li> <li> <p> <code>RequestCancelActivityTaskFailed</code> – A <code>RequestCancelActivityTask</code> decision failed. This could happen if there is no open activity task with the specified activityId.</p> </li> <li> <p> <code>StartTimerFailed</code> – A <code>StartTimer</code> decision failed. This could happen if there is another open timer with the same timerId.</p> </li> <li> <p> <code>CancelTimerFailed</code> – A <code>CancelTimer</code> decision failed. This could happen if there is no open timer with the specified timerId.</p> </li> <li> <p> <code>StartChildWorkflowExecutionFailed</code> – A <code>StartChildWorkflowExecution</code> decision failed. This could happen if the workflow type specified isn&#39;t registered, is deprecated, or the decision isn&#39;t properly configured.</p> </li> <li> <p> <code>SignalExternalWorkflowExecutionFailed</code> – A <code>SignalExternalWorkflowExecution</code> decision failed. This could happen if the <code>workflowID</code> specified in the decision was incorrect.</p> </li> <li> <p> <code>RequestCancelExternalWorkflowExecutionFailed</code> – A <code>RequestCancelExternalWorkflowExecution</code> decision failed. This could happen if the <code>workflowID</code> specified in the decision was incorrect.</p> </li> <li> <p> <code>CancelWorkflowExecutionFailed</code> – A <code>CancelWorkflowExecution</code> decision failed. This could happen if there is an unhandled decision task pending in the workflow execution.</p> </li> <li> <p> <code>CompleteWorkflowExecutionFailed</code> – A <code>CompleteWorkflowExecution</code> decision failed. This could happen if there is an unhandled decision task pending in the workflow execution.</p> </li> <li> <p> <code>ContinueAsNewWorkflowExecutionFailed</code> – A <code>ContinueAsNewWorkflowExecution</code> decision failed. This could happen if there is an unhandled decision task pending in the workflow execution or the ContinueAsNewWorkflowExecution decision was not configured correctly.</p> </li> <li> <p> <code>FailWorkflowExecutionFailed</code> – A <code>FailWorkflowExecution</code> decision failed. This could happen if there is an unhandled decision task pending in the workflow execution.</p> </li> </ul> <p>The preceding error events might occur due to an error in the decider logic, which might put the workflow execution in an unstable state The cause field in the event structure for the error event indicates the cause of the error.</p> <note> <p>A workflow execution may be closed by the decider by returning one of the following decisions when completing a decision task: <code>CompleteWorkflowExecution</code>, <code>FailWorkflowExecution</code>, <code>CancelWorkflowExecution</code> and <code>ContinueAsNewWorkflowExecution</code>. An <code>UnhandledDecision</code> fault is returned if a workflow closing decision is specified and a signal or activity event had been added to the history while the decision task was being performed by the decider. Unlike the above situations which are logic issues, this fault is always possible because of race conditions in a distributed system. The right action here is to call <a>RespondDecisionTaskCompleted</a> without any decisions. This would result in another decision task with these new events included in the history. The decider should handle the new events and may decide to close the workflow execution.</p> </note> <p> <b>How to Code a Decision</b> </p> <p>You code a decision by first setting the decision type field to one of the above decision values, and then set the corresponding attributes field shown below:</p> <ul> <li> <p> <code> <a>ScheduleActivityTaskDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>RequestCancelActivityTaskDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>CompleteWorkflowExecutionDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>FailWorkflowExecutionDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>CancelWorkflowExecutionDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>ContinueAsNewWorkflowExecutionDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>RecordMarkerDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>StartTimerDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>CancelTimerDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>SignalExternalWorkflowExecutionDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>RequestCancelExternalWorkflowExecutionDecisionAttributes</a> </code> </p> </li> <li> <p> <code> <a>StartChildWorkflowExecutionDecisionAttributes</a> </code> </p> </li> </ul></p>
655#[derive(Clone, Debug, Default, PartialEq, Serialize)]
656#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
657pub struct Decision {
658    /// <p>Provides the details of the <code>CancelTimer</code> decision. It isn't set for other decision types.</p>
659    #[serde(rename = "cancelTimerDecisionAttributes")]
660    #[serde(skip_serializing_if = "Option::is_none")]
661    pub cancel_timer_decision_attributes: Option<CancelTimerDecisionAttributes>,
662    /// <p>Provides the details of the <code>CancelWorkflowExecution</code> decision. It isn't set for other decision types.</p>
663    #[serde(rename = "cancelWorkflowExecutionDecisionAttributes")]
664    #[serde(skip_serializing_if = "Option::is_none")]
665    pub cancel_workflow_execution_decision_attributes:
666        Option<CancelWorkflowExecutionDecisionAttributes>,
667    /// <p>Provides the details of the <code>CompleteWorkflowExecution</code> decision. It isn't set for other decision types.</p>
668    #[serde(rename = "completeWorkflowExecutionDecisionAttributes")]
669    #[serde(skip_serializing_if = "Option::is_none")]
670    pub complete_workflow_execution_decision_attributes:
671        Option<CompleteWorkflowExecutionDecisionAttributes>,
672    /// <p>Provides the details of the <code>ContinueAsNewWorkflowExecution</code> decision. It isn't set for other decision types.</p>
673    #[serde(rename = "continueAsNewWorkflowExecutionDecisionAttributes")]
674    #[serde(skip_serializing_if = "Option::is_none")]
675    pub continue_as_new_workflow_execution_decision_attributes:
676        Option<ContinueAsNewWorkflowExecutionDecisionAttributes>,
677    /// <p>Specifies the type of the decision.</p>
678    #[serde(rename = "decisionType")]
679    pub decision_type: String,
680    /// <p>Provides the details of the <code>FailWorkflowExecution</code> decision. It isn't set for other decision types.</p>
681    #[serde(rename = "failWorkflowExecutionDecisionAttributes")]
682    #[serde(skip_serializing_if = "Option::is_none")]
683    pub fail_workflow_execution_decision_attributes:
684        Option<FailWorkflowExecutionDecisionAttributes>,
685    /// <p>Provides the details of the <code>RecordMarker</code> decision. It isn't set for other decision types.</p>
686    #[serde(rename = "recordMarkerDecisionAttributes")]
687    #[serde(skip_serializing_if = "Option::is_none")]
688    pub record_marker_decision_attributes: Option<RecordMarkerDecisionAttributes>,
689    /// <p>Provides the details of the <code>RequestCancelActivityTask</code> decision. It isn't set for other decision types.</p>
690    #[serde(rename = "requestCancelActivityTaskDecisionAttributes")]
691    #[serde(skip_serializing_if = "Option::is_none")]
692    pub request_cancel_activity_task_decision_attributes:
693        Option<RequestCancelActivityTaskDecisionAttributes>,
694    /// <p>Provides the details of the <code>RequestCancelExternalWorkflowExecution</code> decision. It isn't set for other decision types.</p>
695    #[serde(rename = "requestCancelExternalWorkflowExecutionDecisionAttributes")]
696    #[serde(skip_serializing_if = "Option::is_none")]
697    pub request_cancel_external_workflow_execution_decision_attributes:
698        Option<RequestCancelExternalWorkflowExecutionDecisionAttributes>,
699    /// <p>Provides the details of the <code>ScheduleActivityTask</code> decision. It isn't set for other decision types.</p>
700    #[serde(rename = "scheduleActivityTaskDecisionAttributes")]
701    #[serde(skip_serializing_if = "Option::is_none")]
702    pub schedule_activity_task_decision_attributes: Option<ScheduleActivityTaskDecisionAttributes>,
703    /// <p>Provides the details of the <code>ScheduleLambdaFunction</code> decision. It isn't set for other decision types.</p>
704    #[serde(rename = "scheduleLambdaFunctionDecisionAttributes")]
705    #[serde(skip_serializing_if = "Option::is_none")]
706    pub schedule_lambda_function_decision_attributes:
707        Option<ScheduleLambdaFunctionDecisionAttributes>,
708    /// <p>Provides the details of the <code>SignalExternalWorkflowExecution</code> decision. It isn't set for other decision types.</p>
709    #[serde(rename = "signalExternalWorkflowExecutionDecisionAttributes")]
710    #[serde(skip_serializing_if = "Option::is_none")]
711    pub signal_external_workflow_execution_decision_attributes:
712        Option<SignalExternalWorkflowExecutionDecisionAttributes>,
713    /// <p>Provides the details of the <code>StartChildWorkflowExecution</code> decision. It isn't set for other decision types.</p>
714    #[serde(rename = "startChildWorkflowExecutionDecisionAttributes")]
715    #[serde(skip_serializing_if = "Option::is_none")]
716    pub start_child_workflow_execution_decision_attributes:
717        Option<StartChildWorkflowExecutionDecisionAttributes>,
718    /// <p>Provides the details of the <code>StartTimer</code> decision. It isn't set for other decision types.</p>
719    #[serde(rename = "startTimerDecisionAttributes")]
720    #[serde(skip_serializing_if = "Option::is_none")]
721    pub start_timer_decision_attributes: Option<StartTimerDecisionAttributes>,
722}
723
724/// <p>A structure that represents a decision task. Decision tasks are sent to deciders in order for them to make decisions.</p>
725#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
726#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
727pub struct DecisionTask {
728    /// <p>A paginated list of history events of the workflow execution. The decider uses this during the processing of the decision task.</p>
729    #[serde(rename = "events")]
730    pub events: Vec<HistoryEvent>,
731    /// <p>If a <code>NextPageToken</code> was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in <code>nextPageToken</code>. Keep all other arguments unchanged.</p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call.</p>
732    #[serde(rename = "nextPageToken")]
733    #[serde(skip_serializing_if = "Option::is_none")]
734    pub next_page_token: Option<String>,
735    /// <p>The ID of the DecisionTaskStarted event of the previous decision task of this workflow execution that was processed by the decider. This can be used to determine the events in the history new since the last decision task received by the decider.</p>
736    #[serde(rename = "previousStartedEventId")]
737    #[serde(skip_serializing_if = "Option::is_none")]
738    pub previous_started_event_id: Option<i64>,
739    /// <p>The ID of the <code>DecisionTaskStarted</code> event recorded in the history.</p>
740    #[serde(rename = "startedEventId")]
741    pub started_event_id: i64,
742    /// <p>The opaque string used as a handle on the task. This token is used by workers to communicate progress and response information back to the system about the task.</p>
743    #[serde(rename = "taskToken")]
744    pub task_token: String,
745    /// <p>The workflow execution for which this decision task was created.</p>
746    #[serde(rename = "workflowExecution")]
747    pub workflow_execution: WorkflowExecution,
748    /// <p>The type of the workflow execution for which this decision task was created.</p>
749    #[serde(rename = "workflowType")]
750    pub workflow_type: WorkflowType,
751}
752
753/// <p>Provides the details of the <code>DecisionTaskCompleted</code> event.</p>
754#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
755#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
756pub struct DecisionTaskCompletedEventAttributes {
757    /// <p>User defined context for the workflow execution.</p>
758    #[serde(rename = "executionContext")]
759    #[serde(skip_serializing_if = "Option::is_none")]
760    pub execution_context: Option<String>,
761    /// <p>The ID of the <code>DecisionTaskScheduled</code> event that was recorded when this decision task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
762    #[serde(rename = "scheduledEventId")]
763    pub scheduled_event_id: i64,
764    /// <p>The ID of the <code>DecisionTaskStarted</code> event recorded when this decision task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
765    #[serde(rename = "startedEventId")]
766    pub started_event_id: i64,
767}
768
769/// <p>Provides details about the <code>DecisionTaskScheduled</code> event.</p>
770#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
771#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
772pub struct DecisionTaskScheduledEventAttributes {
773    /// <p>The maximum duration for this decision task. The task is considered timed out if it doesn't completed within this duration.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
774    #[serde(rename = "startToCloseTimeout")]
775    #[serde(skip_serializing_if = "Option::is_none")]
776    pub start_to_close_timeout: Option<String>,
777    /// <p>The name of the task list in which the decision task was scheduled.</p>
778    #[serde(rename = "taskList")]
779    pub task_list: TaskList,
780    /// <p> A task priority that, if set, specifies the priority for this decision task. Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
781    #[serde(rename = "taskPriority")]
782    #[serde(skip_serializing_if = "Option::is_none")]
783    pub task_priority: Option<String>,
784}
785
786/// <p>Provides the details of the <code>DecisionTaskStarted</code> event.</p>
787#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
788#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
789pub struct DecisionTaskStartedEventAttributes {
790    /// <p>Identity of the decider making the request. This enables diagnostic tracing when problems arise. The form of this identity is user defined.</p>
791    #[serde(rename = "identity")]
792    #[serde(skip_serializing_if = "Option::is_none")]
793    pub identity: Option<String>,
794    /// <p>The ID of the <code>DecisionTaskScheduled</code> event that was recorded when this decision task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
795    #[serde(rename = "scheduledEventId")]
796    pub scheduled_event_id: i64,
797}
798
799/// <p>Provides the details of the <code>DecisionTaskTimedOut</code> event.</p>
800#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
801#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
802pub struct DecisionTaskTimedOutEventAttributes {
803    /// <p>The ID of the <code>DecisionTaskScheduled</code> event that was recorded when this decision task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
804    #[serde(rename = "scheduledEventId")]
805    pub scheduled_event_id: i64,
806    /// <p>The ID of the <code>DecisionTaskStarted</code> event recorded when this decision task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
807    #[serde(rename = "startedEventId")]
808    pub started_event_id: i64,
809    /// <p>The type of timeout that expired before the decision task could be completed.</p>
810    #[serde(rename = "timeoutType")]
811    pub timeout_type: String,
812}
813
814#[derive(Clone, Debug, Default, PartialEq, Serialize)]
815#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
816pub struct DeprecateActivityTypeInput {
817    /// <p>The activity type to deprecate.</p>
818    #[serde(rename = "activityType")]
819    pub activity_type: ActivityType,
820    /// <p>The name of the domain in which the activity type is registered.</p>
821    #[serde(rename = "domain")]
822    pub domain: String,
823}
824
825#[derive(Clone, Debug, Default, PartialEq, Serialize)]
826#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
827pub struct DeprecateDomainInput {
828    /// <p>The name of the domain to deprecate.</p>
829    #[serde(rename = "name")]
830    pub name: String,
831}
832
833#[derive(Clone, Debug, Default, PartialEq, Serialize)]
834#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
835pub struct DeprecateWorkflowTypeInput {
836    /// <p>The name of the domain in which the workflow type is registered.</p>
837    #[serde(rename = "domain")]
838    pub domain: String,
839    /// <p>The workflow type to deprecate.</p>
840    #[serde(rename = "workflowType")]
841    pub workflow_type: WorkflowType,
842}
843
844#[derive(Clone, Debug, Default, PartialEq, Serialize)]
845#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
846pub struct DescribeActivityTypeInput {
847    /// <p>The activity type to get information about. Activity types are identified by the <code>name</code> and <code>version</code> that were supplied when the activity was registered.</p>
848    #[serde(rename = "activityType")]
849    pub activity_type: ActivityType,
850    /// <p>The name of the domain in which the activity type is registered.</p>
851    #[serde(rename = "domain")]
852    pub domain: String,
853}
854
855#[derive(Clone, Debug, Default, PartialEq, Serialize)]
856#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
857pub struct DescribeDomainInput {
858    /// <p>The name of the domain to describe.</p>
859    #[serde(rename = "name")]
860    pub name: String,
861}
862
863#[derive(Clone, Debug, Default, PartialEq, Serialize)]
864#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
865pub struct DescribeWorkflowExecutionInput {
866    /// <p>The name of the domain containing the workflow execution.</p>
867    #[serde(rename = "domain")]
868    pub domain: String,
869    /// <p>The workflow execution to describe.</p>
870    #[serde(rename = "execution")]
871    pub execution: WorkflowExecution,
872}
873
874#[derive(Clone, Debug, Default, PartialEq, Serialize)]
875#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
876pub struct DescribeWorkflowTypeInput {
877    /// <p>The name of the domain in which this workflow type is registered.</p>
878    #[serde(rename = "domain")]
879    pub domain: String,
880    /// <p>The workflow type to describe.</p>
881    #[serde(rename = "workflowType")]
882    pub workflow_type: WorkflowType,
883}
884
885/// <p>Contains the configuration settings of a domain.</p>
886#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
887#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
888pub struct DomainConfiguration {
889    /// <p>The retention period for workflow executions in this domain.</p>
890    #[serde(rename = "workflowExecutionRetentionPeriodInDays")]
891    pub workflow_execution_retention_period_in_days: String,
892}
893
894/// <p>Contains details of a domain.</p>
895#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
896#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
897pub struct DomainDetail {
898    /// <p>The domain configuration. Currently, this includes only the domain's retention period.</p>
899    #[serde(rename = "configuration")]
900    pub configuration: DomainConfiguration,
901    /// <p>The basic information about a domain, such as its name, status, and description.</p>
902    #[serde(rename = "domainInfo")]
903    pub domain_info: DomainInfo,
904}
905
906/// <p>Contains general information about a domain.</p>
907#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
908#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
909pub struct DomainInfo {
910    /// <p>The ARN of the domain.</p>
911    #[serde(rename = "arn")]
912    #[serde(skip_serializing_if = "Option::is_none")]
913    pub arn: Option<String>,
914    /// <p>The description of the domain provided through <a>RegisterDomain</a>.</p>
915    #[serde(rename = "description")]
916    #[serde(skip_serializing_if = "Option::is_none")]
917    pub description: Option<String>,
918    /// <p>The name of the domain. This name is unique within the account.</p>
919    #[serde(rename = "name")]
920    pub name: String,
921    /// <p><p>The status of the domain:</p> <ul> <li> <p> <code>REGISTERED</code> – The domain is properly registered and available. You can use this domain for registering types and creating new workflow executions. </p> </li> <li> <p> <code>DEPRECATED</code> – The domain was deprecated using <a>DeprecateDomain</a>, but is still in use. You should not create new workflow executions in this domain. </p> </li> </ul></p>
922    #[serde(rename = "status")]
923    pub status: String,
924}
925
926/// <p>Contains a paginated collection of DomainInfo structures.</p>
927#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
928#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
929pub struct DomainInfos {
930    /// <p>A list of DomainInfo structures.</p>
931    #[serde(rename = "domainInfos")]
932    pub domain_infos: Vec<DomainInfo>,
933    /// <p>If a <code>NextPageToken</code> was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in <code>nextPageToken</code>. Keep all other arguments unchanged.</p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call.</p>
934    #[serde(rename = "nextPageToken")]
935    #[serde(skip_serializing_if = "Option::is_none")]
936    pub next_page_token: Option<String>,
937}
938
939/// <p>Used to filter the workflow executions in visibility APIs by various time-based rules. Each parameter, if specified, defines a rule that must be satisfied by each returned query result. The parameter values are in the <a href="https://en.wikipedia.org/wiki/Unix_time">Unix Time format</a>. For example: <code>"oldestDate": 1325376070.</code> </p>
940#[derive(Clone, Debug, Default, PartialEq, Serialize)]
941#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
942pub struct ExecutionTimeFilter {
943    /// <p>Specifies the latest start or close date and time to return.</p>
944    #[serde(rename = "latestDate")]
945    #[serde(skip_serializing_if = "Option::is_none")]
946    pub latest_date: Option<f64>,
947    /// <p>Specifies the oldest start or close date and time to return.</p>
948    #[serde(rename = "oldestDate")]
949    pub oldest_date: f64,
950}
951
952/// <p>Provides the details of the <code>ExternalWorkflowExecutionCancelRequested</code> event.</p>
953#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
954#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
955pub struct ExternalWorkflowExecutionCancelRequestedEventAttributes {
956    /// <p>The ID of the <code>RequestCancelExternalWorkflowExecutionInitiated</code> event corresponding to the <code>RequestCancelExternalWorkflowExecution</code> decision to cancel this external workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
957    #[serde(rename = "initiatedEventId")]
958    pub initiated_event_id: i64,
959    /// <p>The external workflow execution to which the cancellation request was delivered.</p>
960    #[serde(rename = "workflowExecution")]
961    pub workflow_execution: WorkflowExecution,
962}
963
964/// <p>Provides the details of the <code>ExternalWorkflowExecutionSignaled</code> event.</p>
965#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
966#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
967pub struct ExternalWorkflowExecutionSignaledEventAttributes {
968    /// <p>The ID of the <code>SignalExternalWorkflowExecutionInitiated</code> event corresponding to the <code>SignalExternalWorkflowExecution</code> decision to request this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
969    #[serde(rename = "initiatedEventId")]
970    pub initiated_event_id: i64,
971    /// <p>The external workflow execution that the signal was delivered to.</p>
972    #[serde(rename = "workflowExecution")]
973    pub workflow_execution: WorkflowExecution,
974}
975
976/// <p>Provides the details of the <code>FailWorkflowExecution</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
977#[derive(Clone, Debug, Default, PartialEq, Serialize)]
978#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
979pub struct FailWorkflowExecutionDecisionAttributes {
980    /// <p> Details of the failure.</p>
981    #[serde(rename = "details")]
982    #[serde(skip_serializing_if = "Option::is_none")]
983    pub details: Option<String>,
984    /// <p>A descriptive reason for the failure that may help in diagnostics.</p>
985    #[serde(rename = "reason")]
986    #[serde(skip_serializing_if = "Option::is_none")]
987    pub reason: Option<String>,
988}
989
990/// <p>Provides the details of the <code>FailWorkflowExecutionFailed</code> event.</p>
991#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
992#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
993pub struct FailWorkflowExecutionFailedEventAttributes {
994    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
995    #[serde(rename = "cause")]
996    pub cause: String,
997    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>FailWorkflowExecution</code> decision to fail this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
998    #[serde(rename = "decisionTaskCompletedEventId")]
999    pub decision_task_completed_event_id: i64,
1000}
1001
1002#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1003#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1004pub struct GetWorkflowExecutionHistoryInput {
1005    /// <p>The name of the domain containing the workflow execution.</p>
1006    #[serde(rename = "domain")]
1007    pub domain: String,
1008    /// <p>Specifies the workflow execution for which to return the history.</p>
1009    #[serde(rename = "execution")]
1010    pub execution: WorkflowExecution,
1011    /// <p>The maximum number of results that are returned per call. Use <code>nextPageToken</code> to obtain further pages of results. </p>
1012    #[serde(rename = "maximumPageSize")]
1013    #[serde(skip_serializing_if = "Option::is_none")]
1014    pub maximum_page_size: Option<i64>,
1015    /// <p>If <code>NextPageToken</code> is returned there are more results available. The value of <code>NextPageToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 60 seconds. Using an expired pagination token will return a <code>400</code> error: "<code>Specified token has exceeded its maximum lifetime</code>". </p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call. </p>
1016    #[serde(rename = "nextPageToken")]
1017    #[serde(skip_serializing_if = "Option::is_none")]
1018    pub next_page_token: Option<String>,
1019    /// <p>When set to <code>true</code>, returns the events in reverse order. By default the results are returned in ascending order of the <code>eventTimeStamp</code> of the events.</p>
1020    #[serde(rename = "reverseOrder")]
1021    #[serde(skip_serializing_if = "Option::is_none")]
1022    pub reverse_order: Option<bool>,
1023}
1024
1025/// <p>Paginated representation of a workflow history for a workflow execution. This is the up to date, complete and authoritative record of the events related to all tasks and events in the life of the workflow execution.</p>
1026#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1027#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1028pub struct History {
1029    /// <p>The list of history events.</p>
1030    #[serde(rename = "events")]
1031    pub events: Vec<HistoryEvent>,
1032    /// <p>If a <code>NextPageToken</code> was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in <code>nextPageToken</code>. Keep all other arguments unchanged.</p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call.</p>
1033    #[serde(rename = "nextPageToken")]
1034    #[serde(skip_serializing_if = "Option::is_none")]
1035    pub next_page_token: Option<String>,
1036}
1037
1038/// <p><p>Event within a workflow execution. A history event can be one of these types:</p> <ul> <li> <p> <code>ActivityTaskCancelRequested</code> – A <code>RequestCancelActivityTask</code> decision was received by the system.</p> </li> <li> <p> <code>ActivityTaskCanceled</code> – The activity task was successfully canceled.</p> </li> <li> <p> <code>ActivityTaskCompleted</code> – An activity worker successfully completed an activity task by calling <a>RespondActivityTaskCompleted</a>.</p> </li> <li> <p> <code>ActivityTaskFailed</code> – An activity worker failed an activity task by calling <a>RespondActivityTaskFailed</a>.</p> </li> <li> <p> <code>ActivityTaskScheduled</code> – An activity task was scheduled for execution.</p> </li> <li> <p> <code>ActivityTaskStarted</code> – The scheduled activity task was dispatched to a worker.</p> </li> <li> <p> <code>ActivityTaskTimedOut</code> – The activity task timed out.</p> </li> <li> <p> <code>CancelTimerFailed</code> – Failed to process CancelTimer decision. This happens when the decision isn&#39;t configured properly, for example no timer exists with the specified timer Id.</p> </li> <li> <p> <code>CancelWorkflowExecutionFailed</code> – A request to cancel a workflow execution failed.</p> </li> <li> <p> <code>ChildWorkflowExecutionCanceled</code> – A child workflow execution, started by this workflow execution, was canceled and closed.</p> </li> <li> <p> <code>ChildWorkflowExecutionCompleted</code> – A child workflow execution, started by this workflow execution, completed successfully and was closed.</p> </li> <li> <p> <code>ChildWorkflowExecutionFailed</code> – A child workflow execution, started by this workflow execution, failed to complete successfully and was closed.</p> </li> <li> <p> <code>ChildWorkflowExecutionStarted</code> – A child workflow execution was successfully started.</p> </li> <li> <p> <code>ChildWorkflowExecutionTerminated</code> – A child workflow execution, started by this workflow execution, was terminated.</p> </li> <li> <p> <code>ChildWorkflowExecutionTimedOut</code> – A child workflow execution, started by this workflow execution, timed out and was closed.</p> </li> <li> <p> <code>CompleteWorkflowExecutionFailed</code> – The workflow execution failed to complete.</p> </li> <li> <p> <code>ContinueAsNewWorkflowExecutionFailed</code> – The workflow execution failed to complete after being continued as a new workflow execution.</p> </li> <li> <p> <code>DecisionTaskCompleted</code> – The decider successfully completed a decision task by calling <a>RespondDecisionTaskCompleted</a>.</p> </li> <li> <p> <code>DecisionTaskScheduled</code> – A decision task was scheduled for the workflow execution.</p> </li> <li> <p> <code>DecisionTaskStarted</code> – The decision task was dispatched to a decider.</p> </li> <li> <p> <code>DecisionTaskTimedOut</code> – The decision task timed out.</p> </li> <li> <p> <code>ExternalWorkflowExecutionCancelRequested</code> – Request to cancel an external workflow execution was successfully delivered to the target execution.</p> </li> <li> <p> <code>ExternalWorkflowExecutionSignaled</code> – A signal, requested by this workflow execution, was successfully delivered to the target external workflow execution.</p> </li> <li> <p> <code>FailWorkflowExecutionFailed</code> – A request to mark a workflow execution as failed, itself failed.</p> </li> <li> <p> <code>MarkerRecorded</code> – A marker was recorded in the workflow history as the result of a <code>RecordMarker</code> decision.</p> </li> <li> <p> <code>RecordMarkerFailed</code> – A <code>RecordMarker</code> decision was returned as failed.</p> </li> <li> <p> <code>RequestCancelActivityTaskFailed</code> – Failed to process RequestCancelActivityTask decision. This happens when the decision isn&#39;t configured properly.</p> </li> <li> <p> <code>RequestCancelExternalWorkflowExecutionFailed</code> – Request to cancel an external workflow execution failed.</p> </li> <li> <p> <code>RequestCancelExternalWorkflowExecutionInitiated</code> – A request was made to request the cancellation of an external workflow execution.</p> </li> <li> <p> <code>ScheduleActivityTaskFailed</code> – Failed to process ScheduleActivityTask decision. This happens when the decision isn&#39;t configured properly, for example the activity type specified isn&#39;t registered.</p> </li> <li> <p> <code>SignalExternalWorkflowExecutionFailed</code> – The request to signal an external workflow execution failed.</p> </li> <li> <p> <code>SignalExternalWorkflowExecutionInitiated</code> – A request to signal an external workflow was made.</p> </li> <li> <p> <code>StartActivityTaskFailed</code> – A scheduled activity task failed to start.</p> </li> <li> <p> <code>StartChildWorkflowExecutionFailed</code> – Failed to process StartChildWorkflowExecution decision. This happens when the decision isn&#39;t configured properly, for example the workflow type specified isn&#39;t registered.</p> </li> <li> <p> <code>StartChildWorkflowExecutionInitiated</code> – A request was made to start a child workflow execution.</p> </li> <li> <p> <code>StartTimerFailed</code> – Failed to process StartTimer decision. This happens when the decision isn&#39;t configured properly, for example a timer already exists with the specified timer Id.</p> </li> <li> <p> <code>TimerCanceled</code> – A timer, previously started for this workflow execution, was successfully canceled.</p> </li> <li> <p> <code>TimerFired</code> – A timer, previously started for this workflow execution, fired.</p> </li> <li> <p> <code>TimerStarted</code> – A timer was started for the workflow execution due to a <code>StartTimer</code> decision.</p> </li> <li> <p> <code>WorkflowExecutionCancelRequested</code> – A request to cancel this workflow execution was made.</p> </li> <li> <p> <code>WorkflowExecutionCanceled</code> – The workflow execution was successfully canceled and closed.</p> </li> <li> <p> <code>WorkflowExecutionCompleted</code> – The workflow execution was closed due to successful completion.</p> </li> <li> <p> <code>WorkflowExecutionContinuedAsNew</code> – The workflow execution was closed and a new execution of the same type was created with the same workflowId.</p> </li> <li> <p> <code>WorkflowExecutionFailed</code> – The workflow execution closed due to a failure.</p> </li> <li> <p> <code>WorkflowExecutionSignaled</code> – An external signal was received for the workflow execution.</p> </li> <li> <p> <code>WorkflowExecutionStarted</code> – The workflow execution was started.</p> </li> <li> <p> <code>WorkflowExecutionTerminated</code> – The workflow execution was terminated.</p> </li> <li> <p> <code>WorkflowExecutionTimedOut</code> – The workflow execution was closed because a time out was exceeded.</p> </li> </ul></p>
1039#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1040#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1041pub struct HistoryEvent {
1042    /// <p>If the event is of type <code>ActivityTaskcancelRequested</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1043    #[serde(rename = "activityTaskCancelRequestedEventAttributes")]
1044    #[serde(skip_serializing_if = "Option::is_none")]
1045    pub activity_task_cancel_requested_event_attributes:
1046        Option<ActivityTaskCancelRequestedEventAttributes>,
1047    /// <p>If the event is of type <code>ActivityTaskCanceled</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1048    #[serde(rename = "activityTaskCanceledEventAttributes")]
1049    #[serde(skip_serializing_if = "Option::is_none")]
1050    pub activity_task_canceled_event_attributes: Option<ActivityTaskCanceledEventAttributes>,
1051    /// <p>If the event is of type <code>ActivityTaskCompleted</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1052    #[serde(rename = "activityTaskCompletedEventAttributes")]
1053    #[serde(skip_serializing_if = "Option::is_none")]
1054    pub activity_task_completed_event_attributes: Option<ActivityTaskCompletedEventAttributes>,
1055    /// <p>If the event is of type <code>ActivityTaskFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1056    #[serde(rename = "activityTaskFailedEventAttributes")]
1057    #[serde(skip_serializing_if = "Option::is_none")]
1058    pub activity_task_failed_event_attributes: Option<ActivityTaskFailedEventAttributes>,
1059    /// <p>If the event is of type <code>ActivityTaskScheduled</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1060    #[serde(rename = "activityTaskScheduledEventAttributes")]
1061    #[serde(skip_serializing_if = "Option::is_none")]
1062    pub activity_task_scheduled_event_attributes: Option<ActivityTaskScheduledEventAttributes>,
1063    /// <p>If the event is of type <code>ActivityTaskStarted</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1064    #[serde(rename = "activityTaskStartedEventAttributes")]
1065    #[serde(skip_serializing_if = "Option::is_none")]
1066    pub activity_task_started_event_attributes: Option<ActivityTaskStartedEventAttributes>,
1067    /// <p>If the event is of type <code>ActivityTaskTimedOut</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1068    #[serde(rename = "activityTaskTimedOutEventAttributes")]
1069    #[serde(skip_serializing_if = "Option::is_none")]
1070    pub activity_task_timed_out_event_attributes: Option<ActivityTaskTimedOutEventAttributes>,
1071    /// <p>If the event is of type <code>CancelTimerFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1072    #[serde(rename = "cancelTimerFailedEventAttributes")]
1073    #[serde(skip_serializing_if = "Option::is_none")]
1074    pub cancel_timer_failed_event_attributes: Option<CancelTimerFailedEventAttributes>,
1075    /// <p>If the event is of type <code>CancelWorkflowExecutionFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1076    #[serde(rename = "cancelWorkflowExecutionFailedEventAttributes")]
1077    #[serde(skip_serializing_if = "Option::is_none")]
1078    pub cancel_workflow_execution_failed_event_attributes:
1079        Option<CancelWorkflowExecutionFailedEventAttributes>,
1080    /// <p>If the event is of type <code>ChildWorkflowExecutionCanceled</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1081    #[serde(rename = "childWorkflowExecutionCanceledEventAttributes")]
1082    #[serde(skip_serializing_if = "Option::is_none")]
1083    pub child_workflow_execution_canceled_event_attributes:
1084        Option<ChildWorkflowExecutionCanceledEventAttributes>,
1085    /// <p>If the event is of type <code>ChildWorkflowExecutionCompleted</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1086    #[serde(rename = "childWorkflowExecutionCompletedEventAttributes")]
1087    #[serde(skip_serializing_if = "Option::is_none")]
1088    pub child_workflow_execution_completed_event_attributes:
1089        Option<ChildWorkflowExecutionCompletedEventAttributes>,
1090    /// <p>If the event is of type <code>ChildWorkflowExecutionFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1091    #[serde(rename = "childWorkflowExecutionFailedEventAttributes")]
1092    #[serde(skip_serializing_if = "Option::is_none")]
1093    pub child_workflow_execution_failed_event_attributes:
1094        Option<ChildWorkflowExecutionFailedEventAttributes>,
1095    /// <p>If the event is of type <code>ChildWorkflowExecutionStarted</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1096    #[serde(rename = "childWorkflowExecutionStartedEventAttributes")]
1097    #[serde(skip_serializing_if = "Option::is_none")]
1098    pub child_workflow_execution_started_event_attributes:
1099        Option<ChildWorkflowExecutionStartedEventAttributes>,
1100    /// <p>If the event is of type <code>ChildWorkflowExecutionTerminated</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1101    #[serde(rename = "childWorkflowExecutionTerminatedEventAttributes")]
1102    #[serde(skip_serializing_if = "Option::is_none")]
1103    pub child_workflow_execution_terminated_event_attributes:
1104        Option<ChildWorkflowExecutionTerminatedEventAttributes>,
1105    /// <p>If the event is of type <code>ChildWorkflowExecutionTimedOut</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1106    #[serde(rename = "childWorkflowExecutionTimedOutEventAttributes")]
1107    #[serde(skip_serializing_if = "Option::is_none")]
1108    pub child_workflow_execution_timed_out_event_attributes:
1109        Option<ChildWorkflowExecutionTimedOutEventAttributes>,
1110    /// <p>If the event is of type <code>CompleteWorkflowExecutionFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1111    #[serde(rename = "completeWorkflowExecutionFailedEventAttributes")]
1112    #[serde(skip_serializing_if = "Option::is_none")]
1113    pub complete_workflow_execution_failed_event_attributes:
1114        Option<CompleteWorkflowExecutionFailedEventAttributes>,
1115    /// <p>If the event is of type <code>ContinueAsNewWorkflowExecutionFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1116    #[serde(rename = "continueAsNewWorkflowExecutionFailedEventAttributes")]
1117    #[serde(skip_serializing_if = "Option::is_none")]
1118    pub continue_as_new_workflow_execution_failed_event_attributes:
1119        Option<ContinueAsNewWorkflowExecutionFailedEventAttributes>,
1120    /// <p>If the event is of type <code>DecisionTaskCompleted</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1121    #[serde(rename = "decisionTaskCompletedEventAttributes")]
1122    #[serde(skip_serializing_if = "Option::is_none")]
1123    pub decision_task_completed_event_attributes: Option<DecisionTaskCompletedEventAttributes>,
1124    /// <p>If the event is of type <code>DecisionTaskScheduled</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1125    #[serde(rename = "decisionTaskScheduledEventAttributes")]
1126    #[serde(skip_serializing_if = "Option::is_none")]
1127    pub decision_task_scheduled_event_attributes: Option<DecisionTaskScheduledEventAttributes>,
1128    /// <p>If the event is of type <code>DecisionTaskStarted</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1129    #[serde(rename = "decisionTaskStartedEventAttributes")]
1130    #[serde(skip_serializing_if = "Option::is_none")]
1131    pub decision_task_started_event_attributes: Option<DecisionTaskStartedEventAttributes>,
1132    /// <p>If the event is of type <code>DecisionTaskTimedOut</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1133    #[serde(rename = "decisionTaskTimedOutEventAttributes")]
1134    #[serde(skip_serializing_if = "Option::is_none")]
1135    pub decision_task_timed_out_event_attributes: Option<DecisionTaskTimedOutEventAttributes>,
1136    /// <p>The system generated ID of the event. This ID uniquely identifies the event with in the workflow execution history.</p>
1137    #[serde(rename = "eventId")]
1138    pub event_id: i64,
1139    /// <p>The date and time when the event occurred.</p>
1140    #[serde(rename = "eventTimestamp")]
1141    pub event_timestamp: f64,
1142    /// <p>The type of the history event.</p>
1143    #[serde(rename = "eventType")]
1144    pub event_type: String,
1145    /// <p>If the event is of type <code>ExternalWorkflowExecutionCancelRequested</code> then this member is set and provides detailed information about the event. It isn't set for other event types. </p>
1146    #[serde(rename = "externalWorkflowExecutionCancelRequestedEventAttributes")]
1147    #[serde(skip_serializing_if = "Option::is_none")]
1148    pub external_workflow_execution_cancel_requested_event_attributes:
1149        Option<ExternalWorkflowExecutionCancelRequestedEventAttributes>,
1150    /// <p>If the event is of type <code>ExternalWorkflowExecutionSignaled</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1151    #[serde(rename = "externalWorkflowExecutionSignaledEventAttributes")]
1152    #[serde(skip_serializing_if = "Option::is_none")]
1153    pub external_workflow_execution_signaled_event_attributes:
1154        Option<ExternalWorkflowExecutionSignaledEventAttributes>,
1155    /// <p>If the event is of type <code>FailWorkflowExecutionFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1156    #[serde(rename = "failWorkflowExecutionFailedEventAttributes")]
1157    #[serde(skip_serializing_if = "Option::is_none")]
1158    pub fail_workflow_execution_failed_event_attributes:
1159        Option<FailWorkflowExecutionFailedEventAttributes>,
1160    /// <p>Provides the details of the <code>LambdaFunctionCompleted</code> event. It isn't set for other event types.</p>
1161    #[serde(rename = "lambdaFunctionCompletedEventAttributes")]
1162    #[serde(skip_serializing_if = "Option::is_none")]
1163    pub lambda_function_completed_event_attributes: Option<LambdaFunctionCompletedEventAttributes>,
1164    /// <p>Provides the details of the <code>LambdaFunctionFailed</code> event. It isn't set for other event types.</p>
1165    #[serde(rename = "lambdaFunctionFailedEventAttributes")]
1166    #[serde(skip_serializing_if = "Option::is_none")]
1167    pub lambda_function_failed_event_attributes: Option<LambdaFunctionFailedEventAttributes>,
1168    /// <p>Provides the details of the <code>LambdaFunctionScheduled</code> event. It isn't set for other event types.</p>
1169    #[serde(rename = "lambdaFunctionScheduledEventAttributes")]
1170    #[serde(skip_serializing_if = "Option::is_none")]
1171    pub lambda_function_scheduled_event_attributes: Option<LambdaFunctionScheduledEventAttributes>,
1172    /// <p>Provides the details of the <code>LambdaFunctionStarted</code> event. It isn't set for other event types.</p>
1173    #[serde(rename = "lambdaFunctionStartedEventAttributes")]
1174    #[serde(skip_serializing_if = "Option::is_none")]
1175    pub lambda_function_started_event_attributes: Option<LambdaFunctionStartedEventAttributes>,
1176    /// <p>Provides the details of the <code>LambdaFunctionTimedOut</code> event. It isn't set for other event types.</p>
1177    #[serde(rename = "lambdaFunctionTimedOutEventAttributes")]
1178    #[serde(skip_serializing_if = "Option::is_none")]
1179    pub lambda_function_timed_out_event_attributes: Option<LambdaFunctionTimedOutEventAttributes>,
1180    /// <p>If the event is of type <code>MarkerRecorded</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1181    #[serde(rename = "markerRecordedEventAttributes")]
1182    #[serde(skip_serializing_if = "Option::is_none")]
1183    pub marker_recorded_event_attributes: Option<MarkerRecordedEventAttributes>,
1184    /// <p>If the event is of type <code>DecisionTaskFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1185    #[serde(rename = "recordMarkerFailedEventAttributes")]
1186    #[serde(skip_serializing_if = "Option::is_none")]
1187    pub record_marker_failed_event_attributes: Option<RecordMarkerFailedEventAttributes>,
1188    /// <p>If the event is of type <code>RequestCancelActivityTaskFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1189    #[serde(rename = "requestCancelActivityTaskFailedEventAttributes")]
1190    #[serde(skip_serializing_if = "Option::is_none")]
1191    pub request_cancel_activity_task_failed_event_attributes:
1192        Option<RequestCancelActivityTaskFailedEventAttributes>,
1193    /// <p>If the event is of type <code>RequestCancelExternalWorkflowExecutionFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1194    #[serde(rename = "requestCancelExternalWorkflowExecutionFailedEventAttributes")]
1195    #[serde(skip_serializing_if = "Option::is_none")]
1196    pub request_cancel_external_workflow_execution_failed_event_attributes:
1197        Option<RequestCancelExternalWorkflowExecutionFailedEventAttributes>,
1198    /// <p>If the event is of type <code>RequestCancelExternalWorkflowExecutionInitiated</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1199    #[serde(rename = "requestCancelExternalWorkflowExecutionInitiatedEventAttributes")]
1200    #[serde(skip_serializing_if = "Option::is_none")]
1201    pub request_cancel_external_workflow_execution_initiated_event_attributes:
1202        Option<RequestCancelExternalWorkflowExecutionInitiatedEventAttributes>,
1203    /// <p>If the event is of type <code>ScheduleActivityTaskFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1204    #[serde(rename = "scheduleActivityTaskFailedEventAttributes")]
1205    #[serde(skip_serializing_if = "Option::is_none")]
1206    pub schedule_activity_task_failed_event_attributes:
1207        Option<ScheduleActivityTaskFailedEventAttributes>,
1208    /// <p>Provides the details of the <code>ScheduleLambdaFunctionFailed</code> event. It isn't set for other event types.</p>
1209    #[serde(rename = "scheduleLambdaFunctionFailedEventAttributes")]
1210    #[serde(skip_serializing_if = "Option::is_none")]
1211    pub schedule_lambda_function_failed_event_attributes:
1212        Option<ScheduleLambdaFunctionFailedEventAttributes>,
1213    /// <p>If the event is of type <code>SignalExternalWorkflowExecutionFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1214    #[serde(rename = "signalExternalWorkflowExecutionFailedEventAttributes")]
1215    #[serde(skip_serializing_if = "Option::is_none")]
1216    pub signal_external_workflow_execution_failed_event_attributes:
1217        Option<SignalExternalWorkflowExecutionFailedEventAttributes>,
1218    /// <p>If the event is of type <code>SignalExternalWorkflowExecutionInitiated</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1219    #[serde(rename = "signalExternalWorkflowExecutionInitiatedEventAttributes")]
1220    #[serde(skip_serializing_if = "Option::is_none")]
1221    pub signal_external_workflow_execution_initiated_event_attributes:
1222        Option<SignalExternalWorkflowExecutionInitiatedEventAttributes>,
1223    /// <p>If the event is of type <code>StartChildWorkflowExecutionFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1224    #[serde(rename = "startChildWorkflowExecutionFailedEventAttributes")]
1225    #[serde(skip_serializing_if = "Option::is_none")]
1226    pub start_child_workflow_execution_failed_event_attributes:
1227        Option<StartChildWorkflowExecutionFailedEventAttributes>,
1228    /// <p>If the event is of type <code>StartChildWorkflowExecutionInitiated</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1229    #[serde(rename = "startChildWorkflowExecutionInitiatedEventAttributes")]
1230    #[serde(skip_serializing_if = "Option::is_none")]
1231    pub start_child_workflow_execution_initiated_event_attributes:
1232        Option<StartChildWorkflowExecutionInitiatedEventAttributes>,
1233    /// <p>Provides the details of the <code>StartLambdaFunctionFailed</code> event. It isn't set for other event types.</p>
1234    #[serde(rename = "startLambdaFunctionFailedEventAttributes")]
1235    #[serde(skip_serializing_if = "Option::is_none")]
1236    pub start_lambda_function_failed_event_attributes:
1237        Option<StartLambdaFunctionFailedEventAttributes>,
1238    /// <p>If the event is of type <code>StartTimerFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1239    #[serde(rename = "startTimerFailedEventAttributes")]
1240    #[serde(skip_serializing_if = "Option::is_none")]
1241    pub start_timer_failed_event_attributes: Option<StartTimerFailedEventAttributes>,
1242    /// <p>If the event is of type <code>TimerCanceled</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1243    #[serde(rename = "timerCanceledEventAttributes")]
1244    #[serde(skip_serializing_if = "Option::is_none")]
1245    pub timer_canceled_event_attributes: Option<TimerCanceledEventAttributes>,
1246    /// <p>If the event is of type <code>TimerFired</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1247    #[serde(rename = "timerFiredEventAttributes")]
1248    #[serde(skip_serializing_if = "Option::is_none")]
1249    pub timer_fired_event_attributes: Option<TimerFiredEventAttributes>,
1250    /// <p>If the event is of type <code>TimerStarted</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1251    #[serde(rename = "timerStartedEventAttributes")]
1252    #[serde(skip_serializing_if = "Option::is_none")]
1253    pub timer_started_event_attributes: Option<TimerStartedEventAttributes>,
1254    /// <p>If the event is of type <code>WorkflowExecutionCancelRequested</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1255    #[serde(rename = "workflowExecutionCancelRequestedEventAttributes")]
1256    #[serde(skip_serializing_if = "Option::is_none")]
1257    pub workflow_execution_cancel_requested_event_attributes:
1258        Option<WorkflowExecutionCancelRequestedEventAttributes>,
1259    /// <p>If the event is of type <code>WorkflowExecutionCanceled</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1260    #[serde(rename = "workflowExecutionCanceledEventAttributes")]
1261    #[serde(skip_serializing_if = "Option::is_none")]
1262    pub workflow_execution_canceled_event_attributes:
1263        Option<WorkflowExecutionCanceledEventAttributes>,
1264    /// <p>If the event is of type <code>WorkflowExecutionCompleted</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1265    #[serde(rename = "workflowExecutionCompletedEventAttributes")]
1266    #[serde(skip_serializing_if = "Option::is_none")]
1267    pub workflow_execution_completed_event_attributes:
1268        Option<WorkflowExecutionCompletedEventAttributes>,
1269    /// <p>If the event is of type <code>WorkflowExecutionContinuedAsNew</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1270    #[serde(rename = "workflowExecutionContinuedAsNewEventAttributes")]
1271    #[serde(skip_serializing_if = "Option::is_none")]
1272    pub workflow_execution_continued_as_new_event_attributes:
1273        Option<WorkflowExecutionContinuedAsNewEventAttributes>,
1274    /// <p>If the event is of type <code>WorkflowExecutionFailed</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1275    #[serde(rename = "workflowExecutionFailedEventAttributes")]
1276    #[serde(skip_serializing_if = "Option::is_none")]
1277    pub workflow_execution_failed_event_attributes: Option<WorkflowExecutionFailedEventAttributes>,
1278    /// <p>If the event is of type <code>WorkflowExecutionSignaled</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1279    #[serde(rename = "workflowExecutionSignaledEventAttributes")]
1280    #[serde(skip_serializing_if = "Option::is_none")]
1281    pub workflow_execution_signaled_event_attributes:
1282        Option<WorkflowExecutionSignaledEventAttributes>,
1283    /// <p>If the event is of type <code>WorkflowExecutionStarted</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1284    #[serde(rename = "workflowExecutionStartedEventAttributes")]
1285    #[serde(skip_serializing_if = "Option::is_none")]
1286    pub workflow_execution_started_event_attributes:
1287        Option<WorkflowExecutionStartedEventAttributes>,
1288    /// <p>If the event is of type <code>WorkflowExecutionTerminated</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1289    #[serde(rename = "workflowExecutionTerminatedEventAttributes")]
1290    #[serde(skip_serializing_if = "Option::is_none")]
1291    pub workflow_execution_terminated_event_attributes:
1292        Option<WorkflowExecutionTerminatedEventAttributes>,
1293    /// <p>If the event is of type <code>WorkflowExecutionTimedOut</code> then this member is set and provides detailed information about the event. It isn't set for other event types.</p>
1294    #[serde(rename = "workflowExecutionTimedOutEventAttributes")]
1295    #[serde(skip_serializing_if = "Option::is_none")]
1296    pub workflow_execution_timed_out_event_attributes:
1297        Option<WorkflowExecutionTimedOutEventAttributes>,
1298}
1299
1300/// <p>Provides the details of the <code>LambdaFunctionCompleted</code> event. It isn't set for other event types.</p>
1301#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1302#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1303pub struct LambdaFunctionCompletedEventAttributes {
1304    /// <p>The results of the Lambda task.</p>
1305    #[serde(rename = "result")]
1306    #[serde(skip_serializing_if = "Option::is_none")]
1307    pub result: Option<String>,
1308    /// <p>The ID of the <code>LambdaFunctionScheduled</code> event that was recorded when this Lambda task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
1309    #[serde(rename = "scheduledEventId")]
1310    pub scheduled_event_id: i64,
1311    /// <p>The ID of the <code>LambdaFunctionStarted</code> event recorded when this activity task started. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
1312    #[serde(rename = "startedEventId")]
1313    pub started_event_id: i64,
1314}
1315
1316/// <p>Provides the details of the <code>LambdaFunctionFailed</code> event. It isn't set for other event types.</p>
1317#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1318#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1319pub struct LambdaFunctionFailedEventAttributes {
1320    /// <p>The details of the failure.</p>
1321    #[serde(rename = "details")]
1322    #[serde(skip_serializing_if = "Option::is_none")]
1323    pub details: Option<String>,
1324    /// <p>The reason provided for the failure.</p>
1325    #[serde(rename = "reason")]
1326    #[serde(skip_serializing_if = "Option::is_none")]
1327    pub reason: Option<String>,
1328    /// <p>The ID of the <code>LambdaFunctionScheduled</code> event that was recorded when this activity task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
1329    #[serde(rename = "scheduledEventId")]
1330    pub scheduled_event_id: i64,
1331    /// <p>The ID of the <code>LambdaFunctionStarted</code> event recorded when this activity task started. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
1332    #[serde(rename = "startedEventId")]
1333    pub started_event_id: i64,
1334}
1335
1336/// <p>Provides the details of the <code>LambdaFunctionScheduled</code> event. It isn't set for other event types.</p>
1337#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1338#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1339pub struct LambdaFunctionScheduledEventAttributes {
1340    /// <p>Data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the Lambda task.</p>
1341    #[serde(rename = "control")]
1342    #[serde(skip_serializing_if = "Option::is_none")]
1343    pub control: Option<String>,
1344    /// <p>The ID of the <code>LambdaFunctionCompleted</code> event corresponding to the decision that resulted in scheduling this activity task. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
1345    #[serde(rename = "decisionTaskCompletedEventId")]
1346    pub decision_task_completed_event_id: i64,
1347    /// <p>The unique ID of the Lambda task.</p>
1348    #[serde(rename = "id")]
1349    pub id: String,
1350    /// <p>The input provided to the Lambda task.</p>
1351    #[serde(rename = "input")]
1352    #[serde(skip_serializing_if = "Option::is_none")]
1353    pub input: Option<String>,
1354    /// <p>The name of the Lambda function.</p>
1355    #[serde(rename = "name")]
1356    pub name: String,
1357    /// <p>The maximum amount of time a worker can take to process the Lambda task.</p>
1358    #[serde(rename = "startToCloseTimeout")]
1359    #[serde(skip_serializing_if = "Option::is_none")]
1360    pub start_to_close_timeout: Option<String>,
1361}
1362
1363/// <p>Provides the details of the <code>LambdaFunctionStarted</code> event. It isn't set for other event types.</p>
1364#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1365#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1366pub struct LambdaFunctionStartedEventAttributes {
1367    /// <p>The ID of the <code>LambdaFunctionScheduled</code> event that was recorded when this activity task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
1368    #[serde(rename = "scheduledEventId")]
1369    pub scheduled_event_id: i64,
1370}
1371
1372/// <p>Provides details of the <code>LambdaFunctionTimedOut</code> event.</p>
1373#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1374#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1375pub struct LambdaFunctionTimedOutEventAttributes {
1376    /// <p>The ID of the <code>LambdaFunctionScheduled</code> event that was recorded when this activity task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
1377    #[serde(rename = "scheduledEventId")]
1378    pub scheduled_event_id: i64,
1379    /// <p>The ID of the <code>ActivityTaskStarted</code> event that was recorded when this activity task started. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
1380    #[serde(rename = "startedEventId")]
1381    pub started_event_id: i64,
1382    /// <p>The type of the timeout that caused this event.</p>
1383    #[serde(rename = "timeoutType")]
1384    #[serde(skip_serializing_if = "Option::is_none")]
1385    pub timeout_type: Option<String>,
1386}
1387
1388#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1389#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1390pub struct ListActivityTypesInput {
1391    /// <p>The name of the domain in which the activity types have been registered.</p>
1392    #[serde(rename = "domain")]
1393    pub domain: String,
1394    /// <p>The maximum number of results that are returned per call. Use <code>nextPageToken</code> to obtain further pages of results. </p>
1395    #[serde(rename = "maximumPageSize")]
1396    #[serde(skip_serializing_if = "Option::is_none")]
1397    pub maximum_page_size: Option<i64>,
1398    /// <p>If specified, only lists the activity types that have this name.</p>
1399    #[serde(rename = "name")]
1400    #[serde(skip_serializing_if = "Option::is_none")]
1401    pub name: Option<String>,
1402    /// <p>If <code>NextPageToken</code> is returned there are more results available. The value of <code>NextPageToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 60 seconds. Using an expired pagination token will return a <code>400</code> error: "<code>Specified token has exceeded its maximum lifetime</code>". </p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call. </p>
1403    #[serde(rename = "nextPageToken")]
1404    #[serde(skip_serializing_if = "Option::is_none")]
1405    pub next_page_token: Option<String>,
1406    /// <p>Specifies the registration status of the activity types to list.</p>
1407    #[serde(rename = "registrationStatus")]
1408    pub registration_status: String,
1409    /// <p>When set to <code>true</code>, returns the results in reverse order. By default, the results are returned in ascending alphabetical order by <code>name</code> of the activity types.</p>
1410    #[serde(rename = "reverseOrder")]
1411    #[serde(skip_serializing_if = "Option::is_none")]
1412    pub reverse_order: Option<bool>,
1413}
1414
1415#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1416#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1417pub struct ListClosedWorkflowExecutionsInput {
1418    /// <p><p>If specified, only workflow executions that match this <i>close status</i> are listed. For example, if TERMINATED is specified, then only TERMINATED workflow executions are listed.</p> <note> <p> <code>closeStatusFilter</code>, <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
1419    #[serde(rename = "closeStatusFilter")]
1420    #[serde(skip_serializing_if = "Option::is_none")]
1421    pub close_status_filter: Option<CloseStatusFilter>,
1422    /// <p><p>If specified, the workflow executions are included in the returned results based on whether their close times are within the range specified by this filter. Also, if this parameter is specified, the returned results are ordered by their close times.</p> <note> <p> <code>startTimeFilter</code> and <code>closeTimeFilter</code> are mutually exclusive. You must specify one of these in a request but not both.</p> </note></p>
1423    #[serde(rename = "closeTimeFilter")]
1424    #[serde(skip_serializing_if = "Option::is_none")]
1425    pub close_time_filter: Option<ExecutionTimeFilter>,
1426    /// <p>The name of the domain that contains the workflow executions to list.</p>
1427    #[serde(rename = "domain")]
1428    pub domain: String,
1429    /// <p><p>If specified, only workflow executions matching the workflow ID specified in the filter are returned.</p> <note> <p> <code>closeStatusFilter</code>, <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
1430    #[serde(rename = "executionFilter")]
1431    #[serde(skip_serializing_if = "Option::is_none")]
1432    pub execution_filter: Option<WorkflowExecutionFilter>,
1433    /// <p>The maximum number of results that are returned per call. Use <code>nextPageToken</code> to obtain further pages of results. </p>
1434    #[serde(rename = "maximumPageSize")]
1435    #[serde(skip_serializing_if = "Option::is_none")]
1436    pub maximum_page_size: Option<i64>,
1437    /// <p>If <code>NextPageToken</code> is returned there are more results available. The value of <code>NextPageToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 60 seconds. Using an expired pagination token will return a <code>400</code> error: "<code>Specified token has exceeded its maximum lifetime</code>". </p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call. </p>
1438    #[serde(rename = "nextPageToken")]
1439    #[serde(skip_serializing_if = "Option::is_none")]
1440    pub next_page_token: Option<String>,
1441    /// <p>When set to <code>true</code>, returns the results in reverse order. By default the results are returned in descending order of the start or the close time of the executions.</p>
1442    #[serde(rename = "reverseOrder")]
1443    #[serde(skip_serializing_if = "Option::is_none")]
1444    pub reverse_order: Option<bool>,
1445    /// <p><p>If specified, the workflow executions are included in the returned results based on whether their start times are within the range specified by this filter. Also, if this parameter is specified, the returned results are ordered by their start times.</p> <note> <p> <code>startTimeFilter</code> and <code>closeTimeFilter</code> are mutually exclusive. You must specify one of these in a request but not both.</p> </note></p>
1446    #[serde(rename = "startTimeFilter")]
1447    #[serde(skip_serializing_if = "Option::is_none")]
1448    pub start_time_filter: Option<ExecutionTimeFilter>,
1449    /// <p><p>If specified, only executions that have the matching tag are listed.</p> <note> <p> <code>closeStatusFilter</code>, <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
1450    #[serde(rename = "tagFilter")]
1451    #[serde(skip_serializing_if = "Option::is_none")]
1452    pub tag_filter: Option<TagFilter>,
1453    /// <p><p>If specified, only executions of the type specified in the filter are returned.</p> <note> <p> <code>closeStatusFilter</code>, <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
1454    #[serde(rename = "typeFilter")]
1455    #[serde(skip_serializing_if = "Option::is_none")]
1456    pub type_filter: Option<WorkflowTypeFilter>,
1457}
1458
1459#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1460#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1461pub struct ListDomainsInput {
1462    /// <p>The maximum number of results that are returned per call. Use <code>nextPageToken</code> to obtain further pages of results. </p>
1463    #[serde(rename = "maximumPageSize")]
1464    #[serde(skip_serializing_if = "Option::is_none")]
1465    pub maximum_page_size: Option<i64>,
1466    /// <p>If <code>NextPageToken</code> is returned there are more results available. The value of <code>NextPageToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 60 seconds. Using an expired pagination token will return a <code>400</code> error: "<code>Specified token has exceeded its maximum lifetime</code>". </p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call. </p>
1467    #[serde(rename = "nextPageToken")]
1468    #[serde(skip_serializing_if = "Option::is_none")]
1469    pub next_page_token: Option<String>,
1470    /// <p>Specifies the registration status of the domains to list.</p>
1471    #[serde(rename = "registrationStatus")]
1472    pub registration_status: String,
1473    /// <p>When set to <code>true</code>, returns the results in reverse order. By default, the results are returned in ascending alphabetical order by <code>name</code> of the domains.</p>
1474    #[serde(rename = "reverseOrder")]
1475    #[serde(skip_serializing_if = "Option::is_none")]
1476    pub reverse_order: Option<bool>,
1477}
1478
1479#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1480#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1481pub struct ListOpenWorkflowExecutionsInput {
1482    /// <p>The name of the domain that contains the workflow executions to list.</p>
1483    #[serde(rename = "domain")]
1484    pub domain: String,
1485    /// <p><p>If specified, only workflow executions matching the workflow ID specified in the filter are returned.</p> <note> <p> <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
1486    #[serde(rename = "executionFilter")]
1487    #[serde(skip_serializing_if = "Option::is_none")]
1488    pub execution_filter: Option<WorkflowExecutionFilter>,
1489    /// <p>The maximum number of results that are returned per call. Use <code>nextPageToken</code> to obtain further pages of results. </p>
1490    #[serde(rename = "maximumPageSize")]
1491    #[serde(skip_serializing_if = "Option::is_none")]
1492    pub maximum_page_size: Option<i64>,
1493    /// <p>If <code>NextPageToken</code> is returned there are more results available. The value of <code>NextPageToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 60 seconds. Using an expired pagination token will return a <code>400</code> error: "<code>Specified token has exceeded its maximum lifetime</code>". </p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call. </p>
1494    #[serde(rename = "nextPageToken")]
1495    #[serde(skip_serializing_if = "Option::is_none")]
1496    pub next_page_token: Option<String>,
1497    /// <p>When set to <code>true</code>, returns the results in reverse order. By default the results are returned in descending order of the start time of the executions.</p>
1498    #[serde(rename = "reverseOrder")]
1499    #[serde(skip_serializing_if = "Option::is_none")]
1500    pub reverse_order: Option<bool>,
1501    /// <p>Workflow executions are included in the returned results based on whether their start times are within the range specified by this filter.</p>
1502    #[serde(rename = "startTimeFilter")]
1503    pub start_time_filter: ExecutionTimeFilter,
1504    /// <p><p>If specified, only executions that have the matching tag are listed.</p> <note> <p> <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
1505    #[serde(rename = "tagFilter")]
1506    #[serde(skip_serializing_if = "Option::is_none")]
1507    pub tag_filter: Option<TagFilter>,
1508    /// <p><p>If specified, only executions of the type specified in the filter are returned.</p> <note> <p> <code>executionFilter</code>, <code>typeFilter</code> and <code>tagFilter</code> are mutually exclusive. You can specify at most one of these in a request.</p> </note></p>
1509    #[serde(rename = "typeFilter")]
1510    #[serde(skip_serializing_if = "Option::is_none")]
1511    pub type_filter: Option<WorkflowTypeFilter>,
1512}
1513
1514#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1515#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1516pub struct ListTagsForResourceInput {
1517    /// <p>The Amazon Resource Name (ARN) for the Amazon SWF domain.</p>
1518    #[serde(rename = "resourceArn")]
1519    pub resource_arn: String,
1520}
1521
1522#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1523#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1524pub struct ListTagsForResourceOutput {
1525    /// <p>An array of tags associated with the domain.</p>
1526    #[serde(rename = "tags")]
1527    #[serde(skip_serializing_if = "Option::is_none")]
1528    pub tags: Option<Vec<ResourceTag>>,
1529}
1530
1531#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1532#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1533pub struct ListWorkflowTypesInput {
1534    /// <p>The name of the domain in which the workflow types have been registered.</p>
1535    #[serde(rename = "domain")]
1536    pub domain: String,
1537    /// <p>The maximum number of results that are returned per call. Use <code>nextPageToken</code> to obtain further pages of results. </p>
1538    #[serde(rename = "maximumPageSize")]
1539    #[serde(skip_serializing_if = "Option::is_none")]
1540    pub maximum_page_size: Option<i64>,
1541    /// <p>If specified, lists the workflow type with this name.</p>
1542    #[serde(rename = "name")]
1543    #[serde(skip_serializing_if = "Option::is_none")]
1544    pub name: Option<String>,
1545    /// <p>If <code>NextPageToken</code> is returned there are more results available. The value of <code>NextPageToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 60 seconds. Using an expired pagination token will return a <code>400</code> error: "<code>Specified token has exceeded its maximum lifetime</code>". </p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call. </p>
1546    #[serde(rename = "nextPageToken")]
1547    #[serde(skip_serializing_if = "Option::is_none")]
1548    pub next_page_token: Option<String>,
1549    /// <p>Specifies the registration status of the workflow types to list.</p>
1550    #[serde(rename = "registrationStatus")]
1551    pub registration_status: String,
1552    /// <p>When set to <code>true</code>, returns the results in reverse order. By default the results are returned in ascending alphabetical order of the <code>name</code> of the workflow types.</p>
1553    #[serde(rename = "reverseOrder")]
1554    #[serde(skip_serializing_if = "Option::is_none")]
1555    pub reverse_order: Option<bool>,
1556}
1557
1558/// <p>Provides the details of the <code>MarkerRecorded</code> event.</p>
1559#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1560#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1561pub struct MarkerRecordedEventAttributes {
1562    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>RecordMarker</code> decision that requested this marker. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
1563    #[serde(rename = "decisionTaskCompletedEventId")]
1564    pub decision_task_completed_event_id: i64,
1565    /// <p>The details of the marker.</p>
1566    #[serde(rename = "details")]
1567    #[serde(skip_serializing_if = "Option::is_none")]
1568    pub details: Option<String>,
1569    /// <p>The name of the marker.</p>
1570    #[serde(rename = "markerName")]
1571    pub marker_name: String,
1572}
1573
1574/// <p>Contains the count of tasks in a task list.</p>
1575#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1576#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1577pub struct PendingTaskCount {
1578    /// <p>The number of tasks in the task list.</p>
1579    #[serde(rename = "count")]
1580    pub count: i64,
1581    /// <p>If set to true, indicates that the actual count was more than the maximum supported by this API and the count returned is the truncated value.</p>
1582    #[serde(rename = "truncated")]
1583    #[serde(skip_serializing_if = "Option::is_none")]
1584    pub truncated: Option<bool>,
1585}
1586
1587#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1588#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1589pub struct PollForActivityTaskInput {
1590    /// <p>The name of the domain that contains the task lists being polled.</p>
1591    #[serde(rename = "domain")]
1592    pub domain: String,
1593    /// <p>Identity of the worker making the request, recorded in the <code>ActivityTaskStarted</code> event in the workflow history. This enables diagnostic tracing when problems arise. The form of this identity is user defined.</p>
1594    #[serde(rename = "identity")]
1595    #[serde(skip_serializing_if = "Option::is_none")]
1596    pub identity: Option<String>,
1597    /// <p>Specifies the task list to poll for activity tasks.</p> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not <i>be</i> the literal string <code>arn</code>.</p>
1598    #[serde(rename = "taskList")]
1599    pub task_list: TaskList,
1600}
1601
1602#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1603#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1604pub struct PollForDecisionTaskInput {
1605    /// <p>The name of the domain containing the task lists to poll.</p>
1606    #[serde(rename = "domain")]
1607    pub domain: String,
1608    /// <p>Identity of the decider making the request, which is recorded in the DecisionTaskStarted event in the workflow history. This enables diagnostic tracing when problems arise. The form of this identity is user defined.</p>
1609    #[serde(rename = "identity")]
1610    #[serde(skip_serializing_if = "Option::is_none")]
1611    pub identity: Option<String>,
1612    /// <p>The maximum number of results that are returned per call. Use <code>nextPageToken</code> to obtain further pages of results. </p> <p>This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum.</p>
1613    #[serde(rename = "maximumPageSize")]
1614    #[serde(skip_serializing_if = "Option::is_none")]
1615    pub maximum_page_size: Option<i64>,
1616    /// <p><p>If <code>NextPageToken</code> is returned there are more results available. The value of <code>NextPageToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 60 seconds. Using an expired pagination token will return a <code>400</code> error: &quot;<code>Specified token has exceeded its maximum lifetime</code>&quot;. </p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call. </p> <note> <p>The <code>nextPageToken</code> returned by this action cannot be used with <a>GetWorkflowExecutionHistory</a> to get the next page. You must call <a>PollForDecisionTask</a> again (with the <code>nextPageToken</code>) to retrieve the next page of history records. Calling <a>PollForDecisionTask</a> with a <code>nextPageToken</code> doesn&#39;t return a new decision task.</p> </note></p>
1617    #[serde(rename = "nextPageToken")]
1618    #[serde(skip_serializing_if = "Option::is_none")]
1619    pub next_page_token: Option<String>,
1620    /// <p>When set to <code>true</code>, returns the events in reverse order. By default the results are returned in ascending order of the <code>eventTimestamp</code> of the events.</p>
1621    #[serde(rename = "reverseOrder")]
1622    #[serde(skip_serializing_if = "Option::is_none")]
1623    pub reverse_order: Option<bool>,
1624    /// <p>Specifies the task list to poll for decision tasks.</p> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not <i>be</i> the literal string <code>arn</code>.</p>
1625    #[serde(rename = "taskList")]
1626    pub task_list: TaskList,
1627}
1628
1629#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1630#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1631pub struct RecordActivityTaskHeartbeatInput {
1632    /// <p>If specified, contains details about the progress of the task.</p>
1633    #[serde(rename = "details")]
1634    #[serde(skip_serializing_if = "Option::is_none")]
1635    pub details: Option<String>,
1636    /// <p><p>The <code>taskToken</code> of the <a>ActivityTask</a>.</p> <important> <p> <code>taskToken</code> is generated by the service and should be treated as an opaque value. If the task is passed to another process, its <code>taskToken</code> must also be passed. This enables it to provide its progress and respond with results. </p> </important></p>
1637    #[serde(rename = "taskToken")]
1638    pub task_token: String,
1639}
1640
1641/// <p>Provides the details of the <code>RecordMarker</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
1642#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1643#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1644pub struct RecordMarkerDecisionAttributes {
1645    /// <p> The details of the marker.</p>
1646    #[serde(rename = "details")]
1647    #[serde(skip_serializing_if = "Option::is_none")]
1648    pub details: Option<String>,
1649    /// <p> The name of the marker.</p>
1650    #[serde(rename = "markerName")]
1651    pub marker_name: String,
1652}
1653
1654/// <p>Provides the details of the <code>RecordMarkerFailed</code> event.</p>
1655#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1656#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1657pub struct RecordMarkerFailedEventAttributes {
1658    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
1659    #[serde(rename = "cause")]
1660    pub cause: String,
1661    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>RecordMarkerFailed</code> decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
1662    #[serde(rename = "decisionTaskCompletedEventId")]
1663    pub decision_task_completed_event_id: i64,
1664    /// <p>The marker's name.</p>
1665    #[serde(rename = "markerName")]
1666    pub marker_name: String,
1667}
1668
1669#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1670#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1671pub struct RegisterActivityTypeInput {
1672    /// <p>If set, specifies the default maximum time before which a worker processing a task of this type must report progress by calling <a>RecordActivityTaskHeartbeat</a>. If the timeout is exceeded, the activity task is automatically timed out. This default can be overridden when scheduling an activity task using the <code>ScheduleActivityTask</code> <a>Decision</a>. If the activity worker subsequently attempts to record a heartbeat or returns a result, the activity worker receives an <code>UnknownResource</code> fault. In this case, Amazon SWF no longer considers the activity task to be valid; the activity worker should clean up the activity task.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
1673    #[serde(rename = "defaultTaskHeartbeatTimeout")]
1674    #[serde(skip_serializing_if = "Option::is_none")]
1675    pub default_task_heartbeat_timeout: Option<String>,
1676    /// <p>If set, specifies the default task list to use for scheduling tasks of this activity type. This default task list is used if a task list isn't provided when a task is scheduled through the <code>ScheduleActivityTask</code> <a>Decision</a>.</p>
1677    #[serde(rename = "defaultTaskList")]
1678    #[serde(skip_serializing_if = "Option::is_none")]
1679    pub default_task_list: Option<TaskList>,
1680    /// <p>The default task priority to assign to the activity type. If not assigned, then <code>0</code> is used. Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>in the <i>Amazon SWF Developer Guide</i>.</i>.</p>
1681    #[serde(rename = "defaultTaskPriority")]
1682    #[serde(skip_serializing_if = "Option::is_none")]
1683    pub default_task_priority: Option<String>,
1684    /// <p>If set, specifies the default maximum duration for a task of this activity type. This default can be overridden when scheduling an activity task using the <code>ScheduleActivityTask</code> <a>Decision</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
1685    #[serde(rename = "defaultTaskScheduleToCloseTimeout")]
1686    #[serde(skip_serializing_if = "Option::is_none")]
1687    pub default_task_schedule_to_close_timeout: Option<String>,
1688    /// <p>If set, specifies the default maximum duration that a task of this activity type can wait before being assigned to a worker. This default can be overridden when scheduling an activity task using the <code>ScheduleActivityTask</code> <a>Decision</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
1689    #[serde(rename = "defaultTaskScheduleToStartTimeout")]
1690    #[serde(skip_serializing_if = "Option::is_none")]
1691    pub default_task_schedule_to_start_timeout: Option<String>,
1692    /// <p>If set, specifies the default maximum duration that a worker can take to process tasks of this activity type. This default can be overridden when scheduling an activity task using the <code>ScheduleActivityTask</code> <a>Decision</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
1693    #[serde(rename = "defaultTaskStartToCloseTimeout")]
1694    #[serde(skip_serializing_if = "Option::is_none")]
1695    pub default_task_start_to_close_timeout: Option<String>,
1696    /// <p>A textual description of the activity type.</p>
1697    #[serde(rename = "description")]
1698    #[serde(skip_serializing_if = "Option::is_none")]
1699    pub description: Option<String>,
1700    /// <p>The name of the domain in which this activity is to be registered.</p>
1701    #[serde(rename = "domain")]
1702    pub domain: String,
1703    /// <p>The name of the activity type within the domain.</p> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not <i>be</i> the literal string <code>arn</code>.</p>
1704    #[serde(rename = "name")]
1705    pub name: String,
1706    /// <p>The version of the activity type.</p> <note> <p>The activity type consists of the name and version, the combination of which must be unique within the domain.</p> </note> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not <i>be</i> the literal string <code>arn</code>.</p>
1707    #[serde(rename = "version")]
1708    pub version: String,
1709}
1710
1711#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1712#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1713pub struct RegisterDomainInput {
1714    /// <p>A text description of the domain.</p>
1715    #[serde(rename = "description")]
1716    #[serde(skip_serializing_if = "Option::is_none")]
1717    pub description: Option<String>,
1718    /// <p>Name of the domain to register. The name must be unique in the region that the domain is registered in.</p> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not <i>be</i> the literal string <code>arn</code>.</p>
1719    #[serde(rename = "name")]
1720    pub name: String,
1721    /// <p>Tags to be added when registering a domain.</p> <p>Tags may only contain unicode letters, digits, whitespace, or these symbols: <code>_ . : / = + - @</code>.</p>
1722    #[serde(rename = "tags")]
1723    #[serde(skip_serializing_if = "Option::is_none")]
1724    pub tags: Option<Vec<ResourceTag>>,
1725    /// <p>The duration (in days) that records and histories of workflow executions on the domain should be kept by the service. After the retention period, the workflow execution isn't available in the results of visibility calls.</p> <p>If you pass the value <code>NONE</code> or <code>0</code> (zero), then the workflow execution history isn't retained. As soon as the workflow execution completes, the execution record and its history are deleted.</p> <p>The maximum workflow execution retention period is 90 days. For more information about Amazon SWF service limits, see: <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-limits.html">Amazon SWF Service Limits</a> in the <i>Amazon SWF Developer Guide</i>.</p>
1726    #[serde(rename = "workflowExecutionRetentionPeriodInDays")]
1727    pub workflow_execution_retention_period_in_days: String,
1728}
1729
1730#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1731#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1732pub struct RegisterWorkflowTypeInput {
1733    /// <p><p>If set, specifies the default policy to use for the child workflow executions when a workflow execution of this type is terminated, by calling the <a>TerminateWorkflowExecution</a> action explicitly or due to an expired timeout. This default can be overridden when starting a workflow execution using the <a>StartWorkflowExecution</a> action or the <code>StartChildWorkflowExecution</code> <a>Decision</a>.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul></p>
1734    #[serde(rename = "defaultChildPolicy")]
1735    #[serde(skip_serializing_if = "Option::is_none")]
1736    pub default_child_policy: Option<String>,
1737    /// <p>If set, specifies the default maximum duration for executions of this workflow type. You can override this default when starting an execution through the <a>StartWorkflowExecution</a> Action or <code>StartChildWorkflowExecution</code> <a>Decision</a>.</p> <p>The duration is specified in seconds; an integer greater than or equal to 0. Unlike some of the other timeout parameters in Amazon SWF, you cannot specify a value of "NONE" for <code>defaultExecutionStartToCloseTimeout</code>; there is a one-year max limit on the time that a workflow execution can run. Exceeding this limit always causes the workflow execution to time out.</p>
1738    #[serde(rename = "defaultExecutionStartToCloseTimeout")]
1739    #[serde(skip_serializing_if = "Option::is_none")]
1740    pub default_execution_start_to_close_timeout: Option<String>,
1741    /// <p><p>The default IAM role attached to this workflow type.</p> <note> <p>Executions of this workflow type need IAM roles to invoke Lambda functions. If you don&#39;t specify an IAM role when you start this workflow type, the default Lambda role is attached to the execution. For more information, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html">https://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
1742    #[serde(rename = "defaultLambdaRole")]
1743    #[serde(skip_serializing_if = "Option::is_none")]
1744    pub default_lambda_role: Option<String>,
1745    /// <p>If set, specifies the default task list to use for scheduling decision tasks for executions of this workflow type. This default is used only if a task list isn't provided when starting the execution through the <a>StartWorkflowExecution</a> Action or <code>StartChildWorkflowExecution</code> <a>Decision</a>.</p>
1746    #[serde(rename = "defaultTaskList")]
1747    #[serde(skip_serializing_if = "Option::is_none")]
1748    pub default_task_list: Option<TaskList>,
1749    /// <p>The default task priority to assign to the workflow type. If not assigned, then <code>0</code> is used. Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
1750    #[serde(rename = "defaultTaskPriority")]
1751    #[serde(skip_serializing_if = "Option::is_none")]
1752    pub default_task_priority: Option<String>,
1753    /// <p>If set, specifies the default maximum duration of decision tasks for this workflow type. This default can be overridden when starting a workflow execution using the <a>StartWorkflowExecution</a> action or the <code>StartChildWorkflowExecution</code> <a>Decision</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
1754    #[serde(rename = "defaultTaskStartToCloseTimeout")]
1755    #[serde(skip_serializing_if = "Option::is_none")]
1756    pub default_task_start_to_close_timeout: Option<String>,
1757    /// <p>Textual description of the workflow type.</p>
1758    #[serde(rename = "description")]
1759    #[serde(skip_serializing_if = "Option::is_none")]
1760    pub description: Option<String>,
1761    /// <p>The name of the domain in which to register the workflow type.</p>
1762    #[serde(rename = "domain")]
1763    pub domain: String,
1764    /// <p>The name of the workflow type.</p> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not <i>be</i> the literal string <code>arn</code>.</p>
1765    #[serde(rename = "name")]
1766    pub name: String,
1767    /// <p>The version of the workflow type.</p> <note> <p>The workflow type consists of the name and version, the combination of which must be unique within the domain. To get a list of all currently registered workflow types, use the <a>ListWorkflowTypes</a> action.</p> </note> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not <i>be</i> the literal string <code>arn</code>.</p>
1768    #[serde(rename = "version")]
1769    pub version: String,
1770}
1771
1772/// <p>Provides the details of the <code>RequestCancelActivityTask</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
1773#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1774#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1775pub struct RequestCancelActivityTaskDecisionAttributes {
1776    /// <p>The <code>activityId</code> of the activity task to be canceled.</p>
1777    #[serde(rename = "activityId")]
1778    pub activity_id: String,
1779}
1780
1781/// <p>Provides the details of the <code>RequestCancelActivityTaskFailed</code> event.</p>
1782#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1783#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1784pub struct RequestCancelActivityTaskFailedEventAttributes {
1785    /// <p>The activityId provided in the <code>RequestCancelActivityTask</code> decision that failed.</p>
1786    #[serde(rename = "activityId")]
1787    pub activity_id: String,
1788    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
1789    #[serde(rename = "cause")]
1790    pub cause: String,
1791    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>RequestCancelActivityTask</code> decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
1792    #[serde(rename = "decisionTaskCompletedEventId")]
1793    pub decision_task_completed_event_id: i64,
1794}
1795
1796/// <p>Provides the details of the <code>RequestCancelExternalWorkflowExecution</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
1797#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1798#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1799pub struct RequestCancelExternalWorkflowExecutionDecisionAttributes {
1800    /// <p>The data attached to the event that can be used by the decider in subsequent workflow tasks.</p>
1801    #[serde(rename = "control")]
1802    #[serde(skip_serializing_if = "Option::is_none")]
1803    pub control: Option<String>,
1804    /// <p>The <code>runId</code> of the external workflow execution to cancel.</p>
1805    #[serde(rename = "runId")]
1806    #[serde(skip_serializing_if = "Option::is_none")]
1807    pub run_id: Option<String>,
1808    /// <p> The <code>workflowId</code> of the external workflow execution to cancel.</p>
1809    #[serde(rename = "workflowId")]
1810    pub workflow_id: String,
1811}
1812
1813/// <p>Provides the details of the <code>RequestCancelExternalWorkflowExecutionFailed</code> event.</p>
1814#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1815#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1816pub struct RequestCancelExternalWorkflowExecutionFailedEventAttributes {
1817    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
1818    #[serde(rename = "cause")]
1819    pub cause: String,
1820    /// <p>The data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the workflow execution.</p>
1821    #[serde(rename = "control")]
1822    #[serde(skip_serializing_if = "Option::is_none")]
1823    pub control: Option<String>,
1824    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>RequestCancelExternalWorkflowExecution</code> decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
1825    #[serde(rename = "decisionTaskCompletedEventId")]
1826    pub decision_task_completed_event_id: i64,
1827    /// <p>The ID of the <code>RequestCancelExternalWorkflowExecutionInitiated</code> event corresponding to the <code>RequestCancelExternalWorkflowExecution</code> decision to cancel this external workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
1828    #[serde(rename = "initiatedEventId")]
1829    pub initiated_event_id: i64,
1830    /// <p>The <code>runId</code> of the external workflow execution.</p>
1831    #[serde(rename = "runId")]
1832    #[serde(skip_serializing_if = "Option::is_none")]
1833    pub run_id: Option<String>,
1834    /// <p>The <code>workflowId</code> of the external workflow to which the cancel request was to be delivered.</p>
1835    #[serde(rename = "workflowId")]
1836    pub workflow_id: String,
1837}
1838
1839/// <p>Provides the details of the <code>RequestCancelExternalWorkflowExecutionInitiated</code> event.</p>
1840#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1841#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1842pub struct RequestCancelExternalWorkflowExecutionInitiatedEventAttributes {
1843    /// <p>Data attached to the event that can be used by the decider in subsequent workflow tasks.</p>
1844    #[serde(rename = "control")]
1845    #[serde(skip_serializing_if = "Option::is_none")]
1846    pub control: Option<String>,
1847    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>RequestCancelExternalWorkflowExecution</code> decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
1848    #[serde(rename = "decisionTaskCompletedEventId")]
1849    pub decision_task_completed_event_id: i64,
1850    /// <p>The <code>runId</code> of the external workflow execution to be canceled.</p>
1851    #[serde(rename = "runId")]
1852    #[serde(skip_serializing_if = "Option::is_none")]
1853    pub run_id: Option<String>,
1854    /// <p>The <code>workflowId</code> of the external workflow execution to be canceled.</p>
1855    #[serde(rename = "workflowId")]
1856    pub workflow_id: String,
1857}
1858
1859#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1860#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1861pub struct RequestCancelWorkflowExecutionInput {
1862    /// <p>The name of the domain containing the workflow execution to cancel.</p>
1863    #[serde(rename = "domain")]
1864    pub domain: String,
1865    /// <p>The runId of the workflow execution to cancel.</p>
1866    #[serde(rename = "runId")]
1867    #[serde(skip_serializing_if = "Option::is_none")]
1868    pub run_id: Option<String>,
1869    /// <p>The workflowId of the workflow execution to cancel.</p>
1870    #[serde(rename = "workflowId")]
1871    pub workflow_id: String,
1872}
1873
1874/// <p>Tags are key-value pairs that can be associated with Amazon SWF state machines and activities.</p> <p>Tags may only contain unicode letters, digits, whitespace, or these symbols: <code>_ . : / = + - @</code>.</p>
1875#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1876pub struct ResourceTag {
1877    /// <p>The key of a tag.</p>
1878    #[serde(rename = "key")]
1879    pub key: String,
1880    /// <p>The value of a tag.</p>
1881    #[serde(rename = "value")]
1882    #[serde(skip_serializing_if = "Option::is_none")]
1883    pub value: Option<String>,
1884}
1885
1886#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1887#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1888pub struct RespondActivityTaskCanceledInput {
1889    /// <p> Information about the cancellation.</p>
1890    #[serde(rename = "details")]
1891    #[serde(skip_serializing_if = "Option::is_none")]
1892    pub details: Option<String>,
1893    /// <p><p>The <code>taskToken</code> of the <a>ActivityTask</a>.</p> <important> <p> <code>taskToken</code> is generated by the service and should be treated as an opaque value. If the task is passed to another process, its <code>taskToken</code> must also be passed. This enables it to provide its progress and respond with results.</p> </important></p>
1894    #[serde(rename = "taskToken")]
1895    pub task_token: String,
1896}
1897
1898#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1899#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1900pub struct RespondActivityTaskCompletedInput {
1901    /// <p>The result of the activity task. It is a free form string that is implementation specific.</p>
1902    #[serde(rename = "result")]
1903    #[serde(skip_serializing_if = "Option::is_none")]
1904    pub result: Option<String>,
1905    /// <p><p>The <code>taskToken</code> of the <a>ActivityTask</a>.</p> <important> <p> <code>taskToken</code> is generated by the service and should be treated as an opaque value. If the task is passed to another process, its <code>taskToken</code> must also be passed. This enables it to provide its progress and respond with results.</p> </important></p>
1906    #[serde(rename = "taskToken")]
1907    pub task_token: String,
1908}
1909
1910#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1911#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1912pub struct RespondActivityTaskFailedInput {
1913    /// <p> Detailed information about the failure.</p>
1914    #[serde(rename = "details")]
1915    #[serde(skip_serializing_if = "Option::is_none")]
1916    pub details: Option<String>,
1917    /// <p>Description of the error that may assist in diagnostics.</p>
1918    #[serde(rename = "reason")]
1919    #[serde(skip_serializing_if = "Option::is_none")]
1920    pub reason: Option<String>,
1921    /// <p><p>The <code>taskToken</code> of the <a>ActivityTask</a>.</p> <important> <p> <code>taskToken</code> is generated by the service and should be treated as an opaque value. If the task is passed to another process, its <code>taskToken</code> must also be passed. This enables it to provide its progress and respond with results.</p> </important></p>
1922    #[serde(rename = "taskToken")]
1923    pub task_token: String,
1924}
1925
1926/// <p>Input data for a TaskCompleted response to a decision task.</p>
1927#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1928#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1929pub struct RespondDecisionTaskCompletedInput {
1930    /// <p>The list of decisions (possibly empty) made by the decider while processing this decision task. See the docs for the <a>Decision</a> structure for details.</p>
1931    #[serde(rename = "decisions")]
1932    #[serde(skip_serializing_if = "Option::is_none")]
1933    pub decisions: Option<Vec<Decision>>,
1934    /// <p>User defined context to add to workflow execution.</p>
1935    #[serde(rename = "executionContext")]
1936    #[serde(skip_serializing_if = "Option::is_none")]
1937    pub execution_context: Option<String>,
1938    /// <p><p>The <code>taskToken</code> from the <a>DecisionTask</a>.</p> <important> <p> <code>taskToken</code> is generated by the service and should be treated as an opaque value. If the task is passed to another process, its <code>taskToken</code> must also be passed. This enables it to provide its progress and respond with results.</p> </important></p>
1939    #[serde(rename = "taskToken")]
1940    pub task_token: String,
1941}
1942
1943/// <p>Specifies the <code>runId</code> of a workflow execution.</p>
1944#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1945#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1946pub struct Run {
1947    /// <p>The <code>runId</code> of a workflow execution. This ID is generated by the service and can be used to uniquely identify the workflow execution within a domain.</p>
1948    #[serde(rename = "runId")]
1949    #[serde(skip_serializing_if = "Option::is_none")]
1950    pub run_id: Option<String>,
1951}
1952
1953/// <p>Provides the details of the <code>ScheduleActivityTask</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>activityType.name</code> – String constraint. The key is <code>swf:activityType.name</code>.</p> </li> <li> <p> <code>activityType.version</code> – String constraint. The key is <code>swf:activityType.version</code>.</p> </li> <li> <p> <code>taskList</code> – String constraint. The key is <code>swf:taskList.name</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
1954#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1955#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1956pub struct ScheduleActivityTaskDecisionAttributes {
1957    /// <p> The <code>activityId</code> of the activity task.</p> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not contain the literal string <code>arn</code>.</p>
1958    #[serde(rename = "activityId")]
1959    pub activity_id: String,
1960    /// <p> The type of the activity task to schedule.</p>
1961    #[serde(rename = "activityType")]
1962    pub activity_type: ActivityType,
1963    /// <p>Data attached to the event that can be used by the decider in subsequent workflow tasks. This data isn't sent to the activity.</p>
1964    #[serde(rename = "control")]
1965    #[serde(skip_serializing_if = "Option::is_none")]
1966    pub control: Option<String>,
1967    /// <p>If set, specifies the maximum time before which a worker processing a task of this type must report progress by calling <a>RecordActivityTaskHeartbeat</a>. If the timeout is exceeded, the activity task is automatically timed out. If the worker subsequently attempts to record a heartbeat or returns a result, it is ignored. This overrides the default heartbeat timeout specified when registering the activity type using <a>RegisterActivityType</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
1968    #[serde(rename = "heartbeatTimeout")]
1969    #[serde(skip_serializing_if = "Option::is_none")]
1970    pub heartbeat_timeout: Option<String>,
1971    /// <p>The input provided to the activity task.</p>
1972    #[serde(rename = "input")]
1973    #[serde(skip_serializing_if = "Option::is_none")]
1974    pub input: Option<String>,
1975    /// <p><p>The maximum duration for this activity task.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p> <note> <p>A schedule-to-close timeout for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default schedule-to-close timeout was specified at registration time then a fault is returned.</p> </note></p>
1976    #[serde(rename = "scheduleToCloseTimeout")]
1977    #[serde(skip_serializing_if = "Option::is_none")]
1978    pub schedule_to_close_timeout: Option<String>,
1979    /// <p><p> If set, specifies the maximum duration the activity task can wait to be assigned to a worker. This overrides the default schedule-to-start timeout specified when registering the activity type using <a>RegisterActivityType</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p> <note> <p>A schedule-to-start timeout for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default schedule-to-start timeout was specified at registration time then a fault is returned.</p> </note></p>
1980    #[serde(rename = "scheduleToStartTimeout")]
1981    #[serde(skip_serializing_if = "Option::is_none")]
1982    pub schedule_to_start_timeout: Option<String>,
1983    /// <p><p>If set, specifies the maximum duration a worker may take to process this activity task. This overrides the default start-to-close timeout specified when registering the activity type using <a>RegisterActivityType</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p> <note> <p>A start-to-close timeout for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default start-to-close timeout was specified at registration time then a fault is returned.</p> </note></p>
1984    #[serde(rename = "startToCloseTimeout")]
1985    #[serde(skip_serializing_if = "Option::is_none")]
1986    pub start_to_close_timeout: Option<String>,
1987    /// <p>If set, specifies the name of the task list in which to schedule the activity task. If not specified, the <code>defaultTaskList</code> registered with the activity type is used.</p> <note> <p>A task list for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default task list was specified at registration time then a fault is returned.</p> </note> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not contain the literal string <code>arn</code>.</p>
1988    #[serde(rename = "taskList")]
1989    #[serde(skip_serializing_if = "Option::is_none")]
1990    pub task_list: Option<TaskList>,
1991    /// <p> If set, specifies the priority with which the activity task is to be assigned to a worker. This overrides the defaultTaskPriority specified when registering the activity type using <a>RegisterActivityType</a>. Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
1992    #[serde(rename = "taskPriority")]
1993    #[serde(skip_serializing_if = "Option::is_none")]
1994    pub task_priority: Option<String>,
1995}
1996
1997/// <p>Provides the details of the <code>ScheduleActivityTaskFailed</code> event.</p>
1998#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1999#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2000pub struct ScheduleActivityTaskFailedEventAttributes {
2001    /// <p>The activityId provided in the <code>ScheduleActivityTask</code> decision that failed.</p>
2002    #[serde(rename = "activityId")]
2003    pub activity_id: String,
2004    /// <p>The activity type provided in the <code>ScheduleActivityTask</code> decision that failed.</p>
2005    #[serde(rename = "activityType")]
2006    pub activity_type: ActivityType,
2007    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
2008    #[serde(rename = "cause")]
2009    pub cause: String,
2010    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision that resulted in the scheduling of this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2011    #[serde(rename = "decisionTaskCompletedEventId")]
2012    pub decision_task_completed_event_id: i64,
2013}
2014
2015/// <p>Decision attributes specified in <code>scheduleLambdaFunctionDecisionAttributes</code> within the list of decisions <code>decisions</code> passed to <a>RespondDecisionTaskCompleted</a>.</p>
2016#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2017#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2018pub struct ScheduleLambdaFunctionDecisionAttributes {
2019    /// <p>The data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the Lambda task.</p>
2020    #[serde(rename = "control")]
2021    #[serde(skip_serializing_if = "Option::is_none")]
2022    pub control: Option<String>,
2023    /// <p>A string that identifies the Lambda function execution in the event history.</p>
2024    #[serde(rename = "id")]
2025    pub id: String,
2026    /// <p>The optional input data to be supplied to the Lambda function.</p>
2027    #[serde(rename = "input")]
2028    #[serde(skip_serializing_if = "Option::is_none")]
2029    pub input: Option<String>,
2030    /// <p>The name, or ARN, of the Lambda function to schedule.</p>
2031    #[serde(rename = "name")]
2032    pub name: String,
2033    /// <p>The timeout value, in seconds, after which the Lambda function is considered to be failed once it has started. This can be any integer from 1-300 (1s-5m). If no value is supplied, than a default value of 300s is assumed.</p>
2034    #[serde(rename = "startToCloseTimeout")]
2035    #[serde(skip_serializing_if = "Option::is_none")]
2036    pub start_to_close_timeout: Option<String>,
2037}
2038
2039/// <p>Provides the details of the <code>ScheduleLambdaFunctionFailed</code> event. It isn't set for other event types.</p>
2040#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2041#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2042pub struct ScheduleLambdaFunctionFailedEventAttributes {
2043    /// <p><p>The cause of the failure. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
2044    #[serde(rename = "cause")]
2045    pub cause: String,
2046    /// <p>The ID of the <code>LambdaFunctionCompleted</code> event corresponding to the decision that resulted in scheduling this Lambda task. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
2047    #[serde(rename = "decisionTaskCompletedEventId")]
2048    pub decision_task_completed_event_id: i64,
2049    /// <p>The ID provided in the <code>ScheduleLambdaFunction</code> decision that failed. </p>
2050    #[serde(rename = "id")]
2051    pub id: String,
2052    /// <p>The name of the Lambda function.</p>
2053    #[serde(rename = "name")]
2054    pub name: String,
2055}
2056
2057/// <p>Provides the details of the <code>SignalExternalWorkflowExecution</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
2058#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2059#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2060pub struct SignalExternalWorkflowExecutionDecisionAttributes {
2061    /// <p>The data attached to the event that can be used by the decider in subsequent decision tasks.</p>
2062    #[serde(rename = "control")]
2063    #[serde(skip_serializing_if = "Option::is_none")]
2064    pub control: Option<String>,
2065    /// <p> The input data to be provided with the signal. The target workflow execution uses the signal name and input data to process the signal.</p>
2066    #[serde(rename = "input")]
2067    #[serde(skip_serializing_if = "Option::is_none")]
2068    pub input: Option<String>,
2069    /// <p>The <code>runId</code> of the workflow execution to be signaled.</p>
2070    #[serde(rename = "runId")]
2071    #[serde(skip_serializing_if = "Option::is_none")]
2072    pub run_id: Option<String>,
2073    /// <p> The name of the signal.The target workflow execution uses the signal name and input to process the signal.</p>
2074    #[serde(rename = "signalName")]
2075    pub signal_name: String,
2076    /// <p> The <code>workflowId</code> of the workflow execution to be signaled.</p>
2077    #[serde(rename = "workflowId")]
2078    pub workflow_id: String,
2079}
2080
2081/// <p>Provides the details of the <code>SignalExternalWorkflowExecutionFailed</code> event.</p>
2082#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2083#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2084pub struct SignalExternalWorkflowExecutionFailedEventAttributes {
2085    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
2086    #[serde(rename = "cause")]
2087    pub cause: String,
2088    /// <p>The data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the workflow execution.</p>
2089    #[serde(rename = "control")]
2090    #[serde(skip_serializing_if = "Option::is_none")]
2091    pub control: Option<String>,
2092    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>SignalExternalWorkflowExecution</code> decision for this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2093    #[serde(rename = "decisionTaskCompletedEventId")]
2094    pub decision_task_completed_event_id: i64,
2095    /// <p>The ID of the <code>SignalExternalWorkflowExecutionInitiated</code> event corresponding to the <code>SignalExternalWorkflowExecution</code> decision to request this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2096    #[serde(rename = "initiatedEventId")]
2097    pub initiated_event_id: i64,
2098    /// <p>The <code>runId</code> of the external workflow execution that the signal was being delivered to.</p>
2099    #[serde(rename = "runId")]
2100    #[serde(skip_serializing_if = "Option::is_none")]
2101    pub run_id: Option<String>,
2102    /// <p>The <code>workflowId</code> of the external workflow execution that the signal was being delivered to.</p>
2103    #[serde(rename = "workflowId")]
2104    pub workflow_id: String,
2105}
2106
2107/// <p>Provides the details of the <code>SignalExternalWorkflowExecutionInitiated</code> event.</p>
2108#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2109#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2110pub struct SignalExternalWorkflowExecutionInitiatedEventAttributes {
2111    /// <p>Data attached to the event that can be used by the decider in subsequent decision tasks.</p>
2112    #[serde(rename = "control")]
2113    #[serde(skip_serializing_if = "Option::is_none")]
2114    pub control: Option<String>,
2115    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>SignalExternalWorkflowExecution</code> decision for this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2116    #[serde(rename = "decisionTaskCompletedEventId")]
2117    pub decision_task_completed_event_id: i64,
2118    /// <p>The input provided to the signal.</p>
2119    #[serde(rename = "input")]
2120    #[serde(skip_serializing_if = "Option::is_none")]
2121    pub input: Option<String>,
2122    /// <p>The <code>runId</code> of the external workflow execution to send the signal to.</p>
2123    #[serde(rename = "runId")]
2124    #[serde(skip_serializing_if = "Option::is_none")]
2125    pub run_id: Option<String>,
2126    /// <p>The name of the signal.</p>
2127    #[serde(rename = "signalName")]
2128    pub signal_name: String,
2129    /// <p>The <code>workflowId</code> of the external workflow execution.</p>
2130    #[serde(rename = "workflowId")]
2131    pub workflow_id: String,
2132}
2133
2134#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2135#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2136pub struct SignalWorkflowExecutionInput {
2137    /// <p>The name of the domain containing the workflow execution to signal.</p>
2138    #[serde(rename = "domain")]
2139    pub domain: String,
2140    /// <p>Data to attach to the <code>WorkflowExecutionSignaled</code> event in the target workflow execution's history.</p>
2141    #[serde(rename = "input")]
2142    #[serde(skip_serializing_if = "Option::is_none")]
2143    pub input: Option<String>,
2144    /// <p>The runId of the workflow execution to signal.</p>
2145    #[serde(rename = "runId")]
2146    #[serde(skip_serializing_if = "Option::is_none")]
2147    pub run_id: Option<String>,
2148    /// <p>The name of the signal. This name must be meaningful to the target workflow.</p>
2149    #[serde(rename = "signalName")]
2150    pub signal_name: String,
2151    /// <p>The workflowId of the workflow execution to signal.</p>
2152    #[serde(rename = "workflowId")]
2153    pub workflow_id: String,
2154}
2155
2156/// <p>Provides the details of the <code>StartChildWorkflowExecution</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagList.member.N</code> – The key is "swf:tagList.N" where N is the tag number from 0 to 4, inclusive.</p> </li> <li> <p> <code>taskList</code> – String constraint. The key is <code>swf:taskList.name</code>.</p> </li> <li> <p> <code>workflowType.name</code> – String constraint. The key is <code>swf:workflowType.name</code>.</p> </li> <li> <p> <code>workflowType.version</code> – String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
2157#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2158#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2159pub struct StartChildWorkflowExecutionDecisionAttributes {
2160    /// <p><p> If set, specifies the policy to use for the child workflow executions if the workflow execution being started is terminated by calling the <a>TerminateWorkflowExecution</a> action explicitly or due to an expired timeout. This policy overrides the default child policy specified when registering the workflow type using <a>RegisterWorkflowType</a>.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul> <note> <p>A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault is returned.</p> </note></p>
2161    #[serde(rename = "childPolicy")]
2162    #[serde(skip_serializing_if = "Option::is_none")]
2163    pub child_policy: Option<String>,
2164    /// <p>The data attached to the event that can be used by the decider in subsequent workflow tasks. This data isn't sent to the child workflow execution.</p>
2165    #[serde(rename = "control")]
2166    #[serde(skip_serializing_if = "Option::is_none")]
2167    pub control: Option<String>,
2168    /// <p><p>The total duration for this workflow execution. This overrides the defaultExecutionStartToCloseTimeout specified when registering the workflow type.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p> <note> <p>An execution start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default execution start-to-close timeout was specified at registration time then a fault is returned.</p> </note></p>
2169    #[serde(rename = "executionStartToCloseTimeout")]
2170    #[serde(skip_serializing_if = "Option::is_none")]
2171    pub execution_start_to_close_timeout: Option<String>,
2172    /// <p>The input to be provided to the workflow execution.</p>
2173    #[serde(rename = "input")]
2174    #[serde(skip_serializing_if = "Option::is_none")]
2175    pub input: Option<String>,
2176    /// <p>The IAM role attached to the child workflow execution.</p>
2177    #[serde(rename = "lambdaRole")]
2178    #[serde(skip_serializing_if = "Option::is_none")]
2179    pub lambda_role: Option<String>,
2180    /// <p>The list of tags to associate with the child workflow execution. A maximum of 5 tags can be specified. You can list workflow executions with a specific tag by calling <a>ListOpenWorkflowExecutions</a> or <a>ListClosedWorkflowExecutions</a> and specifying a <a>TagFilter</a>.</p>
2181    #[serde(rename = "tagList")]
2182    #[serde(skip_serializing_if = "Option::is_none")]
2183    pub tag_list: Option<Vec<String>>,
2184    /// <p>The name of the task list to be used for decision tasks of the child workflow execution.</p> <note> <p>A task list for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task list was specified at registration time then a fault is returned.</p> </note> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not contain the literal string <code>arn</code>.</p>
2185    #[serde(rename = "taskList")]
2186    #[serde(skip_serializing_if = "Option::is_none")]
2187    pub task_list: Option<TaskList>,
2188    /// <p> A task priority that, if set, specifies the priority for a decision task of this workflow execution. This overrides the defaultTaskPriority specified when registering the workflow type. Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
2189    #[serde(rename = "taskPriority")]
2190    #[serde(skip_serializing_if = "Option::is_none")]
2191    pub task_priority: Option<String>,
2192    /// <p><p>Specifies the maximum duration of decision tasks for this workflow execution. This parameter overrides the <code>defaultTaskStartToCloseTimout</code> specified when registering the workflow type using <a>RegisterWorkflowType</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p> <note> <p>A task start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task start-to-close timeout was specified at registration time then a fault is returned.</p> </note></p>
2193    #[serde(rename = "taskStartToCloseTimeout")]
2194    #[serde(skip_serializing_if = "Option::is_none")]
2195    pub task_start_to_close_timeout: Option<String>,
2196    /// <p> The <code>workflowId</code> of the workflow execution.</p> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not contain the literal string <code>arn</code>.</p>
2197    #[serde(rename = "workflowId")]
2198    pub workflow_id: String,
2199    /// <p> The type of the workflow execution to be started.</p>
2200    #[serde(rename = "workflowType")]
2201    pub workflow_type: WorkflowType,
2202}
2203
2204/// <p>Provides the details of the <code>StartChildWorkflowExecutionFailed</code> event.</p>
2205#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2206#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2207pub struct StartChildWorkflowExecutionFailedEventAttributes {
2208    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>When <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision fails because it lacks sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html"> Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
2209    #[serde(rename = "cause")]
2210    pub cause: String,
2211    /// <p>The data attached to the event that the decider can use in subsequent workflow tasks. This data isn't sent to the child workflow execution.</p>
2212    #[serde(rename = "control")]
2213    #[serde(skip_serializing_if = "Option::is_none")]
2214    pub control: Option<String>,
2215    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>StartChildWorkflowExecution</code> <a>Decision</a> to request this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events.</p>
2216    #[serde(rename = "decisionTaskCompletedEventId")]
2217    pub decision_task_completed_event_id: i64,
2218    /// <p>When the <code>cause</code> is <code>WORKFLOW_ALREADY_RUNNING</code>, <code>initiatedEventId</code> is the ID of the <code>StartChildWorkflowExecutionInitiated</code> event that corresponds to the <code>StartChildWorkflowExecution</code> <a>Decision</a> to start the workflow execution. You can use this information to diagnose problems by tracing back the chain of events leading up to this event.</p> <p>When the <code>cause</code> isn't <code>WORKFLOW_ALREADY_RUNNING</code>, <code>initiatedEventId</code> is set to <code>0</code> because the <code>StartChildWorkflowExecutionInitiated</code> event doesn't exist.</p>
2219    #[serde(rename = "initiatedEventId")]
2220    pub initiated_event_id: i64,
2221    /// <p>The <code>workflowId</code> of the child workflow execution.</p>
2222    #[serde(rename = "workflowId")]
2223    pub workflow_id: String,
2224    /// <p>The workflow type provided in the <code>StartChildWorkflowExecution</code> <a>Decision</a> that failed.</p>
2225    #[serde(rename = "workflowType")]
2226    pub workflow_type: WorkflowType,
2227}
2228
2229/// <p>Provides the details of the <code>StartChildWorkflowExecutionInitiated</code> event.</p>
2230#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2231#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2232pub struct StartChildWorkflowExecutionInitiatedEventAttributes {
2233    /// <p><p>The policy to use for the child workflow executions if this execution gets terminated by explicitly calling the <a>TerminateWorkflowExecution</a> action or due to an expired timeout.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul></p>
2234    #[serde(rename = "childPolicy")]
2235    pub child_policy: String,
2236    /// <p>Data attached to the event that can be used by the decider in subsequent decision tasks. This data isn't sent to the activity.</p>
2237    #[serde(rename = "control")]
2238    #[serde(skip_serializing_if = "Option::is_none")]
2239    pub control: Option<String>,
2240    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>StartChildWorkflowExecution</code> <a>Decision</a> to request this child workflow execution. This information can be useful for diagnosing problems by tracing back the cause of events.</p>
2241    #[serde(rename = "decisionTaskCompletedEventId")]
2242    pub decision_task_completed_event_id: i64,
2243    /// <p>The maximum duration for the child workflow execution. If the workflow execution isn't closed within this duration, it is timed out and force-terminated.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2244    #[serde(rename = "executionStartToCloseTimeout")]
2245    #[serde(skip_serializing_if = "Option::is_none")]
2246    pub execution_start_to_close_timeout: Option<String>,
2247    /// <p>The inputs provided to the child workflow execution.</p>
2248    #[serde(rename = "input")]
2249    #[serde(skip_serializing_if = "Option::is_none")]
2250    pub input: Option<String>,
2251    /// <p>The IAM role to attach to the child workflow execution.</p>
2252    #[serde(rename = "lambdaRole")]
2253    #[serde(skip_serializing_if = "Option::is_none")]
2254    pub lambda_role: Option<String>,
2255    /// <p>The list of tags to associated with the child workflow execution.</p>
2256    #[serde(rename = "tagList")]
2257    #[serde(skip_serializing_if = "Option::is_none")]
2258    pub tag_list: Option<Vec<String>>,
2259    /// <p>The name of the task list used for the decision tasks of the child workflow execution.</p>
2260    #[serde(rename = "taskList")]
2261    pub task_list: TaskList,
2262    /// <p> The priority assigned for the decision tasks for this workflow execution. Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
2263    #[serde(rename = "taskPriority")]
2264    #[serde(skip_serializing_if = "Option::is_none")]
2265    pub task_priority: Option<String>,
2266    /// <p>The maximum duration allowed for the decision tasks for this workflow execution.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2267    #[serde(rename = "taskStartToCloseTimeout")]
2268    #[serde(skip_serializing_if = "Option::is_none")]
2269    pub task_start_to_close_timeout: Option<String>,
2270    /// <p>The <code>workflowId</code> of the child workflow execution.</p>
2271    #[serde(rename = "workflowId")]
2272    pub workflow_id: String,
2273    /// <p>The type of the child workflow execution.</p>
2274    #[serde(rename = "workflowType")]
2275    pub workflow_type: WorkflowType,
2276}
2277
2278/// <p>Provides the details of the <code>StartLambdaFunctionFailed</code> event. It isn't set for other event types.</p>
2279#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2280#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2281pub struct StartLambdaFunctionFailedEventAttributes {
2282    /// <p><p>The cause of the failure. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because the IAM role attached to the execution lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html">Lambda Tasks</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
2283    #[serde(rename = "cause")]
2284    #[serde(skip_serializing_if = "Option::is_none")]
2285    pub cause: Option<String>,
2286    /// <p>A description that can help diagnose the cause of the fault.</p>
2287    #[serde(rename = "message")]
2288    #[serde(skip_serializing_if = "Option::is_none")]
2289    pub message: Option<String>,
2290    /// <p>The ID of the <code>ActivityTaskScheduled</code> event that was recorded when this activity task was scheduled. To help diagnose issues, use this information to trace back the chain of events leading up to this event.</p>
2291    #[serde(rename = "scheduledEventId")]
2292    #[serde(skip_serializing_if = "Option::is_none")]
2293    pub scheduled_event_id: Option<i64>,
2294}
2295
2296/// <p>Provides the details of the <code>StartTimer</code> decision.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this decision's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
2297#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2298#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2299pub struct StartTimerDecisionAttributes {
2300    /// <p>The data attached to the event that can be used by the decider in subsequent workflow tasks.</p>
2301    #[serde(rename = "control")]
2302    #[serde(skip_serializing_if = "Option::is_none")]
2303    pub control: Option<String>,
2304    /// <p> The duration to wait before firing the timer.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>.</p>
2305    #[serde(rename = "startToFireTimeout")]
2306    pub start_to_fire_timeout: String,
2307    /// <p> The unique ID of the timer.</p> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not contain the literal string <code>arn</code>.</p>
2308    #[serde(rename = "timerId")]
2309    pub timer_id: String,
2310}
2311
2312/// <p>Provides the details of the <code>StartTimerFailed</code> event.</p>
2313#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2314#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2315pub struct StartTimerFailedEventAttributes {
2316    /// <p><p>The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.</p> <note> <p>If <code>cause</code> is set to <code>OPERATION<em>NOT</em>PERMITTED</code>, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
2317    #[serde(rename = "cause")]
2318    pub cause: String,
2319    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>StartTimer</code> decision for this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2320    #[serde(rename = "decisionTaskCompletedEventId")]
2321    pub decision_task_completed_event_id: i64,
2322    /// <p>The timerId provided in the <code>StartTimer</code> decision that failed.</p>
2323    #[serde(rename = "timerId")]
2324    pub timer_id: String,
2325}
2326
2327#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2328#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2329pub struct StartWorkflowExecutionInput {
2330    /// <p><p>If set, specifies the policy to use for the child workflow executions of this workflow execution if it is terminated, by calling the <a>TerminateWorkflowExecution</a> action explicitly or due to an expired timeout. This policy overrides the default child policy specified when registering the workflow type using <a>RegisterWorkflowType</a>.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul> <note> <p>A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault is returned.</p> </note></p>
2331    #[serde(rename = "childPolicy")]
2332    #[serde(skip_serializing_if = "Option::is_none")]
2333    pub child_policy: Option<String>,
2334    /// <p>The name of the domain in which the workflow execution is created.</p>
2335    #[serde(rename = "domain")]
2336    pub domain: String,
2337    /// <p><p>The total duration for this workflow execution. This overrides the defaultExecutionStartToCloseTimeout specified when registering the workflow type.</p> <p>The duration is specified in seconds; an integer greater than or equal to <code>0</code>. Exceeding this limit causes the workflow execution to time out. Unlike some of the other timeout parameters in Amazon SWF, you cannot specify a value of &quot;NONE&quot; for this timeout; there is a one-year max limit on the time that a workflow execution can run.</p> <note> <p>An execution start-to-close timeout must be specified either through this parameter or as a default when the workflow type is registered. If neither this parameter nor a default execution start-to-close timeout is specified, a fault is returned.</p> </note></p>
2338    #[serde(rename = "executionStartToCloseTimeout")]
2339    #[serde(skip_serializing_if = "Option::is_none")]
2340    pub execution_start_to_close_timeout: Option<String>,
2341    /// <p>The input for the workflow execution. This is a free form string which should be meaningful to the workflow you are starting. This <code>input</code> is made available to the new workflow execution in the <code>WorkflowExecutionStarted</code> history event.</p>
2342    #[serde(rename = "input")]
2343    #[serde(skip_serializing_if = "Option::is_none")]
2344    pub input: Option<String>,
2345    /// <p><p>The IAM role to attach to this workflow execution.</p> <note> <p>Executions of this workflow type need IAM roles to invoke Lambda functions. If you don&#39;t attach an IAM role, any attempt to schedule a Lambda task fails. This results in a <code>ScheduleLambdaFunctionFailed</code> history event. For more information, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html">https://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
2346    #[serde(rename = "lambdaRole")]
2347    #[serde(skip_serializing_if = "Option::is_none")]
2348    pub lambda_role: Option<String>,
2349    /// <p>The list of tags to associate with the workflow execution. You can specify a maximum of 5 tags. You can list workflow executions with a specific tag by calling <a>ListOpenWorkflowExecutions</a> or <a>ListClosedWorkflowExecutions</a> and specifying a <a>TagFilter</a>.</p>
2350    #[serde(rename = "tagList")]
2351    #[serde(skip_serializing_if = "Option::is_none")]
2352    pub tag_list: Option<Vec<String>>,
2353    /// <p>The task list to use for the decision tasks generated for this workflow execution. This overrides the <code>defaultTaskList</code> specified when registering the workflow type.</p> <note> <p>A task list for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task list was specified at registration time then a fault is returned.</p> </note> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not <i>be</i> the literal string <code>arn</code>.</p>
2354    #[serde(rename = "taskList")]
2355    #[serde(skip_serializing_if = "Option::is_none")]
2356    pub task_list: Option<TaskList>,
2357    /// <p>The task priority to use for this workflow execution. This overrides any default priority that was assigned when the workflow type was registered. If not set, then the default task priority for the workflow type is used. Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
2358    #[serde(rename = "taskPriority")]
2359    #[serde(skip_serializing_if = "Option::is_none")]
2360    pub task_priority: Option<String>,
2361    /// <p><p>Specifies the maximum duration of decision tasks for this workflow execution. This parameter overrides the <code>defaultTaskStartToCloseTimout</code> specified when registering the workflow type using <a>RegisterWorkflowType</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p> <note> <p>A task start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task start-to-close timeout was specified at registration time then a fault is returned.</p> </note></p>
2362    #[serde(rename = "taskStartToCloseTimeout")]
2363    #[serde(skip_serializing_if = "Option::is_none")]
2364    pub task_start_to_close_timeout: Option<String>,
2365    /// <p>The user defined identifier associated with the workflow execution. You can use this to associate a custom identifier with the workflow execution. You may specify the same identifier if a workflow execution is logically a <i>restart</i> of a previous execution. You cannot have two open workflow executions with the same <code>workflowId</code> at the same time within the same domain.</p> <p>The specified string must not start or end with whitespace. It must not contain a <code>:</code> (colon), <code>/</code> (slash), <code>|</code> (vertical bar), or any control characters (<code>\u0000-\u001f</code> | <code>\u007f-\u009f</code>). Also, it must not <i>be</i> the literal string <code>arn</code>.</p>
2366    #[serde(rename = "workflowId")]
2367    pub workflow_id: String,
2368    /// <p>The type of the workflow to start.</p>
2369    #[serde(rename = "workflowType")]
2370    pub workflow_type: WorkflowType,
2371}
2372
2373/// <p>Used to filter the workflow executions in visibility APIs based on a tag.</p>
2374#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2375#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2376pub struct TagFilter {
2377    /// <p> Specifies the tag that must be associated with the execution for it to meet the filter criteria.</p> <p>Tags may only contain unicode letters, digits, whitespace, or these symbols: <code>_ . : / = + - @</code>.</p>
2378    #[serde(rename = "tag")]
2379    pub tag: String,
2380}
2381
2382#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2383#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2384pub struct TagResourceInput {
2385    /// <p>The Amazon Resource Name (ARN) for the Amazon SWF domain.</p>
2386    #[serde(rename = "resourceArn")]
2387    pub resource_arn: String,
2388    /// <p>The list of tags to add to a domain. </p> <p>Tags may only contain unicode letters, digits, whitespace, or these symbols: <code>_ . : / = + - @</code>.</p>
2389    #[serde(rename = "tags")]
2390    pub tags: Vec<ResourceTag>,
2391}
2392
2393/// <p>Represents a task list.</p>
2394#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2395pub struct TaskList {
2396    /// <p>The name of the task list.</p>
2397    #[serde(rename = "name")]
2398    pub name: String,
2399}
2400
2401#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2402#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2403pub struct TerminateWorkflowExecutionInput {
2404    /// <p><p>If set, specifies the policy to use for the child workflow executions of the workflow execution being terminated. This policy overrides the child policy specified for the workflow execution at registration time or when starting the execution.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul> <note> <p>A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault is returned.</p> </note></p>
2405    #[serde(rename = "childPolicy")]
2406    #[serde(skip_serializing_if = "Option::is_none")]
2407    pub child_policy: Option<String>,
2408    /// <p> Details for terminating the workflow execution.</p>
2409    #[serde(rename = "details")]
2410    #[serde(skip_serializing_if = "Option::is_none")]
2411    pub details: Option<String>,
2412    /// <p>The domain of the workflow execution to terminate.</p>
2413    #[serde(rename = "domain")]
2414    pub domain: String,
2415    /// <p> A descriptive reason for terminating the workflow execution.</p>
2416    #[serde(rename = "reason")]
2417    #[serde(skip_serializing_if = "Option::is_none")]
2418    pub reason: Option<String>,
2419    /// <p>The runId of the workflow execution to terminate.</p>
2420    #[serde(rename = "runId")]
2421    #[serde(skip_serializing_if = "Option::is_none")]
2422    pub run_id: Option<String>,
2423    /// <p>The workflowId of the workflow execution to terminate.</p>
2424    #[serde(rename = "workflowId")]
2425    pub workflow_id: String,
2426}
2427
2428/// <p> Provides the details of the <code>TimerCanceled</code> event. </p>
2429#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2430#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2431pub struct TimerCanceledEventAttributes {
2432    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>CancelTimer</code> decision to cancel this timer. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2433    #[serde(rename = "decisionTaskCompletedEventId")]
2434    pub decision_task_completed_event_id: i64,
2435    /// <p>The ID of the <code>TimerStarted</code> event that was recorded when this timer was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2436    #[serde(rename = "startedEventId")]
2437    pub started_event_id: i64,
2438    /// <p>The unique ID of the timer that was canceled.</p>
2439    #[serde(rename = "timerId")]
2440    pub timer_id: String,
2441}
2442
2443/// <p>Provides the details of the <code>TimerFired</code> event.</p>
2444#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2445#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2446pub struct TimerFiredEventAttributes {
2447    /// <p>The ID of the <code>TimerStarted</code> event that was recorded when this timer was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2448    #[serde(rename = "startedEventId")]
2449    pub started_event_id: i64,
2450    /// <p>The unique ID of the timer that fired.</p>
2451    #[serde(rename = "timerId")]
2452    pub timer_id: String,
2453}
2454
2455/// <p>Provides the details of the <code>TimerStarted</code> event.</p>
2456#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2457#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2458pub struct TimerStartedEventAttributes {
2459    /// <p>Data attached to the event that can be used by the decider in subsequent workflow tasks.</p>
2460    #[serde(rename = "control")]
2461    #[serde(skip_serializing_if = "Option::is_none")]
2462    pub control: Option<String>,
2463    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>StartTimer</code> decision for this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2464    #[serde(rename = "decisionTaskCompletedEventId")]
2465    pub decision_task_completed_event_id: i64,
2466    /// <p>The duration of time after which the timer fires.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>.</p>
2467    #[serde(rename = "startToFireTimeout")]
2468    pub start_to_fire_timeout: String,
2469    /// <p>The unique ID of the timer that was started.</p>
2470    #[serde(rename = "timerId")]
2471    pub timer_id: String,
2472}
2473
2474#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2475#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2476pub struct UndeprecateActivityTypeInput {
2477    /// <p>The activity type to undeprecate.</p>
2478    #[serde(rename = "activityType")]
2479    pub activity_type: ActivityType,
2480    /// <p>The name of the domain of the deprecated activity type.</p>
2481    #[serde(rename = "domain")]
2482    pub domain: String,
2483}
2484
2485#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2486#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2487pub struct UndeprecateDomainInput {
2488    /// <p>The name of the domain of the deprecated workflow type.</p>
2489    #[serde(rename = "name")]
2490    pub name: String,
2491}
2492
2493#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2494#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2495pub struct UndeprecateWorkflowTypeInput {
2496    /// <p>The name of the domain of the deprecated workflow type.</p>
2497    #[serde(rename = "domain")]
2498    pub domain: String,
2499    /// <p>The name of the domain of the deprecated workflow type.</p>
2500    #[serde(rename = "workflowType")]
2501    pub workflow_type: WorkflowType,
2502}
2503
2504#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2505#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2506pub struct UntagResourceInput {
2507    /// <p>The Amazon Resource Name (ARN) for the Amazon SWF domain.</p>
2508    #[serde(rename = "resourceArn")]
2509    pub resource_arn: String,
2510    /// <p>The list of tags to remove from the Amazon SWF domain.</p>
2511    #[serde(rename = "tagKeys")]
2512    pub tag_keys: Vec<String>,
2513}
2514
2515/// <p>Represents a workflow execution.</p>
2516#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2517pub struct WorkflowExecution {
2518    /// <p>A system-generated unique identifier for the workflow execution.</p>
2519    #[serde(rename = "runId")]
2520    pub run_id: String,
2521    /// <p>The user defined identifier associated with the workflow execution.</p>
2522    #[serde(rename = "workflowId")]
2523    pub workflow_id: String,
2524}
2525
2526/// <p>Provides the details of the <code>WorkflowExecutionCancelRequested</code> event.</p>
2527#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2528#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2529pub struct WorkflowExecutionCancelRequestedEventAttributes {
2530    /// <p>If set, indicates that the request to cancel the workflow execution was automatically generated, and specifies the cause. This happens if the parent workflow execution times out or is terminated, and the child policy is set to cancel child executions.</p>
2531    #[serde(rename = "cause")]
2532    #[serde(skip_serializing_if = "Option::is_none")]
2533    pub cause: Option<String>,
2534    /// <p>The ID of the <code>RequestCancelExternalWorkflowExecutionInitiated</code> event corresponding to the <code>RequestCancelExternalWorkflowExecution</code> decision to cancel this workflow execution.The source event with this ID can be found in the history of the source workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2535    #[serde(rename = "externalInitiatedEventId")]
2536    #[serde(skip_serializing_if = "Option::is_none")]
2537    pub external_initiated_event_id: Option<i64>,
2538    /// <p>The external workflow execution for which the cancellation was requested.</p>
2539    #[serde(rename = "externalWorkflowExecution")]
2540    #[serde(skip_serializing_if = "Option::is_none")]
2541    pub external_workflow_execution: Option<WorkflowExecution>,
2542}
2543
2544/// <p>Provides the details of the <code>WorkflowExecutionCanceled</code> event.</p>
2545#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2546#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2547pub struct WorkflowExecutionCanceledEventAttributes {
2548    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>CancelWorkflowExecution</code> decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2549    #[serde(rename = "decisionTaskCompletedEventId")]
2550    pub decision_task_completed_event_id: i64,
2551    /// <p>The details of the cancellation.</p>
2552    #[serde(rename = "details")]
2553    #[serde(skip_serializing_if = "Option::is_none")]
2554    pub details: Option<String>,
2555}
2556
2557/// <p>Provides the details of the <code>WorkflowExecutionCompleted</code> event.</p>
2558#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2559#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2560pub struct WorkflowExecutionCompletedEventAttributes {
2561    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>CompleteWorkflowExecution</code> decision to complete this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2562    #[serde(rename = "decisionTaskCompletedEventId")]
2563    pub decision_task_completed_event_id: i64,
2564    /// <p>The result produced by the workflow execution upon successful completion.</p>
2565    #[serde(rename = "result")]
2566    #[serde(skip_serializing_if = "Option::is_none")]
2567    pub result: Option<String>,
2568}
2569
2570/// <p>The configuration settings for a workflow execution including timeout values, tasklist etc. These configuration settings are determined from the defaults specified when registering the workflow type and those specified when starting the workflow execution.</p>
2571#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2572#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2573pub struct WorkflowExecutionConfiguration {
2574    /// <p><p>The policy to use for the child workflow executions if this workflow execution is terminated, by calling the <a>TerminateWorkflowExecution</a> action explicitly or due to an expired timeout.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul></p>
2575    #[serde(rename = "childPolicy")]
2576    pub child_policy: String,
2577    /// <p>The total duration for this workflow execution.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2578    #[serde(rename = "executionStartToCloseTimeout")]
2579    pub execution_start_to_close_timeout: String,
2580    /// <p>The IAM role attached to the child workflow execution.</p>
2581    #[serde(rename = "lambdaRole")]
2582    #[serde(skip_serializing_if = "Option::is_none")]
2583    pub lambda_role: Option<String>,
2584    /// <p>The task list used for the decision tasks generated for this workflow execution.</p>
2585    #[serde(rename = "taskList")]
2586    pub task_list: TaskList,
2587    /// <p>The priority assigned to decision tasks for this workflow execution. Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
2588    #[serde(rename = "taskPriority")]
2589    #[serde(skip_serializing_if = "Option::is_none")]
2590    pub task_priority: Option<String>,
2591    /// <p>The maximum duration allowed for decision tasks for this workflow execution.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2592    #[serde(rename = "taskStartToCloseTimeout")]
2593    pub task_start_to_close_timeout: String,
2594}
2595
2596/// <p>Provides the details of the <code>WorkflowExecutionContinuedAsNew</code> event.</p>
2597#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2598#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2599pub struct WorkflowExecutionContinuedAsNewEventAttributes {
2600    /// <p><p>The policy to use for the child workflow executions of the new execution if it is terminated by calling the <a>TerminateWorkflowExecution</a> action explicitly or due to an expired timeout.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul></p>
2601    #[serde(rename = "childPolicy")]
2602    pub child_policy: String,
2603    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>ContinueAsNewWorkflowExecution</code> decision that started this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2604    #[serde(rename = "decisionTaskCompletedEventId")]
2605    pub decision_task_completed_event_id: i64,
2606    /// <p>The total duration allowed for the new workflow execution.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2607    #[serde(rename = "executionStartToCloseTimeout")]
2608    #[serde(skip_serializing_if = "Option::is_none")]
2609    pub execution_start_to_close_timeout: Option<String>,
2610    /// <p>The input provided to the new workflow execution.</p>
2611    #[serde(rename = "input")]
2612    #[serde(skip_serializing_if = "Option::is_none")]
2613    pub input: Option<String>,
2614    /// <p>The IAM role to attach to the new (continued) workflow execution.</p>
2615    #[serde(rename = "lambdaRole")]
2616    #[serde(skip_serializing_if = "Option::is_none")]
2617    pub lambda_role: Option<String>,
2618    /// <p>The <code>runId</code> of the new workflow execution.</p>
2619    #[serde(rename = "newExecutionRunId")]
2620    pub new_execution_run_id: String,
2621    /// <p>The list of tags associated with the new workflow execution.</p>
2622    #[serde(rename = "tagList")]
2623    #[serde(skip_serializing_if = "Option::is_none")]
2624    pub tag_list: Option<Vec<String>>,
2625    /// <p>The task list to use for the decisions of the new (continued) workflow execution.</p>
2626    #[serde(rename = "taskList")]
2627    pub task_list: TaskList,
2628    /// <p>The priority of the task to use for the decisions of the new (continued) workflow execution.</p>
2629    #[serde(rename = "taskPriority")]
2630    #[serde(skip_serializing_if = "Option::is_none")]
2631    pub task_priority: Option<String>,
2632    /// <p>The maximum duration of decision tasks for the new workflow execution.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2633    #[serde(rename = "taskStartToCloseTimeout")]
2634    #[serde(skip_serializing_if = "Option::is_none")]
2635    pub task_start_to_close_timeout: Option<String>,
2636    /// <p>The workflow type of this execution.</p>
2637    #[serde(rename = "workflowType")]
2638    pub workflow_type: WorkflowType,
2639}
2640
2641/// <p>Contains the count of workflow executions returned from <a>CountOpenWorkflowExecutions</a> or <a>CountClosedWorkflowExecutions</a> </p>
2642#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2643#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2644pub struct WorkflowExecutionCount {
2645    /// <p>The number of workflow executions.</p>
2646    #[serde(rename = "count")]
2647    pub count: i64,
2648    /// <p>If set to true, indicates that the actual count was more than the maximum supported by this API and the count returned is the truncated value.</p>
2649    #[serde(rename = "truncated")]
2650    #[serde(skip_serializing_if = "Option::is_none")]
2651    pub truncated: Option<bool>,
2652}
2653
2654/// <p>Contains details about a workflow execution.</p>
2655#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2656#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2657pub struct WorkflowExecutionDetail {
2658    /// <p>The configuration settings for this workflow execution including timeout values, tasklist etc.</p>
2659    #[serde(rename = "executionConfiguration")]
2660    pub execution_configuration: WorkflowExecutionConfiguration,
2661    /// <p>Information about the workflow execution.</p>
2662    #[serde(rename = "executionInfo")]
2663    pub execution_info: WorkflowExecutionInfo,
2664    /// <p>The time when the last activity task was scheduled for this workflow execution. You can use this information to determine if the workflow has not made progress for an unusually long period of time and might require a corrective action.</p>
2665    #[serde(rename = "latestActivityTaskTimestamp")]
2666    #[serde(skip_serializing_if = "Option::is_none")]
2667    pub latest_activity_task_timestamp: Option<f64>,
2668    /// <p>The latest executionContext provided by the decider for this workflow execution. A decider can provide an executionContext (a free-form string) when closing a decision task using <a>RespondDecisionTaskCompleted</a>.</p>
2669    #[serde(rename = "latestExecutionContext")]
2670    #[serde(skip_serializing_if = "Option::is_none")]
2671    pub latest_execution_context: Option<String>,
2672    /// <p>The number of tasks for this workflow execution. This includes open and closed tasks of all types.</p>
2673    #[serde(rename = "openCounts")]
2674    pub open_counts: WorkflowExecutionOpenCounts,
2675}
2676
2677/// <p>Provides the details of the <code>WorkflowExecutionFailed</code> event.</p>
2678#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2679#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2680pub struct WorkflowExecutionFailedEventAttributes {
2681    /// <p>The ID of the <code>DecisionTaskCompleted</code> event corresponding to the decision task that resulted in the <code>FailWorkflowExecution</code> decision to fail this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2682    #[serde(rename = "decisionTaskCompletedEventId")]
2683    pub decision_task_completed_event_id: i64,
2684    /// <p>The details of the failure.</p>
2685    #[serde(rename = "details")]
2686    #[serde(skip_serializing_if = "Option::is_none")]
2687    pub details: Option<String>,
2688    /// <p>The descriptive reason provided for the failure.</p>
2689    #[serde(rename = "reason")]
2690    #[serde(skip_serializing_if = "Option::is_none")]
2691    pub reason: Option<String>,
2692}
2693
2694/// <p>Used to filter the workflow executions in visibility APIs by their <code>workflowId</code>.</p>
2695#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2696#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2697pub struct WorkflowExecutionFilter {
2698    /// <p>The workflowId to pass of match the criteria of this filter.</p>
2699    #[serde(rename = "workflowId")]
2700    pub workflow_id: String,
2701}
2702
2703/// <p>Contains information about a workflow execution.</p>
2704#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2705#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2706pub struct WorkflowExecutionInfo {
2707    /// <p>Set to true if a cancellation is requested for this workflow execution.</p>
2708    #[serde(rename = "cancelRequested")]
2709    #[serde(skip_serializing_if = "Option::is_none")]
2710    pub cancel_requested: Option<bool>,
2711    /// <p><p>If the execution status is closed then this specifies how the execution was closed:</p> <ul> <li> <p> <code>COMPLETED</code> – the execution was successfully completed.</p> </li> <li> <p> <code>CANCELED</code> – the execution was canceled.Cancellation allows the implementation to gracefully clean up before the execution is closed.</p> </li> <li> <p> <code>TERMINATED</code> – the execution was force terminated.</p> </li> <li> <p> <code>FAILED</code> – the execution failed to complete.</p> </li> <li> <p> <code>TIMED<em>OUT</code> – the execution did not complete in the alloted time and was automatically timed out.</p> </li> <li> <p> <code>CONTINUED</em>AS_NEW</code> – the execution is logically continued. This means the current execution was completed and a new execution was started to carry on the workflow.</p> </li> </ul></p>
2712    #[serde(rename = "closeStatus")]
2713    #[serde(skip_serializing_if = "Option::is_none")]
2714    pub close_status: Option<String>,
2715    /// <p>The time when the workflow execution was closed. Set only if the execution status is CLOSED.</p>
2716    #[serde(rename = "closeTimestamp")]
2717    #[serde(skip_serializing_if = "Option::is_none")]
2718    pub close_timestamp: Option<f64>,
2719    /// <p>The workflow execution this information is about.</p>
2720    #[serde(rename = "execution")]
2721    pub execution: WorkflowExecution,
2722    /// <p>The current status of the execution.</p>
2723    #[serde(rename = "executionStatus")]
2724    pub execution_status: String,
2725    /// <p>If this workflow execution is a child of another execution then contains the workflow execution that started this execution.</p>
2726    #[serde(rename = "parent")]
2727    #[serde(skip_serializing_if = "Option::is_none")]
2728    pub parent: Option<WorkflowExecution>,
2729    /// <p>The time when the execution was started.</p>
2730    #[serde(rename = "startTimestamp")]
2731    pub start_timestamp: f64,
2732    /// <p>The list of tags associated with the workflow execution. Tags can be used to identify and list workflow executions of interest through the visibility APIs. A workflow execution can have a maximum of 5 tags.</p>
2733    #[serde(rename = "tagList")]
2734    #[serde(skip_serializing_if = "Option::is_none")]
2735    pub tag_list: Option<Vec<String>>,
2736    /// <p>The type of the workflow execution.</p>
2737    #[serde(rename = "workflowType")]
2738    pub workflow_type: WorkflowType,
2739}
2740
2741/// <p>Contains a paginated list of information about workflow executions.</p>
2742#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2743#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2744pub struct WorkflowExecutionInfos {
2745    /// <p>The list of workflow information structures.</p>
2746    #[serde(rename = "executionInfos")]
2747    pub execution_infos: Vec<WorkflowExecutionInfo>,
2748    /// <p>If a <code>NextPageToken</code> was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in <code>nextPageToken</code>. Keep all other arguments unchanged.</p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call.</p>
2749    #[serde(rename = "nextPageToken")]
2750    #[serde(skip_serializing_if = "Option::is_none")]
2751    pub next_page_token: Option<String>,
2752}
2753
2754/// <p>Contains the counts of open tasks, child workflow executions and timers for a workflow execution.</p>
2755#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2756#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2757pub struct WorkflowExecutionOpenCounts {
2758    /// <p>The count of activity tasks whose status is <code>OPEN</code>.</p>
2759    #[serde(rename = "openActivityTasks")]
2760    pub open_activity_tasks: i64,
2761    /// <p>The count of child workflow executions whose status is <code>OPEN</code>.</p>
2762    #[serde(rename = "openChildWorkflowExecutions")]
2763    pub open_child_workflow_executions: i64,
2764    /// <p>The count of decision tasks whose status is OPEN. A workflow execution can have at most one open decision task.</p>
2765    #[serde(rename = "openDecisionTasks")]
2766    pub open_decision_tasks: i64,
2767    /// <p>The count of Lambda tasks whose status is <code>OPEN</code>.</p>
2768    #[serde(rename = "openLambdaFunctions")]
2769    #[serde(skip_serializing_if = "Option::is_none")]
2770    pub open_lambda_functions: Option<i64>,
2771    /// <p>The count of timers started by this workflow execution that have not fired yet.</p>
2772    #[serde(rename = "openTimers")]
2773    pub open_timers: i64,
2774}
2775
2776/// <p>Provides the details of the <code>WorkflowExecutionSignaled</code> event.</p>
2777#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2778#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2779pub struct WorkflowExecutionSignaledEventAttributes {
2780    /// <p>The ID of the <code>SignalExternalWorkflowExecutionInitiated</code> event corresponding to the <code>SignalExternalWorkflow</code> decision to signal this workflow execution.The source event with this ID can be found in the history of the source workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. This field is set only if the signal was initiated by another workflow execution.</p>
2781    #[serde(rename = "externalInitiatedEventId")]
2782    #[serde(skip_serializing_if = "Option::is_none")]
2783    pub external_initiated_event_id: Option<i64>,
2784    /// <p>The workflow execution that sent the signal. This is set only of the signal was sent by another workflow execution.</p>
2785    #[serde(rename = "externalWorkflowExecution")]
2786    #[serde(skip_serializing_if = "Option::is_none")]
2787    pub external_workflow_execution: Option<WorkflowExecution>,
2788    /// <p>The inputs provided with the signal. The decider can use the signal name and inputs to determine how to process the signal.</p>
2789    #[serde(rename = "input")]
2790    #[serde(skip_serializing_if = "Option::is_none")]
2791    pub input: Option<String>,
2792    /// <p>The name of the signal received. The decider can use the signal name and inputs to determine how to the process the signal.</p>
2793    #[serde(rename = "signalName")]
2794    pub signal_name: String,
2795}
2796
2797/// <p>Provides details of <code>WorkflowExecutionStarted</code> event.</p>
2798#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2799#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2800pub struct WorkflowExecutionStartedEventAttributes {
2801    /// <p><p>The policy to use for the child workflow executions if this workflow execution is terminated, by calling the <a>TerminateWorkflowExecution</a> action explicitly or due to an expired timeout.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul></p>
2802    #[serde(rename = "childPolicy")]
2803    pub child_policy: String,
2804    /// <p>If this workflow execution was started due to a <code>ContinueAsNewWorkflowExecution</code> decision, then it contains the <code>runId</code> of the previous workflow execution that was closed and continued as this execution.</p>
2805    #[serde(rename = "continuedExecutionRunId")]
2806    #[serde(skip_serializing_if = "Option::is_none")]
2807    pub continued_execution_run_id: Option<String>,
2808    /// <p>The maximum duration for this workflow execution.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2809    #[serde(rename = "executionStartToCloseTimeout")]
2810    #[serde(skip_serializing_if = "Option::is_none")]
2811    pub execution_start_to_close_timeout: Option<String>,
2812    /// <p>The input provided to the workflow execution.</p>
2813    #[serde(rename = "input")]
2814    #[serde(skip_serializing_if = "Option::is_none")]
2815    pub input: Option<String>,
2816    /// <p>The IAM role attached to the workflow execution.</p>
2817    #[serde(rename = "lambdaRole")]
2818    #[serde(skip_serializing_if = "Option::is_none")]
2819    pub lambda_role: Option<String>,
2820    /// <p>The ID of the <code>StartChildWorkflowExecutionInitiated</code> event corresponding to the <code>StartChildWorkflowExecution</code> <a>Decision</a> to start this workflow execution. The source event with this ID can be found in the history of the source workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.</p>
2821    #[serde(rename = "parentInitiatedEventId")]
2822    #[serde(skip_serializing_if = "Option::is_none")]
2823    pub parent_initiated_event_id: Option<i64>,
2824    /// <p>The source workflow execution that started this workflow execution. The member isn't set if the workflow execution was not started by a workflow.</p>
2825    #[serde(rename = "parentWorkflowExecution")]
2826    #[serde(skip_serializing_if = "Option::is_none")]
2827    pub parent_workflow_execution: Option<WorkflowExecution>,
2828    /// <p>The list of tags associated with this workflow execution. An execution can have up to 5 tags.</p>
2829    #[serde(rename = "tagList")]
2830    #[serde(skip_serializing_if = "Option::is_none")]
2831    pub tag_list: Option<Vec<String>>,
2832    /// <p>The name of the task list for scheduling the decision tasks for this workflow execution.</p>
2833    #[serde(rename = "taskList")]
2834    pub task_list: TaskList,
2835    /// <p>The priority of the decision tasks in the workflow execution.</p>
2836    #[serde(rename = "taskPriority")]
2837    #[serde(skip_serializing_if = "Option::is_none")]
2838    pub task_priority: Option<String>,
2839    /// <p>The maximum duration of decision tasks for this workflow type.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2840    #[serde(rename = "taskStartToCloseTimeout")]
2841    #[serde(skip_serializing_if = "Option::is_none")]
2842    pub task_start_to_close_timeout: Option<String>,
2843    /// <p>The workflow type of this execution.</p>
2844    #[serde(rename = "workflowType")]
2845    pub workflow_type: WorkflowType,
2846}
2847
2848/// <p>Provides the details of the <code>WorkflowExecutionTerminated</code> event.</p>
2849#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2850#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2851pub struct WorkflowExecutionTerminatedEventAttributes {
2852    /// <p>If set, indicates that the workflow execution was automatically terminated, and specifies the cause. This happens if the parent workflow execution times out or is terminated and the child policy is set to terminate child executions.</p>
2853    #[serde(rename = "cause")]
2854    #[serde(skip_serializing_if = "Option::is_none")]
2855    pub cause: Option<String>,
2856    /// <p><p>The policy used for the child workflow executions of this workflow execution.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul></p>
2857    #[serde(rename = "childPolicy")]
2858    pub child_policy: String,
2859    /// <p>The details provided for the termination.</p>
2860    #[serde(rename = "details")]
2861    #[serde(skip_serializing_if = "Option::is_none")]
2862    pub details: Option<String>,
2863    /// <p>The reason provided for the termination.</p>
2864    #[serde(rename = "reason")]
2865    #[serde(skip_serializing_if = "Option::is_none")]
2866    pub reason: Option<String>,
2867}
2868
2869/// <p>Provides the details of the <code>WorkflowExecutionTimedOut</code> event.</p>
2870#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2871#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2872pub struct WorkflowExecutionTimedOutEventAttributes {
2873    /// <p><p>The policy used for the child workflow executions of this workflow execution.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul></p>
2874    #[serde(rename = "childPolicy")]
2875    pub child_policy: String,
2876    /// <p>The type of timeout that caused this event.</p>
2877    #[serde(rename = "timeoutType")]
2878    pub timeout_type: String,
2879}
2880
2881/// <p>Represents a workflow type.</p>
2882#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2883pub struct WorkflowType {
2884    /// <p><p> The name of the workflow type.</p> <note> <p>The combination of workflow type name and version must be unique with in a domain.</p> </note></p>
2885    #[serde(rename = "name")]
2886    pub name: String,
2887    /// <p><p> The version of the workflow type.</p> <note> <p>The combination of workflow type name and version must be unique with in a domain.</p> </note></p>
2888    #[serde(rename = "version")]
2889    pub version: String,
2890}
2891
2892/// <p>The configuration settings of a workflow type.</p>
2893#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2894#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2895pub struct WorkflowTypeConfiguration {
2896    /// <p><p> The default policy to use for the child workflow executions when a workflow execution of this type is terminated, by calling the <a>TerminateWorkflowExecution</a> action explicitly or due to an expired timeout. This default can be overridden when starting a workflow execution using the <a>StartWorkflowExecution</a> action or the <code>StartChildWorkflowExecution</code> <a>Decision</a>.</p> <p>The supported child policies are:</p> <ul> <li> <p> <code>TERMINATE</code> – The child executions are terminated.</p> </li> <li> <p> <code>REQUEST_CANCEL</code> – A request to cancel is attempted for each child execution by recording a <code>WorkflowExecutionCancelRequested</code> event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> </li> <li> <p> <code>ABANDON</code> – No action is taken. The child executions continue to run.</p> </li> </ul></p>
2897    #[serde(rename = "defaultChildPolicy")]
2898    #[serde(skip_serializing_if = "Option::is_none")]
2899    pub default_child_policy: Option<String>,
2900    /// <p> The default maximum duration, specified when registering the workflow type, for executions of this workflow type. This default can be overridden when starting a workflow execution using the <a>StartWorkflowExecution</a> action or the <code>StartChildWorkflowExecution</code> <a>Decision</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2901    #[serde(rename = "defaultExecutionStartToCloseTimeout")]
2902    #[serde(skip_serializing_if = "Option::is_none")]
2903    pub default_execution_start_to_close_timeout: Option<String>,
2904    /// <p><p>The default IAM role attached to this workflow type.</p> <note> <p>Executions of this workflow type need IAM roles to invoke Lambda functions. If you don&#39;t specify an IAM role when starting this workflow type, the default Lambda role is attached to the execution. For more information, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html">https://docs.aws.amazon.com/amazonswf/latest/developerguide/lambda-task.html</a> in the <i>Amazon SWF Developer Guide</i>.</p> </note></p>
2905    #[serde(rename = "defaultLambdaRole")]
2906    #[serde(skip_serializing_if = "Option::is_none")]
2907    pub default_lambda_role: Option<String>,
2908    /// <p> The default task list, specified when registering the workflow type, for decisions tasks scheduled for workflow executions of this type. This default can be overridden when starting a workflow execution using the <a>StartWorkflowExecution</a> action or the <code>StartChildWorkflowExecution</code> <a>Decision</a>.</p>
2909    #[serde(rename = "defaultTaskList")]
2910    #[serde(skip_serializing_if = "Option::is_none")]
2911    pub default_task_list: Option<TaskList>,
2912    /// <p> The default task priority, specified when registering the workflow type, for all decision tasks of this workflow type. This default can be overridden when starting a workflow execution using the <a>StartWorkflowExecution</a> action or the <code>StartChildWorkflowExecution</code> decision.</p> <p>Valid values are integers that range from Java's <code>Integer.MIN_VALUE</code> (-2147483648) to <code>Integer.MAX_VALUE</code> (2147483647). Higher numbers indicate higher priority.</p> <p>For more information about setting task priority, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/programming-priority.html">Setting Task Priority</a> in the <i>Amazon SWF Developer Guide</i>.</p>
2913    #[serde(rename = "defaultTaskPriority")]
2914    #[serde(skip_serializing_if = "Option::is_none")]
2915    pub default_task_priority: Option<String>,
2916    /// <p> The default maximum duration, specified when registering the workflow type, that a decision task for executions of this workflow type might take before returning completion or failure. If the task doesn'tdo close in the specified time then the task is automatically timed out and rescheduled. If the decider eventually reports a completion or failure, it is ignored. This default can be overridden when starting a workflow execution using the <a>StartWorkflowExecution</a> action or the <code>StartChildWorkflowExecution</code> <a>Decision</a>.</p> <p>The duration is specified in seconds, an integer greater than or equal to <code>0</code>. You can use <code>NONE</code> to specify unlimited duration.</p>
2917    #[serde(rename = "defaultTaskStartToCloseTimeout")]
2918    #[serde(skip_serializing_if = "Option::is_none")]
2919    pub default_task_start_to_close_timeout: Option<String>,
2920}
2921
2922/// <p>Contains details about a workflow type.</p>
2923#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2924#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2925pub struct WorkflowTypeDetail {
2926    /// <p>Configuration settings of the workflow type registered through <a>RegisterWorkflowType</a> </p>
2927    #[serde(rename = "configuration")]
2928    pub configuration: WorkflowTypeConfiguration,
2929    /// <p><p>General information about the workflow type.</p> <p>The status of the workflow type (returned in the WorkflowTypeInfo structure) can be one of the following.</p> <ul> <li> <p> <code>REGISTERED</code> – The type is registered and available. Workers supporting this type should be running.</p> </li> <li> <p> <code>DEPRECATED</code> – The type was deprecated using <a>DeprecateWorkflowType</a>, but is still in use. You should keep workers supporting this type running. You cannot create new workflow executions of this type.</p> </li> </ul></p>
2930    #[serde(rename = "typeInfo")]
2931    pub type_info: WorkflowTypeInfo,
2932}
2933
2934/// <p>Used to filter workflow execution query results by type. Each parameter, if specified, defines a rule that must be satisfied by each returned result.</p>
2935#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2936#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2937pub struct WorkflowTypeFilter {
2938    /// <p> Name of the workflow type.</p>
2939    #[serde(rename = "name")]
2940    pub name: String,
2941    /// <p>Version of the workflow type.</p>
2942    #[serde(rename = "version")]
2943    #[serde(skip_serializing_if = "Option::is_none")]
2944    pub version: Option<String>,
2945}
2946
2947/// <p>Contains information about a workflow type.</p>
2948#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2949#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2950pub struct WorkflowTypeInfo {
2951    /// <p>The date when this type was registered.</p>
2952    #[serde(rename = "creationDate")]
2953    pub creation_date: f64,
2954    /// <p>If the type is in deprecated state, then it is set to the date when the type was deprecated.</p>
2955    #[serde(rename = "deprecationDate")]
2956    #[serde(skip_serializing_if = "Option::is_none")]
2957    pub deprecation_date: Option<f64>,
2958    /// <p>The description of the type registered through <a>RegisterWorkflowType</a>.</p>
2959    #[serde(rename = "description")]
2960    #[serde(skip_serializing_if = "Option::is_none")]
2961    pub description: Option<String>,
2962    /// <p>The current status of the workflow type.</p>
2963    #[serde(rename = "status")]
2964    pub status: String,
2965    /// <p>The workflow type this information is about.</p>
2966    #[serde(rename = "workflowType")]
2967    pub workflow_type: WorkflowType,
2968}
2969
2970/// <p>Contains a paginated list of information structures about workflow types.</p>
2971#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2972#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2973pub struct WorkflowTypeInfos {
2974    /// <p>If a <code>NextPageToken</code> was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in <code>nextPageToken</code>. Keep all other arguments unchanged.</p> <p>The configured <code>maximumPageSize</code> determines how many results can be returned in a single call.</p>
2975    #[serde(rename = "nextPageToken")]
2976    #[serde(skip_serializing_if = "Option::is_none")]
2977    pub next_page_token: Option<String>,
2978    /// <p>The list of workflow type information.</p>
2979    #[serde(rename = "typeInfos")]
2980    pub type_infos: Vec<WorkflowTypeInfo>,
2981}
2982
2983/// Errors returned by CountClosedWorkflowExecutions
2984#[derive(Debug, PartialEq)]
2985pub enum CountClosedWorkflowExecutionsError {
2986    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
2987    OperationNotPermittedFault(String),
2988    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
2989    UnknownResourceFault(String),
2990}
2991
2992impl CountClosedWorkflowExecutionsError {
2993    pub fn from_response(
2994        res: BufferedHttpResponse,
2995    ) -> RusotoError<CountClosedWorkflowExecutionsError> {
2996        if let Some(err) = proto::json::Error::parse(&res) {
2997            match err.typ.as_str() {
2998                "OperationNotPermittedFault" => {
2999                    return RusotoError::Service(
3000                        CountClosedWorkflowExecutionsError::OperationNotPermittedFault(err.msg),
3001                    )
3002                }
3003                "UnknownResourceFault" => {
3004                    return RusotoError::Service(
3005                        CountClosedWorkflowExecutionsError::UnknownResourceFault(err.msg),
3006                    )
3007                }
3008                "ValidationException" => return RusotoError::Validation(err.msg),
3009                _ => {}
3010            }
3011        }
3012        RusotoError::Unknown(res)
3013    }
3014}
3015impl fmt::Display for CountClosedWorkflowExecutionsError {
3016    #[allow(unused_variables)]
3017    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3018        match *self {
3019            CountClosedWorkflowExecutionsError::OperationNotPermittedFault(ref cause) => {
3020                write!(f, "{}", cause)
3021            }
3022            CountClosedWorkflowExecutionsError::UnknownResourceFault(ref cause) => {
3023                write!(f, "{}", cause)
3024            }
3025        }
3026    }
3027}
3028impl Error for CountClosedWorkflowExecutionsError {}
3029/// Errors returned by CountOpenWorkflowExecutions
3030#[derive(Debug, PartialEq)]
3031pub enum CountOpenWorkflowExecutionsError {
3032    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3033    OperationNotPermittedFault(String),
3034    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3035    UnknownResourceFault(String),
3036}
3037
3038impl CountOpenWorkflowExecutionsError {
3039    pub fn from_response(
3040        res: BufferedHttpResponse,
3041    ) -> RusotoError<CountOpenWorkflowExecutionsError> {
3042        if let Some(err) = proto::json::Error::parse(&res) {
3043            match err.typ.as_str() {
3044                "OperationNotPermittedFault" => {
3045                    return RusotoError::Service(
3046                        CountOpenWorkflowExecutionsError::OperationNotPermittedFault(err.msg),
3047                    )
3048                }
3049                "UnknownResourceFault" => {
3050                    return RusotoError::Service(
3051                        CountOpenWorkflowExecutionsError::UnknownResourceFault(err.msg),
3052                    )
3053                }
3054                "ValidationException" => return RusotoError::Validation(err.msg),
3055                _ => {}
3056            }
3057        }
3058        RusotoError::Unknown(res)
3059    }
3060}
3061impl fmt::Display for CountOpenWorkflowExecutionsError {
3062    #[allow(unused_variables)]
3063    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3064        match *self {
3065            CountOpenWorkflowExecutionsError::OperationNotPermittedFault(ref cause) => {
3066                write!(f, "{}", cause)
3067            }
3068            CountOpenWorkflowExecutionsError::UnknownResourceFault(ref cause) => {
3069                write!(f, "{}", cause)
3070            }
3071        }
3072    }
3073}
3074impl Error for CountOpenWorkflowExecutionsError {}
3075/// Errors returned by CountPendingActivityTasks
3076#[derive(Debug, PartialEq)]
3077pub enum CountPendingActivityTasksError {
3078    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3079    OperationNotPermittedFault(String),
3080    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3081    UnknownResourceFault(String),
3082}
3083
3084impl CountPendingActivityTasksError {
3085    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CountPendingActivityTasksError> {
3086        if let Some(err) = proto::json::Error::parse(&res) {
3087            match err.typ.as_str() {
3088                "OperationNotPermittedFault" => {
3089                    return RusotoError::Service(
3090                        CountPendingActivityTasksError::OperationNotPermittedFault(err.msg),
3091                    )
3092                }
3093                "UnknownResourceFault" => {
3094                    return RusotoError::Service(
3095                        CountPendingActivityTasksError::UnknownResourceFault(err.msg),
3096                    )
3097                }
3098                "ValidationException" => return RusotoError::Validation(err.msg),
3099                _ => {}
3100            }
3101        }
3102        RusotoError::Unknown(res)
3103    }
3104}
3105impl fmt::Display for CountPendingActivityTasksError {
3106    #[allow(unused_variables)]
3107    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3108        match *self {
3109            CountPendingActivityTasksError::OperationNotPermittedFault(ref cause) => {
3110                write!(f, "{}", cause)
3111            }
3112            CountPendingActivityTasksError::UnknownResourceFault(ref cause) => {
3113                write!(f, "{}", cause)
3114            }
3115        }
3116    }
3117}
3118impl Error for CountPendingActivityTasksError {}
3119/// Errors returned by CountPendingDecisionTasks
3120#[derive(Debug, PartialEq)]
3121pub enum CountPendingDecisionTasksError {
3122    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3123    OperationNotPermittedFault(String),
3124    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3125    UnknownResourceFault(String),
3126}
3127
3128impl CountPendingDecisionTasksError {
3129    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CountPendingDecisionTasksError> {
3130        if let Some(err) = proto::json::Error::parse(&res) {
3131            match err.typ.as_str() {
3132                "OperationNotPermittedFault" => {
3133                    return RusotoError::Service(
3134                        CountPendingDecisionTasksError::OperationNotPermittedFault(err.msg),
3135                    )
3136                }
3137                "UnknownResourceFault" => {
3138                    return RusotoError::Service(
3139                        CountPendingDecisionTasksError::UnknownResourceFault(err.msg),
3140                    )
3141                }
3142                "ValidationException" => return RusotoError::Validation(err.msg),
3143                _ => {}
3144            }
3145        }
3146        RusotoError::Unknown(res)
3147    }
3148}
3149impl fmt::Display for CountPendingDecisionTasksError {
3150    #[allow(unused_variables)]
3151    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3152        match *self {
3153            CountPendingDecisionTasksError::OperationNotPermittedFault(ref cause) => {
3154                write!(f, "{}", cause)
3155            }
3156            CountPendingDecisionTasksError::UnknownResourceFault(ref cause) => {
3157                write!(f, "{}", cause)
3158            }
3159        }
3160    }
3161}
3162impl Error for CountPendingDecisionTasksError {}
3163/// Errors returned by DeprecateActivityType
3164#[derive(Debug, PartialEq)]
3165pub enum DeprecateActivityTypeError {
3166    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3167    OperationNotPermittedFault(String),
3168    /// <p>Returned when the specified activity or workflow type was already deprecated.</p>
3169    TypeDeprecatedFault(String),
3170    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3171    UnknownResourceFault(String),
3172}
3173
3174impl DeprecateActivityTypeError {
3175    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeprecateActivityTypeError> {
3176        if let Some(err) = proto::json::Error::parse(&res) {
3177            match err.typ.as_str() {
3178                "OperationNotPermittedFault" => {
3179                    return RusotoError::Service(
3180                        DeprecateActivityTypeError::OperationNotPermittedFault(err.msg),
3181                    )
3182                }
3183                "TypeDeprecatedFault" => {
3184                    return RusotoError::Service(DeprecateActivityTypeError::TypeDeprecatedFault(
3185                        err.msg,
3186                    ))
3187                }
3188                "UnknownResourceFault" => {
3189                    return RusotoError::Service(DeprecateActivityTypeError::UnknownResourceFault(
3190                        err.msg,
3191                    ))
3192                }
3193                "ValidationException" => return RusotoError::Validation(err.msg),
3194                _ => {}
3195            }
3196        }
3197        RusotoError::Unknown(res)
3198    }
3199}
3200impl fmt::Display for DeprecateActivityTypeError {
3201    #[allow(unused_variables)]
3202    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3203        match *self {
3204            DeprecateActivityTypeError::OperationNotPermittedFault(ref cause) => {
3205                write!(f, "{}", cause)
3206            }
3207            DeprecateActivityTypeError::TypeDeprecatedFault(ref cause) => write!(f, "{}", cause),
3208            DeprecateActivityTypeError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3209        }
3210    }
3211}
3212impl Error for DeprecateActivityTypeError {}
3213/// Errors returned by DeprecateDomain
3214#[derive(Debug, PartialEq)]
3215pub enum DeprecateDomainError {
3216    /// <p>Returned when the specified domain has been deprecated.</p>
3217    DomainDeprecatedFault(String),
3218    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3219    OperationNotPermittedFault(String),
3220    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3221    UnknownResourceFault(String),
3222}
3223
3224impl DeprecateDomainError {
3225    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeprecateDomainError> {
3226        if let Some(err) = proto::json::Error::parse(&res) {
3227            match err.typ.as_str() {
3228                "DomainDeprecatedFault" => {
3229                    return RusotoError::Service(DeprecateDomainError::DomainDeprecatedFault(
3230                        err.msg,
3231                    ))
3232                }
3233                "OperationNotPermittedFault" => {
3234                    return RusotoError::Service(DeprecateDomainError::OperationNotPermittedFault(
3235                        err.msg,
3236                    ))
3237                }
3238                "UnknownResourceFault" => {
3239                    return RusotoError::Service(DeprecateDomainError::UnknownResourceFault(
3240                        err.msg,
3241                    ))
3242                }
3243                "ValidationException" => return RusotoError::Validation(err.msg),
3244                _ => {}
3245            }
3246        }
3247        RusotoError::Unknown(res)
3248    }
3249}
3250impl fmt::Display for DeprecateDomainError {
3251    #[allow(unused_variables)]
3252    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3253        match *self {
3254            DeprecateDomainError::DomainDeprecatedFault(ref cause) => write!(f, "{}", cause),
3255            DeprecateDomainError::OperationNotPermittedFault(ref cause) => write!(f, "{}", cause),
3256            DeprecateDomainError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3257        }
3258    }
3259}
3260impl Error for DeprecateDomainError {}
3261/// Errors returned by DeprecateWorkflowType
3262#[derive(Debug, PartialEq)]
3263pub enum DeprecateWorkflowTypeError {
3264    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3265    OperationNotPermittedFault(String),
3266    /// <p>Returned when the specified activity or workflow type was already deprecated.</p>
3267    TypeDeprecatedFault(String),
3268    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3269    UnknownResourceFault(String),
3270}
3271
3272impl DeprecateWorkflowTypeError {
3273    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeprecateWorkflowTypeError> {
3274        if let Some(err) = proto::json::Error::parse(&res) {
3275            match err.typ.as_str() {
3276                "OperationNotPermittedFault" => {
3277                    return RusotoError::Service(
3278                        DeprecateWorkflowTypeError::OperationNotPermittedFault(err.msg),
3279                    )
3280                }
3281                "TypeDeprecatedFault" => {
3282                    return RusotoError::Service(DeprecateWorkflowTypeError::TypeDeprecatedFault(
3283                        err.msg,
3284                    ))
3285                }
3286                "UnknownResourceFault" => {
3287                    return RusotoError::Service(DeprecateWorkflowTypeError::UnknownResourceFault(
3288                        err.msg,
3289                    ))
3290                }
3291                "ValidationException" => return RusotoError::Validation(err.msg),
3292                _ => {}
3293            }
3294        }
3295        RusotoError::Unknown(res)
3296    }
3297}
3298impl fmt::Display for DeprecateWorkflowTypeError {
3299    #[allow(unused_variables)]
3300    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3301        match *self {
3302            DeprecateWorkflowTypeError::OperationNotPermittedFault(ref cause) => {
3303                write!(f, "{}", cause)
3304            }
3305            DeprecateWorkflowTypeError::TypeDeprecatedFault(ref cause) => write!(f, "{}", cause),
3306            DeprecateWorkflowTypeError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3307        }
3308    }
3309}
3310impl Error for DeprecateWorkflowTypeError {}
3311/// Errors returned by DescribeActivityType
3312#[derive(Debug, PartialEq)]
3313pub enum DescribeActivityTypeError {
3314    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3315    OperationNotPermittedFault(String),
3316    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3317    UnknownResourceFault(String),
3318}
3319
3320impl DescribeActivityTypeError {
3321    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeActivityTypeError> {
3322        if let Some(err) = proto::json::Error::parse(&res) {
3323            match err.typ.as_str() {
3324                "OperationNotPermittedFault" => {
3325                    return RusotoError::Service(
3326                        DescribeActivityTypeError::OperationNotPermittedFault(err.msg),
3327                    )
3328                }
3329                "UnknownResourceFault" => {
3330                    return RusotoError::Service(DescribeActivityTypeError::UnknownResourceFault(
3331                        err.msg,
3332                    ))
3333                }
3334                "ValidationException" => return RusotoError::Validation(err.msg),
3335                _ => {}
3336            }
3337        }
3338        RusotoError::Unknown(res)
3339    }
3340}
3341impl fmt::Display for DescribeActivityTypeError {
3342    #[allow(unused_variables)]
3343    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3344        match *self {
3345            DescribeActivityTypeError::OperationNotPermittedFault(ref cause) => {
3346                write!(f, "{}", cause)
3347            }
3348            DescribeActivityTypeError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3349        }
3350    }
3351}
3352impl Error for DescribeActivityTypeError {}
3353/// Errors returned by DescribeDomain
3354#[derive(Debug, PartialEq)]
3355pub enum DescribeDomainError {
3356    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3357    OperationNotPermittedFault(String),
3358    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3359    UnknownResourceFault(String),
3360}
3361
3362impl DescribeDomainError {
3363    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDomainError> {
3364        if let Some(err) = proto::json::Error::parse(&res) {
3365            match err.typ.as_str() {
3366                "OperationNotPermittedFault" => {
3367                    return RusotoError::Service(DescribeDomainError::OperationNotPermittedFault(
3368                        err.msg,
3369                    ))
3370                }
3371                "UnknownResourceFault" => {
3372                    return RusotoError::Service(DescribeDomainError::UnknownResourceFault(err.msg))
3373                }
3374                "ValidationException" => return RusotoError::Validation(err.msg),
3375                _ => {}
3376            }
3377        }
3378        RusotoError::Unknown(res)
3379    }
3380}
3381impl fmt::Display for DescribeDomainError {
3382    #[allow(unused_variables)]
3383    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3384        match *self {
3385            DescribeDomainError::OperationNotPermittedFault(ref cause) => write!(f, "{}", cause),
3386            DescribeDomainError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3387        }
3388    }
3389}
3390impl Error for DescribeDomainError {}
3391/// Errors returned by DescribeWorkflowExecution
3392#[derive(Debug, PartialEq)]
3393pub enum DescribeWorkflowExecutionError {
3394    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3395    OperationNotPermittedFault(String),
3396    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3397    UnknownResourceFault(String),
3398}
3399
3400impl DescribeWorkflowExecutionError {
3401    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeWorkflowExecutionError> {
3402        if let Some(err) = proto::json::Error::parse(&res) {
3403            match err.typ.as_str() {
3404                "OperationNotPermittedFault" => {
3405                    return RusotoError::Service(
3406                        DescribeWorkflowExecutionError::OperationNotPermittedFault(err.msg),
3407                    )
3408                }
3409                "UnknownResourceFault" => {
3410                    return RusotoError::Service(
3411                        DescribeWorkflowExecutionError::UnknownResourceFault(err.msg),
3412                    )
3413                }
3414                "ValidationException" => return RusotoError::Validation(err.msg),
3415                _ => {}
3416            }
3417        }
3418        RusotoError::Unknown(res)
3419    }
3420}
3421impl fmt::Display for DescribeWorkflowExecutionError {
3422    #[allow(unused_variables)]
3423    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3424        match *self {
3425            DescribeWorkflowExecutionError::OperationNotPermittedFault(ref cause) => {
3426                write!(f, "{}", cause)
3427            }
3428            DescribeWorkflowExecutionError::UnknownResourceFault(ref cause) => {
3429                write!(f, "{}", cause)
3430            }
3431        }
3432    }
3433}
3434impl Error for DescribeWorkflowExecutionError {}
3435/// Errors returned by DescribeWorkflowType
3436#[derive(Debug, PartialEq)]
3437pub enum DescribeWorkflowTypeError {
3438    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3439    OperationNotPermittedFault(String),
3440    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3441    UnknownResourceFault(String),
3442}
3443
3444impl DescribeWorkflowTypeError {
3445    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeWorkflowTypeError> {
3446        if let Some(err) = proto::json::Error::parse(&res) {
3447            match err.typ.as_str() {
3448                "OperationNotPermittedFault" => {
3449                    return RusotoError::Service(
3450                        DescribeWorkflowTypeError::OperationNotPermittedFault(err.msg),
3451                    )
3452                }
3453                "UnknownResourceFault" => {
3454                    return RusotoError::Service(DescribeWorkflowTypeError::UnknownResourceFault(
3455                        err.msg,
3456                    ))
3457                }
3458                "ValidationException" => return RusotoError::Validation(err.msg),
3459                _ => {}
3460            }
3461        }
3462        RusotoError::Unknown(res)
3463    }
3464}
3465impl fmt::Display for DescribeWorkflowTypeError {
3466    #[allow(unused_variables)]
3467    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3468        match *self {
3469            DescribeWorkflowTypeError::OperationNotPermittedFault(ref cause) => {
3470                write!(f, "{}", cause)
3471            }
3472            DescribeWorkflowTypeError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3473        }
3474    }
3475}
3476impl Error for DescribeWorkflowTypeError {}
3477/// Errors returned by GetWorkflowExecutionHistory
3478#[derive(Debug, PartialEq)]
3479pub enum GetWorkflowExecutionHistoryError {
3480    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3481    OperationNotPermittedFault(String),
3482    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3483    UnknownResourceFault(String),
3484}
3485
3486impl GetWorkflowExecutionHistoryError {
3487    pub fn from_response(
3488        res: BufferedHttpResponse,
3489    ) -> RusotoError<GetWorkflowExecutionHistoryError> {
3490        if let Some(err) = proto::json::Error::parse(&res) {
3491            match err.typ.as_str() {
3492                "OperationNotPermittedFault" => {
3493                    return RusotoError::Service(
3494                        GetWorkflowExecutionHistoryError::OperationNotPermittedFault(err.msg),
3495                    )
3496                }
3497                "UnknownResourceFault" => {
3498                    return RusotoError::Service(
3499                        GetWorkflowExecutionHistoryError::UnknownResourceFault(err.msg),
3500                    )
3501                }
3502                "ValidationException" => return RusotoError::Validation(err.msg),
3503                _ => {}
3504            }
3505        }
3506        RusotoError::Unknown(res)
3507    }
3508}
3509impl fmt::Display for GetWorkflowExecutionHistoryError {
3510    #[allow(unused_variables)]
3511    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3512        match *self {
3513            GetWorkflowExecutionHistoryError::OperationNotPermittedFault(ref cause) => {
3514                write!(f, "{}", cause)
3515            }
3516            GetWorkflowExecutionHistoryError::UnknownResourceFault(ref cause) => {
3517                write!(f, "{}", cause)
3518            }
3519        }
3520    }
3521}
3522impl Error for GetWorkflowExecutionHistoryError {}
3523/// Errors returned by ListActivityTypes
3524#[derive(Debug, PartialEq)]
3525pub enum ListActivityTypesError {
3526    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3527    OperationNotPermittedFault(String),
3528    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3529    UnknownResourceFault(String),
3530}
3531
3532impl ListActivityTypesError {
3533    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListActivityTypesError> {
3534        if let Some(err) = proto::json::Error::parse(&res) {
3535            match err.typ.as_str() {
3536                "OperationNotPermittedFault" => {
3537                    return RusotoError::Service(
3538                        ListActivityTypesError::OperationNotPermittedFault(err.msg),
3539                    )
3540                }
3541                "UnknownResourceFault" => {
3542                    return RusotoError::Service(ListActivityTypesError::UnknownResourceFault(
3543                        err.msg,
3544                    ))
3545                }
3546                "ValidationException" => return RusotoError::Validation(err.msg),
3547                _ => {}
3548            }
3549        }
3550        RusotoError::Unknown(res)
3551    }
3552}
3553impl fmt::Display for ListActivityTypesError {
3554    #[allow(unused_variables)]
3555    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3556        match *self {
3557            ListActivityTypesError::OperationNotPermittedFault(ref cause) => write!(f, "{}", cause),
3558            ListActivityTypesError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3559        }
3560    }
3561}
3562impl Error for ListActivityTypesError {}
3563/// Errors returned by ListClosedWorkflowExecutions
3564#[derive(Debug, PartialEq)]
3565pub enum ListClosedWorkflowExecutionsError {
3566    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3567    OperationNotPermittedFault(String),
3568    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3569    UnknownResourceFault(String),
3570}
3571
3572impl ListClosedWorkflowExecutionsError {
3573    pub fn from_response(
3574        res: BufferedHttpResponse,
3575    ) -> RusotoError<ListClosedWorkflowExecutionsError> {
3576        if let Some(err) = proto::json::Error::parse(&res) {
3577            match err.typ.as_str() {
3578                "OperationNotPermittedFault" => {
3579                    return RusotoError::Service(
3580                        ListClosedWorkflowExecutionsError::OperationNotPermittedFault(err.msg),
3581                    )
3582                }
3583                "UnknownResourceFault" => {
3584                    return RusotoError::Service(
3585                        ListClosedWorkflowExecutionsError::UnknownResourceFault(err.msg),
3586                    )
3587                }
3588                "ValidationException" => return RusotoError::Validation(err.msg),
3589                _ => {}
3590            }
3591        }
3592        RusotoError::Unknown(res)
3593    }
3594}
3595impl fmt::Display for ListClosedWorkflowExecutionsError {
3596    #[allow(unused_variables)]
3597    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3598        match *self {
3599            ListClosedWorkflowExecutionsError::OperationNotPermittedFault(ref cause) => {
3600                write!(f, "{}", cause)
3601            }
3602            ListClosedWorkflowExecutionsError::UnknownResourceFault(ref cause) => {
3603                write!(f, "{}", cause)
3604            }
3605        }
3606    }
3607}
3608impl Error for ListClosedWorkflowExecutionsError {}
3609/// Errors returned by ListDomains
3610#[derive(Debug, PartialEq)]
3611pub enum ListDomainsError {
3612    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3613    OperationNotPermittedFault(String),
3614}
3615
3616impl ListDomainsError {
3617    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDomainsError> {
3618        if let Some(err) = proto::json::Error::parse(&res) {
3619            match err.typ.as_str() {
3620                "OperationNotPermittedFault" => {
3621                    return RusotoError::Service(ListDomainsError::OperationNotPermittedFault(
3622                        err.msg,
3623                    ))
3624                }
3625                "ValidationException" => return RusotoError::Validation(err.msg),
3626                _ => {}
3627            }
3628        }
3629        RusotoError::Unknown(res)
3630    }
3631}
3632impl fmt::Display for ListDomainsError {
3633    #[allow(unused_variables)]
3634    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3635        match *self {
3636            ListDomainsError::OperationNotPermittedFault(ref cause) => write!(f, "{}", cause),
3637        }
3638    }
3639}
3640impl Error for ListDomainsError {}
3641/// Errors returned by ListOpenWorkflowExecutions
3642#[derive(Debug, PartialEq)]
3643pub enum ListOpenWorkflowExecutionsError {
3644    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3645    OperationNotPermittedFault(String),
3646    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3647    UnknownResourceFault(String),
3648}
3649
3650impl ListOpenWorkflowExecutionsError {
3651    pub fn from_response(
3652        res: BufferedHttpResponse,
3653    ) -> RusotoError<ListOpenWorkflowExecutionsError> {
3654        if let Some(err) = proto::json::Error::parse(&res) {
3655            match err.typ.as_str() {
3656                "OperationNotPermittedFault" => {
3657                    return RusotoError::Service(
3658                        ListOpenWorkflowExecutionsError::OperationNotPermittedFault(err.msg),
3659                    )
3660                }
3661                "UnknownResourceFault" => {
3662                    return RusotoError::Service(
3663                        ListOpenWorkflowExecutionsError::UnknownResourceFault(err.msg),
3664                    )
3665                }
3666                "ValidationException" => return RusotoError::Validation(err.msg),
3667                _ => {}
3668            }
3669        }
3670        RusotoError::Unknown(res)
3671    }
3672}
3673impl fmt::Display for ListOpenWorkflowExecutionsError {
3674    #[allow(unused_variables)]
3675    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3676        match *self {
3677            ListOpenWorkflowExecutionsError::OperationNotPermittedFault(ref cause) => {
3678                write!(f, "{}", cause)
3679            }
3680            ListOpenWorkflowExecutionsError::UnknownResourceFault(ref cause) => {
3681                write!(f, "{}", cause)
3682            }
3683        }
3684    }
3685}
3686impl Error for ListOpenWorkflowExecutionsError {}
3687/// Errors returned by ListTagsForResource
3688#[derive(Debug, PartialEq)]
3689pub enum ListTagsForResourceError {
3690    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
3691    LimitExceededFault(String),
3692    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3693    OperationNotPermittedFault(String),
3694    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3695    UnknownResourceFault(String),
3696}
3697
3698impl ListTagsForResourceError {
3699    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
3700        if let Some(err) = proto::json::Error::parse(&res) {
3701            match err.typ.as_str() {
3702                "LimitExceededFault" => {
3703                    return RusotoError::Service(ListTagsForResourceError::LimitExceededFault(
3704                        err.msg,
3705                    ))
3706                }
3707                "OperationNotPermittedFault" => {
3708                    return RusotoError::Service(
3709                        ListTagsForResourceError::OperationNotPermittedFault(err.msg),
3710                    )
3711                }
3712                "UnknownResourceFault" => {
3713                    return RusotoError::Service(ListTagsForResourceError::UnknownResourceFault(
3714                        err.msg,
3715                    ))
3716                }
3717                "ValidationException" => return RusotoError::Validation(err.msg),
3718                _ => {}
3719            }
3720        }
3721        RusotoError::Unknown(res)
3722    }
3723}
3724impl fmt::Display for ListTagsForResourceError {
3725    #[allow(unused_variables)]
3726    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3727        match *self {
3728            ListTagsForResourceError::LimitExceededFault(ref cause) => write!(f, "{}", cause),
3729            ListTagsForResourceError::OperationNotPermittedFault(ref cause) => {
3730                write!(f, "{}", cause)
3731            }
3732            ListTagsForResourceError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3733        }
3734    }
3735}
3736impl Error for ListTagsForResourceError {}
3737/// Errors returned by ListWorkflowTypes
3738#[derive(Debug, PartialEq)]
3739pub enum ListWorkflowTypesError {
3740    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3741    OperationNotPermittedFault(String),
3742    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3743    UnknownResourceFault(String),
3744}
3745
3746impl ListWorkflowTypesError {
3747    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListWorkflowTypesError> {
3748        if let Some(err) = proto::json::Error::parse(&res) {
3749            match err.typ.as_str() {
3750                "OperationNotPermittedFault" => {
3751                    return RusotoError::Service(
3752                        ListWorkflowTypesError::OperationNotPermittedFault(err.msg),
3753                    )
3754                }
3755                "UnknownResourceFault" => {
3756                    return RusotoError::Service(ListWorkflowTypesError::UnknownResourceFault(
3757                        err.msg,
3758                    ))
3759                }
3760                "ValidationException" => return RusotoError::Validation(err.msg),
3761                _ => {}
3762            }
3763        }
3764        RusotoError::Unknown(res)
3765    }
3766}
3767impl fmt::Display for ListWorkflowTypesError {
3768    #[allow(unused_variables)]
3769    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3770        match *self {
3771            ListWorkflowTypesError::OperationNotPermittedFault(ref cause) => write!(f, "{}", cause),
3772            ListWorkflowTypesError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3773        }
3774    }
3775}
3776impl Error for ListWorkflowTypesError {}
3777/// Errors returned by PollForActivityTask
3778#[derive(Debug, PartialEq)]
3779pub enum PollForActivityTaskError {
3780    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
3781    LimitExceededFault(String),
3782    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3783    OperationNotPermittedFault(String),
3784    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3785    UnknownResourceFault(String),
3786}
3787
3788impl PollForActivityTaskError {
3789    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PollForActivityTaskError> {
3790        if let Some(err) = proto::json::Error::parse(&res) {
3791            match err.typ.as_str() {
3792                "LimitExceededFault" => {
3793                    return RusotoError::Service(PollForActivityTaskError::LimitExceededFault(
3794                        err.msg,
3795                    ))
3796                }
3797                "OperationNotPermittedFault" => {
3798                    return RusotoError::Service(
3799                        PollForActivityTaskError::OperationNotPermittedFault(err.msg),
3800                    )
3801                }
3802                "UnknownResourceFault" => {
3803                    return RusotoError::Service(PollForActivityTaskError::UnknownResourceFault(
3804                        err.msg,
3805                    ))
3806                }
3807                "ValidationException" => return RusotoError::Validation(err.msg),
3808                _ => {}
3809            }
3810        }
3811        RusotoError::Unknown(res)
3812    }
3813}
3814impl fmt::Display for PollForActivityTaskError {
3815    #[allow(unused_variables)]
3816    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3817        match *self {
3818            PollForActivityTaskError::LimitExceededFault(ref cause) => write!(f, "{}", cause),
3819            PollForActivityTaskError::OperationNotPermittedFault(ref cause) => {
3820                write!(f, "{}", cause)
3821            }
3822            PollForActivityTaskError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3823        }
3824    }
3825}
3826impl Error for PollForActivityTaskError {}
3827/// Errors returned by PollForDecisionTask
3828#[derive(Debug, PartialEq)]
3829pub enum PollForDecisionTaskError {
3830    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
3831    LimitExceededFault(String),
3832    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3833    OperationNotPermittedFault(String),
3834    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3835    UnknownResourceFault(String),
3836}
3837
3838impl PollForDecisionTaskError {
3839    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PollForDecisionTaskError> {
3840        if let Some(err) = proto::json::Error::parse(&res) {
3841            match err.typ.as_str() {
3842                "LimitExceededFault" => {
3843                    return RusotoError::Service(PollForDecisionTaskError::LimitExceededFault(
3844                        err.msg,
3845                    ))
3846                }
3847                "OperationNotPermittedFault" => {
3848                    return RusotoError::Service(
3849                        PollForDecisionTaskError::OperationNotPermittedFault(err.msg),
3850                    )
3851                }
3852                "UnknownResourceFault" => {
3853                    return RusotoError::Service(PollForDecisionTaskError::UnknownResourceFault(
3854                        err.msg,
3855                    ))
3856                }
3857                "ValidationException" => return RusotoError::Validation(err.msg),
3858                _ => {}
3859            }
3860        }
3861        RusotoError::Unknown(res)
3862    }
3863}
3864impl fmt::Display for PollForDecisionTaskError {
3865    #[allow(unused_variables)]
3866    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3867        match *self {
3868            PollForDecisionTaskError::LimitExceededFault(ref cause) => write!(f, "{}", cause),
3869            PollForDecisionTaskError::OperationNotPermittedFault(ref cause) => {
3870                write!(f, "{}", cause)
3871            }
3872            PollForDecisionTaskError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3873        }
3874    }
3875}
3876impl Error for PollForDecisionTaskError {}
3877/// Errors returned by RecordActivityTaskHeartbeat
3878#[derive(Debug, PartialEq)]
3879pub enum RecordActivityTaskHeartbeatError {
3880    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3881    OperationNotPermittedFault(String),
3882    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3883    UnknownResourceFault(String),
3884}
3885
3886impl RecordActivityTaskHeartbeatError {
3887    pub fn from_response(
3888        res: BufferedHttpResponse,
3889    ) -> RusotoError<RecordActivityTaskHeartbeatError> {
3890        if let Some(err) = proto::json::Error::parse(&res) {
3891            match err.typ.as_str() {
3892                "OperationNotPermittedFault" => {
3893                    return RusotoError::Service(
3894                        RecordActivityTaskHeartbeatError::OperationNotPermittedFault(err.msg),
3895                    )
3896                }
3897                "UnknownResourceFault" => {
3898                    return RusotoError::Service(
3899                        RecordActivityTaskHeartbeatError::UnknownResourceFault(err.msg),
3900                    )
3901                }
3902                "ValidationException" => return RusotoError::Validation(err.msg),
3903                _ => {}
3904            }
3905        }
3906        RusotoError::Unknown(res)
3907    }
3908}
3909impl fmt::Display for RecordActivityTaskHeartbeatError {
3910    #[allow(unused_variables)]
3911    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3912        match *self {
3913            RecordActivityTaskHeartbeatError::OperationNotPermittedFault(ref cause) => {
3914                write!(f, "{}", cause)
3915            }
3916            RecordActivityTaskHeartbeatError::UnknownResourceFault(ref cause) => {
3917                write!(f, "{}", cause)
3918            }
3919        }
3920    }
3921}
3922impl Error for RecordActivityTaskHeartbeatError {}
3923/// Errors returned by RegisterActivityType
3924#[derive(Debug, PartialEq)]
3925pub enum RegisterActivityTypeError {
3926    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
3927    LimitExceededFault(String),
3928    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3929    OperationNotPermittedFault(String),
3930    /// <p>Returned if the type already exists in the specified domain. You may get this fault if you are registering a type that is either already registered or deprecated, or if you undeprecate a type that is currently registered.</p>
3931    TypeAlreadyExistsFault(String),
3932    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
3933    UnknownResourceFault(String),
3934}
3935
3936impl RegisterActivityTypeError {
3937    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RegisterActivityTypeError> {
3938        if let Some(err) = proto::json::Error::parse(&res) {
3939            match err.typ.as_str() {
3940                "LimitExceededFault" => {
3941                    return RusotoError::Service(RegisterActivityTypeError::LimitExceededFault(
3942                        err.msg,
3943                    ))
3944                }
3945                "OperationNotPermittedFault" => {
3946                    return RusotoError::Service(
3947                        RegisterActivityTypeError::OperationNotPermittedFault(err.msg),
3948                    )
3949                }
3950                "TypeAlreadyExistsFault" => {
3951                    return RusotoError::Service(RegisterActivityTypeError::TypeAlreadyExistsFault(
3952                        err.msg,
3953                    ))
3954                }
3955                "UnknownResourceFault" => {
3956                    return RusotoError::Service(RegisterActivityTypeError::UnknownResourceFault(
3957                        err.msg,
3958                    ))
3959                }
3960                "ValidationException" => return RusotoError::Validation(err.msg),
3961                _ => {}
3962            }
3963        }
3964        RusotoError::Unknown(res)
3965    }
3966}
3967impl fmt::Display for RegisterActivityTypeError {
3968    #[allow(unused_variables)]
3969    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3970        match *self {
3971            RegisterActivityTypeError::LimitExceededFault(ref cause) => write!(f, "{}", cause),
3972            RegisterActivityTypeError::OperationNotPermittedFault(ref cause) => {
3973                write!(f, "{}", cause)
3974            }
3975            RegisterActivityTypeError::TypeAlreadyExistsFault(ref cause) => write!(f, "{}", cause),
3976            RegisterActivityTypeError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
3977        }
3978    }
3979}
3980impl Error for RegisterActivityTypeError {}
3981/// Errors returned by RegisterDomain
3982#[derive(Debug, PartialEq)]
3983pub enum RegisterDomainError {
3984    /// <p>Returned if the domain already exists. You may get this fault if you are registering a domain that is either already registered or deprecated, or if you undeprecate a domain that is currently registered.</p>
3985    DomainAlreadyExistsFault(String),
3986    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
3987    LimitExceededFault(String),
3988    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
3989    OperationNotPermittedFault(String),
3990    /// <p>You've exceeded the number of tags allowed for a domain.</p>
3991    TooManyTagsFault(String),
3992}
3993
3994impl RegisterDomainError {
3995    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RegisterDomainError> {
3996        if let Some(err) = proto::json::Error::parse(&res) {
3997            match err.typ.as_str() {
3998                "DomainAlreadyExistsFault" => {
3999                    return RusotoError::Service(RegisterDomainError::DomainAlreadyExistsFault(
4000                        err.msg,
4001                    ))
4002                }
4003                "LimitExceededFault" => {
4004                    return RusotoError::Service(RegisterDomainError::LimitExceededFault(err.msg))
4005                }
4006                "OperationNotPermittedFault" => {
4007                    return RusotoError::Service(RegisterDomainError::OperationNotPermittedFault(
4008                        err.msg,
4009                    ))
4010                }
4011                "TooManyTagsFault" => {
4012                    return RusotoError::Service(RegisterDomainError::TooManyTagsFault(err.msg))
4013                }
4014                "ValidationException" => return RusotoError::Validation(err.msg),
4015                _ => {}
4016            }
4017        }
4018        RusotoError::Unknown(res)
4019    }
4020}
4021impl fmt::Display for RegisterDomainError {
4022    #[allow(unused_variables)]
4023    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4024        match *self {
4025            RegisterDomainError::DomainAlreadyExistsFault(ref cause) => write!(f, "{}", cause),
4026            RegisterDomainError::LimitExceededFault(ref cause) => write!(f, "{}", cause),
4027            RegisterDomainError::OperationNotPermittedFault(ref cause) => write!(f, "{}", cause),
4028            RegisterDomainError::TooManyTagsFault(ref cause) => write!(f, "{}", cause),
4029        }
4030    }
4031}
4032impl Error for RegisterDomainError {}
4033/// Errors returned by RegisterWorkflowType
4034#[derive(Debug, PartialEq)]
4035pub enum RegisterWorkflowTypeError {
4036    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
4037    LimitExceededFault(String),
4038    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4039    OperationNotPermittedFault(String),
4040    /// <p>Returned if the type already exists in the specified domain. You may get this fault if you are registering a type that is either already registered or deprecated, or if you undeprecate a type that is currently registered.</p>
4041    TypeAlreadyExistsFault(String),
4042    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4043    UnknownResourceFault(String),
4044}
4045
4046impl RegisterWorkflowTypeError {
4047    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RegisterWorkflowTypeError> {
4048        if let Some(err) = proto::json::Error::parse(&res) {
4049            match err.typ.as_str() {
4050                "LimitExceededFault" => {
4051                    return RusotoError::Service(RegisterWorkflowTypeError::LimitExceededFault(
4052                        err.msg,
4053                    ))
4054                }
4055                "OperationNotPermittedFault" => {
4056                    return RusotoError::Service(
4057                        RegisterWorkflowTypeError::OperationNotPermittedFault(err.msg),
4058                    )
4059                }
4060                "TypeAlreadyExistsFault" => {
4061                    return RusotoError::Service(RegisterWorkflowTypeError::TypeAlreadyExistsFault(
4062                        err.msg,
4063                    ))
4064                }
4065                "UnknownResourceFault" => {
4066                    return RusotoError::Service(RegisterWorkflowTypeError::UnknownResourceFault(
4067                        err.msg,
4068                    ))
4069                }
4070                "ValidationException" => return RusotoError::Validation(err.msg),
4071                _ => {}
4072            }
4073        }
4074        RusotoError::Unknown(res)
4075    }
4076}
4077impl fmt::Display for RegisterWorkflowTypeError {
4078    #[allow(unused_variables)]
4079    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4080        match *self {
4081            RegisterWorkflowTypeError::LimitExceededFault(ref cause) => write!(f, "{}", cause),
4082            RegisterWorkflowTypeError::OperationNotPermittedFault(ref cause) => {
4083                write!(f, "{}", cause)
4084            }
4085            RegisterWorkflowTypeError::TypeAlreadyExistsFault(ref cause) => write!(f, "{}", cause),
4086            RegisterWorkflowTypeError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
4087        }
4088    }
4089}
4090impl Error for RegisterWorkflowTypeError {}
4091/// Errors returned by RequestCancelWorkflowExecution
4092#[derive(Debug, PartialEq)]
4093pub enum RequestCancelWorkflowExecutionError {
4094    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4095    OperationNotPermittedFault(String),
4096    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4097    UnknownResourceFault(String),
4098}
4099
4100impl RequestCancelWorkflowExecutionError {
4101    pub fn from_response(
4102        res: BufferedHttpResponse,
4103    ) -> RusotoError<RequestCancelWorkflowExecutionError> {
4104        if let Some(err) = proto::json::Error::parse(&res) {
4105            match err.typ.as_str() {
4106                "OperationNotPermittedFault" => {
4107                    return RusotoError::Service(
4108                        RequestCancelWorkflowExecutionError::OperationNotPermittedFault(err.msg),
4109                    )
4110                }
4111                "UnknownResourceFault" => {
4112                    return RusotoError::Service(
4113                        RequestCancelWorkflowExecutionError::UnknownResourceFault(err.msg),
4114                    )
4115                }
4116                "ValidationException" => return RusotoError::Validation(err.msg),
4117                _ => {}
4118            }
4119        }
4120        RusotoError::Unknown(res)
4121    }
4122}
4123impl fmt::Display for RequestCancelWorkflowExecutionError {
4124    #[allow(unused_variables)]
4125    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4126        match *self {
4127            RequestCancelWorkflowExecutionError::OperationNotPermittedFault(ref cause) => {
4128                write!(f, "{}", cause)
4129            }
4130            RequestCancelWorkflowExecutionError::UnknownResourceFault(ref cause) => {
4131                write!(f, "{}", cause)
4132            }
4133        }
4134    }
4135}
4136impl Error for RequestCancelWorkflowExecutionError {}
4137/// Errors returned by RespondActivityTaskCanceled
4138#[derive(Debug, PartialEq)]
4139pub enum RespondActivityTaskCanceledError {
4140    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4141    OperationNotPermittedFault(String),
4142    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4143    UnknownResourceFault(String),
4144}
4145
4146impl RespondActivityTaskCanceledError {
4147    pub fn from_response(
4148        res: BufferedHttpResponse,
4149    ) -> RusotoError<RespondActivityTaskCanceledError> {
4150        if let Some(err) = proto::json::Error::parse(&res) {
4151            match err.typ.as_str() {
4152                "OperationNotPermittedFault" => {
4153                    return RusotoError::Service(
4154                        RespondActivityTaskCanceledError::OperationNotPermittedFault(err.msg),
4155                    )
4156                }
4157                "UnknownResourceFault" => {
4158                    return RusotoError::Service(
4159                        RespondActivityTaskCanceledError::UnknownResourceFault(err.msg),
4160                    )
4161                }
4162                "ValidationException" => return RusotoError::Validation(err.msg),
4163                _ => {}
4164            }
4165        }
4166        RusotoError::Unknown(res)
4167    }
4168}
4169impl fmt::Display for RespondActivityTaskCanceledError {
4170    #[allow(unused_variables)]
4171    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4172        match *self {
4173            RespondActivityTaskCanceledError::OperationNotPermittedFault(ref cause) => {
4174                write!(f, "{}", cause)
4175            }
4176            RespondActivityTaskCanceledError::UnknownResourceFault(ref cause) => {
4177                write!(f, "{}", cause)
4178            }
4179        }
4180    }
4181}
4182impl Error for RespondActivityTaskCanceledError {}
4183/// Errors returned by RespondActivityTaskCompleted
4184#[derive(Debug, PartialEq)]
4185pub enum RespondActivityTaskCompletedError {
4186    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4187    OperationNotPermittedFault(String),
4188    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4189    UnknownResourceFault(String),
4190}
4191
4192impl RespondActivityTaskCompletedError {
4193    pub fn from_response(
4194        res: BufferedHttpResponse,
4195    ) -> RusotoError<RespondActivityTaskCompletedError> {
4196        if let Some(err) = proto::json::Error::parse(&res) {
4197            match err.typ.as_str() {
4198                "OperationNotPermittedFault" => {
4199                    return RusotoError::Service(
4200                        RespondActivityTaskCompletedError::OperationNotPermittedFault(err.msg),
4201                    )
4202                }
4203                "UnknownResourceFault" => {
4204                    return RusotoError::Service(
4205                        RespondActivityTaskCompletedError::UnknownResourceFault(err.msg),
4206                    )
4207                }
4208                "ValidationException" => return RusotoError::Validation(err.msg),
4209                _ => {}
4210            }
4211        }
4212        RusotoError::Unknown(res)
4213    }
4214}
4215impl fmt::Display for RespondActivityTaskCompletedError {
4216    #[allow(unused_variables)]
4217    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4218        match *self {
4219            RespondActivityTaskCompletedError::OperationNotPermittedFault(ref cause) => {
4220                write!(f, "{}", cause)
4221            }
4222            RespondActivityTaskCompletedError::UnknownResourceFault(ref cause) => {
4223                write!(f, "{}", cause)
4224            }
4225        }
4226    }
4227}
4228impl Error for RespondActivityTaskCompletedError {}
4229/// Errors returned by RespondActivityTaskFailed
4230#[derive(Debug, PartialEq)]
4231pub enum RespondActivityTaskFailedError {
4232    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4233    OperationNotPermittedFault(String),
4234    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4235    UnknownResourceFault(String),
4236}
4237
4238impl RespondActivityTaskFailedError {
4239    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RespondActivityTaskFailedError> {
4240        if let Some(err) = proto::json::Error::parse(&res) {
4241            match err.typ.as_str() {
4242                "OperationNotPermittedFault" => {
4243                    return RusotoError::Service(
4244                        RespondActivityTaskFailedError::OperationNotPermittedFault(err.msg),
4245                    )
4246                }
4247                "UnknownResourceFault" => {
4248                    return RusotoError::Service(
4249                        RespondActivityTaskFailedError::UnknownResourceFault(err.msg),
4250                    )
4251                }
4252                "ValidationException" => return RusotoError::Validation(err.msg),
4253                _ => {}
4254            }
4255        }
4256        RusotoError::Unknown(res)
4257    }
4258}
4259impl fmt::Display for RespondActivityTaskFailedError {
4260    #[allow(unused_variables)]
4261    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4262        match *self {
4263            RespondActivityTaskFailedError::OperationNotPermittedFault(ref cause) => {
4264                write!(f, "{}", cause)
4265            }
4266            RespondActivityTaskFailedError::UnknownResourceFault(ref cause) => {
4267                write!(f, "{}", cause)
4268            }
4269        }
4270    }
4271}
4272impl Error for RespondActivityTaskFailedError {}
4273/// Errors returned by RespondDecisionTaskCompleted
4274#[derive(Debug, PartialEq)]
4275pub enum RespondDecisionTaskCompletedError {
4276    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4277    OperationNotPermittedFault(String),
4278    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4279    UnknownResourceFault(String),
4280}
4281
4282impl RespondDecisionTaskCompletedError {
4283    pub fn from_response(
4284        res: BufferedHttpResponse,
4285    ) -> RusotoError<RespondDecisionTaskCompletedError> {
4286        if let Some(err) = proto::json::Error::parse(&res) {
4287            match err.typ.as_str() {
4288                "OperationNotPermittedFault" => {
4289                    return RusotoError::Service(
4290                        RespondDecisionTaskCompletedError::OperationNotPermittedFault(err.msg),
4291                    )
4292                }
4293                "UnknownResourceFault" => {
4294                    return RusotoError::Service(
4295                        RespondDecisionTaskCompletedError::UnknownResourceFault(err.msg),
4296                    )
4297                }
4298                "ValidationException" => return RusotoError::Validation(err.msg),
4299                _ => {}
4300            }
4301        }
4302        RusotoError::Unknown(res)
4303    }
4304}
4305impl fmt::Display for RespondDecisionTaskCompletedError {
4306    #[allow(unused_variables)]
4307    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4308        match *self {
4309            RespondDecisionTaskCompletedError::OperationNotPermittedFault(ref cause) => {
4310                write!(f, "{}", cause)
4311            }
4312            RespondDecisionTaskCompletedError::UnknownResourceFault(ref cause) => {
4313                write!(f, "{}", cause)
4314            }
4315        }
4316    }
4317}
4318impl Error for RespondDecisionTaskCompletedError {}
4319/// Errors returned by SignalWorkflowExecution
4320#[derive(Debug, PartialEq)]
4321pub enum SignalWorkflowExecutionError {
4322    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4323    OperationNotPermittedFault(String),
4324    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4325    UnknownResourceFault(String),
4326}
4327
4328impl SignalWorkflowExecutionError {
4329    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SignalWorkflowExecutionError> {
4330        if let Some(err) = proto::json::Error::parse(&res) {
4331            match err.typ.as_str() {
4332                "OperationNotPermittedFault" => {
4333                    return RusotoError::Service(
4334                        SignalWorkflowExecutionError::OperationNotPermittedFault(err.msg),
4335                    )
4336                }
4337                "UnknownResourceFault" => {
4338                    return RusotoError::Service(
4339                        SignalWorkflowExecutionError::UnknownResourceFault(err.msg),
4340                    )
4341                }
4342                "ValidationException" => return RusotoError::Validation(err.msg),
4343                _ => {}
4344            }
4345        }
4346        RusotoError::Unknown(res)
4347    }
4348}
4349impl fmt::Display for SignalWorkflowExecutionError {
4350    #[allow(unused_variables)]
4351    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4352        match *self {
4353            SignalWorkflowExecutionError::OperationNotPermittedFault(ref cause) => {
4354                write!(f, "{}", cause)
4355            }
4356            SignalWorkflowExecutionError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
4357        }
4358    }
4359}
4360impl Error for SignalWorkflowExecutionError {}
4361/// Errors returned by StartWorkflowExecution
4362#[derive(Debug, PartialEq)]
4363pub enum StartWorkflowExecutionError {
4364    /// <p><p>The <code>StartWorkflowExecution</code> API action was called without the required parameters set.</p> <p>Some workflow execution parameters, such as the decision <code>taskList</code>, must be set to start the execution. However, these parameters might have been set as defaults when the workflow type was registered. In this case, you can omit these parameters from the <code>StartWorkflowExecution</code> call and Amazon SWF uses the values defined in the workflow type.</p> <note> <p>If these parameters aren&#39;t set and no default parameters were defined in the workflow type, this error is displayed.</p> </note></p>
4365    DefaultUndefinedFault(String),
4366    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
4367    LimitExceededFault(String),
4368    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4369    OperationNotPermittedFault(String),
4370    /// <p>Returned when the specified activity or workflow type was already deprecated.</p>
4371    TypeDeprecatedFault(String),
4372    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4373    UnknownResourceFault(String),
4374    /// <p>Returned by <a>StartWorkflowExecution</a> when an open execution with the same workflowId is already running in the specified domain.</p>
4375    WorkflowExecutionAlreadyStartedFault(String),
4376}
4377
4378impl StartWorkflowExecutionError {
4379    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartWorkflowExecutionError> {
4380        if let Some(err) = proto::json::Error::parse(&res) {
4381            match err.typ.as_str() {
4382                "DefaultUndefinedFault" => {
4383                    return RusotoError::Service(
4384                        StartWorkflowExecutionError::DefaultUndefinedFault(err.msg),
4385                    )
4386                }
4387                "LimitExceededFault" => {
4388                    return RusotoError::Service(StartWorkflowExecutionError::LimitExceededFault(
4389                        err.msg,
4390                    ))
4391                }
4392                "OperationNotPermittedFault" => {
4393                    return RusotoError::Service(
4394                        StartWorkflowExecutionError::OperationNotPermittedFault(err.msg),
4395                    )
4396                }
4397                "TypeDeprecatedFault" => {
4398                    return RusotoError::Service(StartWorkflowExecutionError::TypeDeprecatedFault(
4399                        err.msg,
4400                    ))
4401                }
4402                "UnknownResourceFault" => {
4403                    return RusotoError::Service(StartWorkflowExecutionError::UnknownResourceFault(
4404                        err.msg,
4405                    ))
4406                }
4407                "WorkflowExecutionAlreadyStartedFault" => {
4408                    return RusotoError::Service(
4409                        StartWorkflowExecutionError::WorkflowExecutionAlreadyStartedFault(err.msg),
4410                    )
4411                }
4412                "ValidationException" => return RusotoError::Validation(err.msg),
4413                _ => {}
4414            }
4415        }
4416        RusotoError::Unknown(res)
4417    }
4418}
4419impl fmt::Display for StartWorkflowExecutionError {
4420    #[allow(unused_variables)]
4421    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4422        match *self {
4423            StartWorkflowExecutionError::DefaultUndefinedFault(ref cause) => write!(f, "{}", cause),
4424            StartWorkflowExecutionError::LimitExceededFault(ref cause) => write!(f, "{}", cause),
4425            StartWorkflowExecutionError::OperationNotPermittedFault(ref cause) => {
4426                write!(f, "{}", cause)
4427            }
4428            StartWorkflowExecutionError::TypeDeprecatedFault(ref cause) => write!(f, "{}", cause),
4429            StartWorkflowExecutionError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
4430            StartWorkflowExecutionError::WorkflowExecutionAlreadyStartedFault(ref cause) => {
4431                write!(f, "{}", cause)
4432            }
4433        }
4434    }
4435}
4436impl Error for StartWorkflowExecutionError {}
4437/// Errors returned by TagResource
4438#[derive(Debug, PartialEq)]
4439pub enum TagResourceError {
4440    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
4441    LimitExceededFault(String),
4442    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4443    OperationNotPermittedFault(String),
4444    /// <p>You've exceeded the number of tags allowed for a domain.</p>
4445    TooManyTagsFault(String),
4446    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4447    UnknownResourceFault(String),
4448}
4449
4450impl TagResourceError {
4451    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TagResourceError> {
4452        if let Some(err) = proto::json::Error::parse(&res) {
4453            match err.typ.as_str() {
4454                "LimitExceededFault" => {
4455                    return RusotoError::Service(TagResourceError::LimitExceededFault(err.msg))
4456                }
4457                "OperationNotPermittedFault" => {
4458                    return RusotoError::Service(TagResourceError::OperationNotPermittedFault(
4459                        err.msg,
4460                    ))
4461                }
4462                "TooManyTagsFault" => {
4463                    return RusotoError::Service(TagResourceError::TooManyTagsFault(err.msg))
4464                }
4465                "UnknownResourceFault" => {
4466                    return RusotoError::Service(TagResourceError::UnknownResourceFault(err.msg))
4467                }
4468                "ValidationException" => return RusotoError::Validation(err.msg),
4469                _ => {}
4470            }
4471        }
4472        RusotoError::Unknown(res)
4473    }
4474}
4475impl fmt::Display for TagResourceError {
4476    #[allow(unused_variables)]
4477    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4478        match *self {
4479            TagResourceError::LimitExceededFault(ref cause) => write!(f, "{}", cause),
4480            TagResourceError::OperationNotPermittedFault(ref cause) => write!(f, "{}", cause),
4481            TagResourceError::TooManyTagsFault(ref cause) => write!(f, "{}", cause),
4482            TagResourceError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
4483        }
4484    }
4485}
4486impl Error for TagResourceError {}
4487/// Errors returned by TerminateWorkflowExecution
4488#[derive(Debug, PartialEq)]
4489pub enum TerminateWorkflowExecutionError {
4490    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4491    OperationNotPermittedFault(String),
4492    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4493    UnknownResourceFault(String),
4494}
4495
4496impl TerminateWorkflowExecutionError {
4497    pub fn from_response(
4498        res: BufferedHttpResponse,
4499    ) -> RusotoError<TerminateWorkflowExecutionError> {
4500        if let Some(err) = proto::json::Error::parse(&res) {
4501            match err.typ.as_str() {
4502                "OperationNotPermittedFault" => {
4503                    return RusotoError::Service(
4504                        TerminateWorkflowExecutionError::OperationNotPermittedFault(err.msg),
4505                    )
4506                }
4507                "UnknownResourceFault" => {
4508                    return RusotoError::Service(
4509                        TerminateWorkflowExecutionError::UnknownResourceFault(err.msg),
4510                    )
4511                }
4512                "ValidationException" => return RusotoError::Validation(err.msg),
4513                _ => {}
4514            }
4515        }
4516        RusotoError::Unknown(res)
4517    }
4518}
4519impl fmt::Display for TerminateWorkflowExecutionError {
4520    #[allow(unused_variables)]
4521    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4522        match *self {
4523            TerminateWorkflowExecutionError::OperationNotPermittedFault(ref cause) => {
4524                write!(f, "{}", cause)
4525            }
4526            TerminateWorkflowExecutionError::UnknownResourceFault(ref cause) => {
4527                write!(f, "{}", cause)
4528            }
4529        }
4530    }
4531}
4532impl Error for TerminateWorkflowExecutionError {}
4533/// Errors returned by UndeprecateActivityType
4534#[derive(Debug, PartialEq)]
4535pub enum UndeprecateActivityTypeError {
4536    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4537    OperationNotPermittedFault(String),
4538    /// <p>Returned if the type already exists in the specified domain. You may get this fault if you are registering a type that is either already registered or deprecated, or if you undeprecate a type that is currently registered.</p>
4539    TypeAlreadyExistsFault(String),
4540    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4541    UnknownResourceFault(String),
4542}
4543
4544impl UndeprecateActivityTypeError {
4545    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UndeprecateActivityTypeError> {
4546        if let Some(err) = proto::json::Error::parse(&res) {
4547            match err.typ.as_str() {
4548                "OperationNotPermittedFault" => {
4549                    return RusotoError::Service(
4550                        UndeprecateActivityTypeError::OperationNotPermittedFault(err.msg),
4551                    )
4552                }
4553                "TypeAlreadyExistsFault" => {
4554                    return RusotoError::Service(
4555                        UndeprecateActivityTypeError::TypeAlreadyExistsFault(err.msg),
4556                    )
4557                }
4558                "UnknownResourceFault" => {
4559                    return RusotoError::Service(
4560                        UndeprecateActivityTypeError::UnknownResourceFault(err.msg),
4561                    )
4562                }
4563                "ValidationException" => return RusotoError::Validation(err.msg),
4564                _ => {}
4565            }
4566        }
4567        RusotoError::Unknown(res)
4568    }
4569}
4570impl fmt::Display for UndeprecateActivityTypeError {
4571    #[allow(unused_variables)]
4572    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4573        match *self {
4574            UndeprecateActivityTypeError::OperationNotPermittedFault(ref cause) => {
4575                write!(f, "{}", cause)
4576            }
4577            UndeprecateActivityTypeError::TypeAlreadyExistsFault(ref cause) => {
4578                write!(f, "{}", cause)
4579            }
4580            UndeprecateActivityTypeError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
4581        }
4582    }
4583}
4584impl Error for UndeprecateActivityTypeError {}
4585/// Errors returned by UndeprecateDomain
4586#[derive(Debug, PartialEq)]
4587pub enum UndeprecateDomainError {
4588    /// <p>Returned if the domain already exists. You may get this fault if you are registering a domain that is either already registered or deprecated, or if you undeprecate a domain that is currently registered.</p>
4589    DomainAlreadyExistsFault(String),
4590    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4591    OperationNotPermittedFault(String),
4592    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4593    UnknownResourceFault(String),
4594}
4595
4596impl UndeprecateDomainError {
4597    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UndeprecateDomainError> {
4598        if let Some(err) = proto::json::Error::parse(&res) {
4599            match err.typ.as_str() {
4600                "DomainAlreadyExistsFault" => {
4601                    return RusotoError::Service(UndeprecateDomainError::DomainAlreadyExistsFault(
4602                        err.msg,
4603                    ))
4604                }
4605                "OperationNotPermittedFault" => {
4606                    return RusotoError::Service(
4607                        UndeprecateDomainError::OperationNotPermittedFault(err.msg),
4608                    )
4609                }
4610                "UnknownResourceFault" => {
4611                    return RusotoError::Service(UndeprecateDomainError::UnknownResourceFault(
4612                        err.msg,
4613                    ))
4614                }
4615                "ValidationException" => return RusotoError::Validation(err.msg),
4616                _ => {}
4617            }
4618        }
4619        RusotoError::Unknown(res)
4620    }
4621}
4622impl fmt::Display for UndeprecateDomainError {
4623    #[allow(unused_variables)]
4624    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4625        match *self {
4626            UndeprecateDomainError::DomainAlreadyExistsFault(ref cause) => write!(f, "{}", cause),
4627            UndeprecateDomainError::OperationNotPermittedFault(ref cause) => write!(f, "{}", cause),
4628            UndeprecateDomainError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
4629        }
4630    }
4631}
4632impl Error for UndeprecateDomainError {}
4633/// Errors returned by UndeprecateWorkflowType
4634#[derive(Debug, PartialEq)]
4635pub enum UndeprecateWorkflowTypeError {
4636    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4637    OperationNotPermittedFault(String),
4638    /// <p>Returned if the type already exists in the specified domain. You may get this fault if you are registering a type that is either already registered or deprecated, or if you undeprecate a type that is currently registered.</p>
4639    TypeAlreadyExistsFault(String),
4640    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4641    UnknownResourceFault(String),
4642}
4643
4644impl UndeprecateWorkflowTypeError {
4645    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UndeprecateWorkflowTypeError> {
4646        if let Some(err) = proto::json::Error::parse(&res) {
4647            match err.typ.as_str() {
4648                "OperationNotPermittedFault" => {
4649                    return RusotoError::Service(
4650                        UndeprecateWorkflowTypeError::OperationNotPermittedFault(err.msg),
4651                    )
4652                }
4653                "TypeAlreadyExistsFault" => {
4654                    return RusotoError::Service(
4655                        UndeprecateWorkflowTypeError::TypeAlreadyExistsFault(err.msg),
4656                    )
4657                }
4658                "UnknownResourceFault" => {
4659                    return RusotoError::Service(
4660                        UndeprecateWorkflowTypeError::UnknownResourceFault(err.msg),
4661                    )
4662                }
4663                "ValidationException" => return RusotoError::Validation(err.msg),
4664                _ => {}
4665            }
4666        }
4667        RusotoError::Unknown(res)
4668    }
4669}
4670impl fmt::Display for UndeprecateWorkflowTypeError {
4671    #[allow(unused_variables)]
4672    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4673        match *self {
4674            UndeprecateWorkflowTypeError::OperationNotPermittedFault(ref cause) => {
4675                write!(f, "{}", cause)
4676            }
4677            UndeprecateWorkflowTypeError::TypeAlreadyExistsFault(ref cause) => {
4678                write!(f, "{}", cause)
4679            }
4680            UndeprecateWorkflowTypeError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
4681        }
4682    }
4683}
4684impl Error for UndeprecateWorkflowTypeError {}
4685/// Errors returned by UntagResource
4686#[derive(Debug, PartialEq)]
4687pub enum UntagResourceError {
4688    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
4689    LimitExceededFault(String),
4690    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
4691    OperationNotPermittedFault(String),
4692    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
4693    UnknownResourceFault(String),
4694}
4695
4696impl UntagResourceError {
4697    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UntagResourceError> {
4698        if let Some(err) = proto::json::Error::parse(&res) {
4699            match err.typ.as_str() {
4700                "LimitExceededFault" => {
4701                    return RusotoError::Service(UntagResourceError::LimitExceededFault(err.msg))
4702                }
4703                "OperationNotPermittedFault" => {
4704                    return RusotoError::Service(UntagResourceError::OperationNotPermittedFault(
4705                        err.msg,
4706                    ))
4707                }
4708                "UnknownResourceFault" => {
4709                    return RusotoError::Service(UntagResourceError::UnknownResourceFault(err.msg))
4710                }
4711                "ValidationException" => return RusotoError::Validation(err.msg),
4712                _ => {}
4713            }
4714        }
4715        RusotoError::Unknown(res)
4716    }
4717}
4718impl fmt::Display for UntagResourceError {
4719    #[allow(unused_variables)]
4720    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4721        match *self {
4722            UntagResourceError::LimitExceededFault(ref cause) => write!(f, "{}", cause),
4723            UntagResourceError::OperationNotPermittedFault(ref cause) => write!(f, "{}", cause),
4724            UntagResourceError::UnknownResourceFault(ref cause) => write!(f, "{}", cause),
4725        }
4726    }
4727}
4728impl Error for UntagResourceError {}
4729/// Trait representing the capabilities of the Amazon SWF API. Amazon SWF clients implement this trait.
4730#[async_trait]
4731pub trait Swf {
4732    /// <p>Returns the number of closed workflow executions within the given domain that meet the specified filtering criteria.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagFilter.tag</code>: String constraint. The key is <code>swf:tagFilter.tag</code>.</p> </li> <li> <p> <code>typeFilter.name</code>: String constraint. The key is <code>swf:typeFilter.name</code>.</p> </li> <li> <p> <code>typeFilter.version</code>: String constraint. The key is <code>swf:typeFilter.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4733    async fn count_closed_workflow_executions(
4734        &self,
4735        input: CountClosedWorkflowExecutionsInput,
4736    ) -> Result<WorkflowExecutionCount, RusotoError<CountClosedWorkflowExecutionsError>>;
4737
4738    /// <p>Returns the number of open workflow executions within the given domain that meet the specified filtering criteria.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagFilter.tag</code>: String constraint. The key is <code>swf:tagFilter.tag</code>.</p> </li> <li> <p> <code>typeFilter.name</code>: String constraint. The key is <code>swf:typeFilter.name</code>.</p> </li> <li> <p> <code>typeFilter.version</code>: String constraint. The key is <code>swf:typeFilter.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4739    async fn count_open_workflow_executions(
4740        &self,
4741        input: CountOpenWorkflowExecutionsInput,
4742    ) -> Result<WorkflowExecutionCount, RusotoError<CountOpenWorkflowExecutionsError>>;
4743
4744    /// <p>Returns the estimated number of activity tasks in the specified task list. The count returned is an approximation and isn't guaranteed to be exact. If you specify a task list that no activity task was ever scheduled in then <code>0</code> is returned.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the <code>taskList.name</code> parameter by using a <code>Condition</code> element with the <code>swf:taskList.name</code> key to allow the action to access only certain task lists.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4745    async fn count_pending_activity_tasks(
4746        &self,
4747        input: CountPendingActivityTasksInput,
4748    ) -> Result<PendingTaskCount, RusotoError<CountPendingActivityTasksError>>;
4749
4750    /// <p>Returns the estimated number of decision tasks in the specified task list. The count returned is an approximation and isn't guaranteed to be exact. If you specify a task list that no decision task was ever scheduled in then <code>0</code> is returned.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the <code>taskList.name</code> parameter by using a <code>Condition</code> element with the <code>swf:taskList.name</code> key to allow the action to access only certain task lists.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4751    async fn count_pending_decision_tasks(
4752        &self,
4753        input: CountPendingDecisionTasksInput,
4754    ) -> Result<PendingTaskCount, RusotoError<CountPendingDecisionTasksError>>;
4755
4756    /// <p>Deprecates the specified <i>activity type</i>. After an activity type has been deprecated, you cannot create new tasks of that activity type. Tasks of this type that were scheduled before the type was deprecated continue to run.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>activityType.name</code>: String constraint. The key is <code>swf:activityType.name</code>.</p> </li> <li> <p> <code>activityType.version</code>: String constraint. The key is <code>swf:activityType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4757    async fn deprecate_activity_type(
4758        &self,
4759        input: DeprecateActivityTypeInput,
4760    ) -> Result<(), RusotoError<DeprecateActivityTypeError>>;
4761
4762    /// <p>Deprecates the specified domain. After a domain has been deprecated it cannot be used to create new workflow executions or register new types. However, you can still use visibility actions on this domain. Deprecating a domain also deprecates all activity and workflow types registered in the domain. Executions that were started before the domain was deprecated continues to run.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4763    async fn deprecate_domain(
4764        &self,
4765        input: DeprecateDomainInput,
4766    ) -> Result<(), RusotoError<DeprecateDomainError>>;
4767
4768    /// <p>Deprecates the specified <i>workflow type</i>. After a workflow type has been deprecated, you cannot create new executions of that type. Executions that were started before the type was deprecated continues to run. A deprecated workflow type may still be used when calling visibility actions.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>workflowType.name</code>: String constraint. The key is <code>swf:workflowType.name</code>.</p> </li> <li> <p> <code>workflowType.version</code>: String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4769    async fn deprecate_workflow_type(
4770        &self,
4771        input: DeprecateWorkflowTypeInput,
4772    ) -> Result<(), RusotoError<DeprecateWorkflowTypeError>>;
4773
4774    /// <p>Returns information about the specified activity type. This includes configuration settings provided when the type was registered and other general information about the type.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>activityType.name</code>: String constraint. The key is <code>swf:activityType.name</code>.</p> </li> <li> <p> <code>activityType.version</code>: String constraint. The key is <code>swf:activityType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4775    async fn describe_activity_type(
4776        &self,
4777        input: DescribeActivityTypeInput,
4778    ) -> Result<ActivityTypeDetail, RusotoError<DescribeActivityTypeError>>;
4779
4780    /// <p>Returns information about the specified domain, including description and status.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4781    async fn describe_domain(
4782        &self,
4783        input: DescribeDomainInput,
4784    ) -> Result<DomainDetail, RusotoError<DescribeDomainError>>;
4785
4786    /// <p>Returns information about the specified workflow execution including its type and some statistics.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4787    async fn describe_workflow_execution(
4788        &self,
4789        input: DescribeWorkflowExecutionInput,
4790    ) -> Result<WorkflowExecutionDetail, RusotoError<DescribeWorkflowExecutionError>>;
4791
4792    /// <p>Returns information about the specified <i>workflow type</i>. This includes configuration settings specified when the type was registered and other information such as creation date, current status, etc.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>workflowType.name</code>: String constraint. The key is <code>swf:workflowType.name</code>.</p> </li> <li> <p> <code>workflowType.version</code>: String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4793    async fn describe_workflow_type(
4794        &self,
4795        input: DescribeWorkflowTypeInput,
4796    ) -> Result<WorkflowTypeDetail, RusotoError<DescribeWorkflowTypeError>>;
4797
4798    /// <p>Returns the history of the specified workflow execution. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the <code>nextPageToken</code> returned by the initial call.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4799    async fn get_workflow_execution_history(
4800        &self,
4801        input: GetWorkflowExecutionHistoryInput,
4802    ) -> Result<History, RusotoError<GetWorkflowExecutionHistoryError>>;
4803
4804    /// <p>Returns information about all activities registered in the specified domain that match the specified name and registration status. The result includes information like creation date, current status of the activity, etc. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the <code>nextPageToken</code> returned by the initial call.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4805    async fn list_activity_types(
4806        &self,
4807        input: ListActivityTypesInput,
4808    ) -> Result<ActivityTypeInfos, RusotoError<ListActivityTypesError>>;
4809
4810    /// <p>Returns a list of closed workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagFilter.tag</code>: String constraint. The key is <code>swf:tagFilter.tag</code>.</p> </li> <li> <p> <code>typeFilter.name</code>: String constraint. The key is <code>swf:typeFilter.name</code>.</p> </li> <li> <p> <code>typeFilter.version</code>: String constraint. The key is <code>swf:typeFilter.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4811    async fn list_closed_workflow_executions(
4812        &self,
4813        input: ListClosedWorkflowExecutionsInput,
4814    ) -> Result<WorkflowExecutionInfos, RusotoError<ListClosedWorkflowExecutionsError>>;
4815
4816    /// <p>Returns the list of domains registered in the account. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains. The element must be set to <code>arn:aws:swf::AccountID:domain/*</code>, where <i>AccountID</i> is the account ID, with no dashes.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4817    async fn list_domains(
4818        &self,
4819        input: ListDomainsInput,
4820    ) -> Result<DomainInfos, RusotoError<ListDomainsError>>;
4821
4822    /// <p>Returns a list of open workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagFilter.tag</code>: String constraint. The key is <code>swf:tagFilter.tag</code>.</p> </li> <li> <p> <code>typeFilter.name</code>: String constraint. The key is <code>swf:typeFilter.name</code>.</p> </li> <li> <p> <code>typeFilter.version</code>: String constraint. The key is <code>swf:typeFilter.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4823    async fn list_open_workflow_executions(
4824        &self,
4825        input: ListOpenWorkflowExecutionsInput,
4826    ) -> Result<WorkflowExecutionInfos, RusotoError<ListOpenWorkflowExecutionsError>>;
4827
4828    /// <p>List tags for a given domain.</p>
4829    async fn list_tags_for_resource(
4830        &self,
4831        input: ListTagsForResourceInput,
4832    ) -> Result<ListTagsForResourceOutput, RusotoError<ListTagsForResourceError>>;
4833
4834    /// <p>Returns information about workflow types in the specified domain. The results may be split into multiple pages that can be retrieved by making the call repeatedly.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4835    async fn list_workflow_types(
4836        &self,
4837        input: ListWorkflowTypesInput,
4838    ) -> Result<WorkflowTypeInfos, RusotoError<ListWorkflowTypesError>>;
4839
4840    /// <p>Used by workers to get an <a>ActivityTask</a> from the specified activity <code>taskList</code>. This initiates a long poll, where the service holds the HTTP connection open and responds as soon as a task becomes available. The maximum time the service holds on to the request before responding is 60 seconds. If no task is available within 60 seconds, the poll returns an empty result. An empty result, in this context, means that an ActivityTask is returned, but that the value of taskToken is an empty string. If a task is returned, the worker should use its type to identify and process it correctly.</p> <important> <p>Workers should set their client side socket timeout to at least 70 seconds (10 seconds higher than the maximum time service may hold the poll request).</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the <code>taskList.name</code> parameter by using a <code>Condition</code> element with the <code>swf:taskList.name</code> key to allow the action to access only certain task lists.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4841    async fn poll_for_activity_task(
4842        &self,
4843        input: PollForActivityTaskInput,
4844    ) -> Result<ActivityTask, RusotoError<PollForActivityTaskError>>;
4845
4846    /// <p>Used by deciders to get a <a>DecisionTask</a> from the specified decision <code>taskList</code>. A decision task may be returned for any open workflow execution that is using the specified task list. The task includes a paginated view of the history of the workflow execution. The decider should use the workflow type and the history to determine how to properly handle the task.</p> <p>This action initiates a long poll, where the service holds the HTTP connection open and responds as soon a task becomes available. If no decision task is available in the specified task list before the timeout of 60 seconds expires, an empty result is returned. An empty result, in this context, means that a DecisionTask is returned, but that the value of taskToken is an empty string.</p> <important> <p>Deciders should set their client side socket timeout to at least 70 seconds (10 seconds higher than the timeout).</p> </important> <important> <p>Because the number of workflow history events for a single workflow execution might be very large, the result returned might be split up across a number of pages. To retrieve subsequent pages, make additional calls to <code>PollForDecisionTask</code> using the <code>nextPageToken</code> returned by the initial call. Note that you do <i>not</i> call <code>GetWorkflowExecutionHistory</code> with this <code>nextPageToken</code>. Instead, call <code>PollForDecisionTask</code> again.</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the <code>taskList.name</code> parameter by using a <code>Condition</code> element with the <code>swf:taskList.name</code> key to allow the action to access only certain task lists.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4847    async fn poll_for_decision_task(
4848        &self,
4849        input: PollForDecisionTaskInput,
4850    ) -> Result<DecisionTask, RusotoError<PollForDecisionTaskError>>;
4851
4852    /// <p>Used by activity workers to report to the service that the <a>ActivityTask</a> represented by the specified <code>taskToken</code> is still making progress. The worker can also specify details of the progress, for example percent complete, using the <code>details</code> parameter. This action can also be used by the worker as a mechanism to check if cancellation is being requested for the activity task. If a cancellation is being attempted for the specified task, then the boolean <code>cancelRequested</code> flag returned by the service is set to <code>true</code>.</p> <p>This action resets the <code>taskHeartbeatTimeout</code> clock. The <code>taskHeartbeatTimeout</code> is specified in <a>RegisterActivityType</a>.</p> <p>This action doesn't in itself create an event in the workflow execution history. However, if the task times out, the workflow execution history contains a <code>ActivityTaskTimedOut</code> event that contains the information from the last heartbeat generated by the activity worker.</p> <note> <p>The <code>taskStartToCloseTimeout</code> of an activity type is the maximum duration of an activity task, regardless of the number of <a>RecordActivityTaskHeartbeat</a> requests received. The <code>taskStartToCloseTimeout</code> is also specified in <a>RegisterActivityType</a>.</p> </note> <note> <p>This operation is only useful for long-lived activities to report liveliness of the task and to determine if a cancellation is being attempted.</p> </note> <important> <p>If the <code>cancelRequested</code> flag returns <code>true</code>, a cancellation is being attempted. If the worker can cancel the activity, it should respond with <a>RespondActivityTaskCanceled</a>. Otherwise, it should ignore the cancellation request.</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4853    async fn record_activity_task_heartbeat(
4854        &self,
4855        input: RecordActivityTaskHeartbeatInput,
4856    ) -> Result<ActivityTaskStatus, RusotoError<RecordActivityTaskHeartbeatError>>;
4857
4858    /// <p>Registers a new <i>activity type</i> along with its configuration settings in the specified domain.</p> <important> <p>A <code>TypeAlreadyExists</code> fault is returned if the type already exists in the domain. You cannot change any configuration settings of the type after its registration, and it must be registered as a new version.</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>defaultTaskList.name</code>: String constraint. The key is <code>swf:defaultTaskList.name</code>.</p> </li> <li> <p> <code>name</code>: String constraint. The key is <code>swf:name</code>.</p> </li> <li> <p> <code>version</code>: String constraint. The key is <code>swf:version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4859    async fn register_activity_type(
4860        &self,
4861        input: RegisterActivityTypeInput,
4862    ) -> Result<(), RusotoError<RegisterActivityTypeError>>;
4863
4864    /// <p>Registers a new domain.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>You cannot use an IAM policy to control domain access for this action. The name of the domain being registered is available as the resource of this action.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4865    async fn register_domain(
4866        &self,
4867        input: RegisterDomainInput,
4868    ) -> Result<(), RusotoError<RegisterDomainError>>;
4869
4870    /// <p>Registers a new <i>workflow type</i> and its configuration settings in the specified domain.</p> <p>The retention period for the workflow history is set by the <a>RegisterDomain</a> action.</p> <important> <p>If the type already exists, then a <code>TypeAlreadyExists</code> fault is returned. You cannot change the configuration settings of a workflow type once it is registered and it must be registered as a new version.</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>defaultTaskList.name</code>: String constraint. The key is <code>swf:defaultTaskList.name</code>.</p> </li> <li> <p> <code>name</code>: String constraint. The key is <code>swf:name</code>.</p> </li> <li> <p> <code>version</code>: String constraint. The key is <code>swf:version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4871    async fn register_workflow_type(
4872        &self,
4873        input: RegisterWorkflowTypeInput,
4874    ) -> Result<(), RusotoError<RegisterWorkflowTypeError>>;
4875
4876    /// <p>Records a <code>WorkflowExecutionCancelRequested</code> event in the currently running workflow execution identified by the given domain, workflowId, and runId. This logically requests the cancellation of the workflow execution as a whole. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> <note> <p>If the runId isn't specified, the <code>WorkflowExecutionCancelRequested</code> event is recorded in the history of the current open workflow execution with the specified workflowId in the domain.</p> </note> <note> <p>Because this action allows the workflow to properly clean up and gracefully close, it should be used instead of <a>TerminateWorkflowExecution</a> when possible.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4877    async fn request_cancel_workflow_execution(
4878        &self,
4879        input: RequestCancelWorkflowExecutionInput,
4880    ) -> Result<(), RusotoError<RequestCancelWorkflowExecutionError>>;
4881
4882    /// <p>Used by workers to tell the service that the <a>ActivityTask</a> identified by the <code>taskToken</code> was successfully canceled. Additional <code>details</code> can be provided using the <code>details</code> argument.</p> <p>These <code>details</code> (if provided) appear in the <code>ActivityTaskCanceled</code> event added to the workflow history.</p> <important> <p>Only use this operation if the <code>canceled</code> flag of a <a>RecordActivityTaskHeartbeat</a> request returns <code>true</code> and if the activity can be safely undone or abandoned.</p> </important> <p>A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to <a>RespondActivityTaskCompleted</a>, RespondActivityTaskCanceled, <a>RespondActivityTaskFailed</a>, or the task has <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-timeout-types">timed out</a>.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4883    async fn respond_activity_task_canceled(
4884        &self,
4885        input: RespondActivityTaskCanceledInput,
4886    ) -> Result<(), RusotoError<RespondActivityTaskCanceledError>>;
4887
4888    /// <p>Used by workers to tell the service that the <a>ActivityTask</a> identified by the <code>taskToken</code> completed successfully with a <code>result</code> (if provided). The <code>result</code> appears in the <code>ActivityTaskCompleted</code> event in the workflow history.</p> <important> <p>If the requested task doesn't complete successfully, use <a>RespondActivityTaskFailed</a> instead. If the worker finds that the task is canceled through the <code>canceled</code> flag returned by <a>RecordActivityTaskHeartbeat</a>, it should cancel the task, clean up and then call <a>RespondActivityTaskCanceled</a>.</p> </important> <p>A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, <a>RespondActivityTaskCanceled</a>, <a>RespondActivityTaskFailed</a>, or the task has <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-timeout-types">timed out</a>.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4889    async fn respond_activity_task_completed(
4890        &self,
4891        input: RespondActivityTaskCompletedInput,
4892    ) -> Result<(), RusotoError<RespondActivityTaskCompletedError>>;
4893
4894    /// <p>Used by workers to tell the service that the <a>ActivityTask</a> identified by the <code>taskToken</code> has failed with <code>reason</code> (if specified). The <code>reason</code> and <code>details</code> appear in the <code>ActivityTaskFailed</code> event added to the workflow history.</p> <p>A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to <a>RespondActivityTaskCompleted</a>, <a>RespondActivityTaskCanceled</a>, RespondActivityTaskFailed, or the task has <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-timeout-types">timed out</a>.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4895    async fn respond_activity_task_failed(
4896        &self,
4897        input: RespondActivityTaskFailedInput,
4898    ) -> Result<(), RusotoError<RespondActivityTaskFailedError>>;
4899
4900    /// <p>Used by deciders to tell the service that the <a>DecisionTask</a> identified by the <code>taskToken</code> has successfully completed. The <code>decisions</code> argument specifies the list of decisions made while processing the task.</p> <p>A <code>DecisionTaskCompleted</code> event is added to the workflow history. The <code>executionContext</code> specified is attached to the event in the workflow execution history.</p> <p> <b>Access Control</b> </p> <p>If an IAM policy grants permission to use <code>RespondDecisionTaskCompleted</code>, it can express permissions for the list of decisions in the <code>decisions</code> parameter. Each of the decisions has one or more parameters, much like a regular API call. To allow for policies to be as readable as possible, you can express permissions on decisions as if they were actual API calls, including applying conditions to some parameters. For more information, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4901    async fn respond_decision_task_completed(
4902        &self,
4903        input: RespondDecisionTaskCompletedInput,
4904    ) -> Result<(), RusotoError<RespondDecisionTaskCompletedError>>;
4905
4906    /// <p>Records a <code>WorkflowExecutionSignaled</code> event in the workflow execution history and creates a decision task for the workflow execution identified by the given domain, workflowId and runId. The event is recorded with the specified user defined signalName and input (if provided).</p> <note> <p>If a runId isn't specified, then the <code>WorkflowExecutionSignaled</code> event is recorded in the history of the current open workflow with the matching workflowId in the domain.</p> </note> <note> <p>If the specified workflow execution isn't open, this method fails with <code>UnknownResource</code>.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4907    async fn signal_workflow_execution(
4908        &self,
4909        input: SignalWorkflowExecutionInput,
4910    ) -> Result<(), RusotoError<SignalWorkflowExecutionError>>;
4911
4912    /// <p>Starts an execution of the workflow type in the specified domain using the provided <code>workflowId</code> and input data.</p> <p>This action returns the newly started workflow execution.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagList.member.0</code>: The key is <code>swf:tagList.member.0</code>.</p> </li> <li> <p> <code>tagList.member.1</code>: The key is <code>swf:tagList.member.1</code>.</p> </li> <li> <p> <code>tagList.member.2</code>: The key is <code>swf:tagList.member.2</code>.</p> </li> <li> <p> <code>tagList.member.3</code>: The key is <code>swf:tagList.member.3</code>.</p> </li> <li> <p> <code>tagList.member.4</code>: The key is <code>swf:tagList.member.4</code>.</p> </li> <li> <p> <code>taskList</code>: String constraint. The key is <code>swf:taskList.name</code>.</p> </li> <li> <p> <code>workflowType.name</code>: String constraint. The key is <code>swf:workflowType.name</code>.</p> </li> <li> <p> <code>workflowType.version</code>: String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4913    async fn start_workflow_execution(
4914        &self,
4915        input: StartWorkflowExecutionInput,
4916    ) -> Result<Run, RusotoError<StartWorkflowExecutionError>>;
4917
4918    /// <p><p>Add a tag to a Amazon SWF domain.</p> <note> <p>Amazon SWF supports a maximum of 50 tags per resource.</p> </note></p>
4919    async fn tag_resource(
4920        &self,
4921        input: TagResourceInput,
4922    ) -> Result<(), RusotoError<TagResourceError>>;
4923
4924    /// <p>Records a <code>WorkflowExecutionTerminated</code> event and forces closure of the workflow execution identified by the given domain, runId, and workflowId. The child policy, registered with the workflow type or specified when starting this execution, is applied to any open child workflow executions of this workflow execution.</p> <important> <p>If the identified workflow execution was in progress, it is terminated immediately.</p> </important> <note> <p>If a runId isn't specified, then the <code>WorkflowExecutionTerminated</code> event is recorded in the history of the current open workflow with the matching workflowId in the domain.</p> </note> <note> <p>You should consider using <a>RequestCancelWorkflowExecution</a> action instead because it allows the workflow to gracefully close while <a>TerminateWorkflowExecution</a> doesn't.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4925    async fn terminate_workflow_execution(
4926        &self,
4927        input: TerminateWorkflowExecutionInput,
4928    ) -> Result<(), RusotoError<TerminateWorkflowExecutionError>>;
4929
4930    /// <p>Undeprecates a previously deprecated <i>activity type</i>. After an activity type has been undeprecated, you can create new tasks of that activity type.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>activityType.name</code>: String constraint. The key is <code>swf:activityType.name</code>.</p> </li> <li> <p> <code>activityType.version</code>: String constraint. The key is <code>swf:activityType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4931    async fn undeprecate_activity_type(
4932        &self,
4933        input: UndeprecateActivityTypeInput,
4934    ) -> Result<(), RusotoError<UndeprecateActivityTypeError>>;
4935
4936    /// <p>Undeprecates a previously deprecated domain. After a domain has been undeprecated it can be used to create new workflow executions or register new types.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4937    async fn undeprecate_domain(
4938        &self,
4939        input: UndeprecateDomainInput,
4940    ) -> Result<(), RusotoError<UndeprecateDomainError>>;
4941
4942    /// <p>Undeprecates a previously deprecated <i>workflow type</i>. After a workflow type has been undeprecated, you can create new executions of that type. </p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>workflowType.name</code>: String constraint. The key is <code>swf:workflowType.name</code>.</p> </li> <li> <p> <code>workflowType.version</code>: String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4943    async fn undeprecate_workflow_type(
4944        &self,
4945        input: UndeprecateWorkflowTypeInput,
4946    ) -> Result<(), RusotoError<UndeprecateWorkflowTypeError>>;
4947
4948    /// <p>Remove a tag from a Amazon SWF domain.</p>
4949    async fn untag_resource(
4950        &self,
4951        input: UntagResourceInput,
4952    ) -> Result<(), RusotoError<UntagResourceError>>;
4953}
4954/// A client for the Amazon SWF API.
4955#[derive(Clone)]
4956pub struct SwfClient {
4957    client: Client,
4958    region: region::Region,
4959}
4960
4961impl SwfClient {
4962    /// Creates a client backed by the default tokio event loop.
4963    ///
4964    /// The client will use the default credentials provider and tls client.
4965    pub fn new(region: region::Region) -> SwfClient {
4966        SwfClient {
4967            client: Client::shared(),
4968            region,
4969        }
4970    }
4971
4972    pub fn new_with<P, D>(
4973        request_dispatcher: D,
4974        credentials_provider: P,
4975        region: region::Region,
4976    ) -> SwfClient
4977    where
4978        P: ProvideAwsCredentials + Send + Sync + 'static,
4979        D: DispatchSignedRequest + Send + Sync + 'static,
4980    {
4981        SwfClient {
4982            client: Client::new_with(credentials_provider, request_dispatcher),
4983            region,
4984        }
4985    }
4986
4987    pub fn new_with_client(client: Client, region: region::Region) -> SwfClient {
4988        SwfClient { client, region }
4989    }
4990}
4991
4992#[async_trait]
4993impl Swf for SwfClient {
4994    /// <p>Returns the number of closed workflow executions within the given domain that meet the specified filtering criteria.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagFilter.tag</code>: String constraint. The key is <code>swf:tagFilter.tag</code>.</p> </li> <li> <p> <code>typeFilter.name</code>: String constraint. The key is <code>swf:typeFilter.name</code>.</p> </li> <li> <p> <code>typeFilter.version</code>: String constraint. The key is <code>swf:typeFilter.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
4995    async fn count_closed_workflow_executions(
4996        &self,
4997        input: CountClosedWorkflowExecutionsInput,
4998    ) -> Result<WorkflowExecutionCount, RusotoError<CountClosedWorkflowExecutionsError>> {
4999        let mut request = self.new_signed_request("POST", "/");
5000        request.add_header(
5001            "x-amz-target",
5002            "SimpleWorkflowService.CountClosedWorkflowExecutions",
5003        );
5004        let encoded = serde_json::to_string(&input).unwrap();
5005        request.set_payload(Some(encoded));
5006
5007        let response = self
5008            .sign_and_dispatch(request, CountClosedWorkflowExecutionsError::from_response)
5009            .await?;
5010        let mut response = response;
5011        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5012        proto::json::ResponsePayload::new(&response).deserialize::<WorkflowExecutionCount, _>()
5013    }
5014
5015    /// <p>Returns the number of open workflow executions within the given domain that meet the specified filtering criteria.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagFilter.tag</code>: String constraint. The key is <code>swf:tagFilter.tag</code>.</p> </li> <li> <p> <code>typeFilter.name</code>: String constraint. The key is <code>swf:typeFilter.name</code>.</p> </li> <li> <p> <code>typeFilter.version</code>: String constraint. The key is <code>swf:typeFilter.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5016    async fn count_open_workflow_executions(
5017        &self,
5018        input: CountOpenWorkflowExecutionsInput,
5019    ) -> Result<WorkflowExecutionCount, RusotoError<CountOpenWorkflowExecutionsError>> {
5020        let mut request = self.new_signed_request("POST", "/");
5021        request.add_header(
5022            "x-amz-target",
5023            "SimpleWorkflowService.CountOpenWorkflowExecutions",
5024        );
5025        let encoded = serde_json::to_string(&input).unwrap();
5026        request.set_payload(Some(encoded));
5027
5028        let response = self
5029            .sign_and_dispatch(request, CountOpenWorkflowExecutionsError::from_response)
5030            .await?;
5031        let mut response = response;
5032        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5033        proto::json::ResponsePayload::new(&response).deserialize::<WorkflowExecutionCount, _>()
5034    }
5035
5036    /// <p>Returns the estimated number of activity tasks in the specified task list. The count returned is an approximation and isn't guaranteed to be exact. If you specify a task list that no activity task was ever scheduled in then <code>0</code> is returned.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the <code>taskList.name</code> parameter by using a <code>Condition</code> element with the <code>swf:taskList.name</code> key to allow the action to access only certain task lists.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5037    async fn count_pending_activity_tasks(
5038        &self,
5039        input: CountPendingActivityTasksInput,
5040    ) -> Result<PendingTaskCount, RusotoError<CountPendingActivityTasksError>> {
5041        let mut request = self.new_signed_request("POST", "/");
5042        request.add_header(
5043            "x-amz-target",
5044            "SimpleWorkflowService.CountPendingActivityTasks",
5045        );
5046        let encoded = serde_json::to_string(&input).unwrap();
5047        request.set_payload(Some(encoded));
5048
5049        let response = self
5050            .sign_and_dispatch(request, CountPendingActivityTasksError::from_response)
5051            .await?;
5052        let mut response = response;
5053        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5054        proto::json::ResponsePayload::new(&response).deserialize::<PendingTaskCount, _>()
5055    }
5056
5057    /// <p>Returns the estimated number of decision tasks in the specified task list. The count returned is an approximation and isn't guaranteed to be exact. If you specify a task list that no decision task was ever scheduled in then <code>0</code> is returned.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the <code>taskList.name</code> parameter by using a <code>Condition</code> element with the <code>swf:taskList.name</code> key to allow the action to access only certain task lists.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5058    async fn count_pending_decision_tasks(
5059        &self,
5060        input: CountPendingDecisionTasksInput,
5061    ) -> Result<PendingTaskCount, RusotoError<CountPendingDecisionTasksError>> {
5062        let mut request = self.new_signed_request("POST", "/");
5063        request.add_header(
5064            "x-amz-target",
5065            "SimpleWorkflowService.CountPendingDecisionTasks",
5066        );
5067        let encoded = serde_json::to_string(&input).unwrap();
5068        request.set_payload(Some(encoded));
5069
5070        let response = self
5071            .sign_and_dispatch(request, CountPendingDecisionTasksError::from_response)
5072            .await?;
5073        let mut response = response;
5074        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5075        proto::json::ResponsePayload::new(&response).deserialize::<PendingTaskCount, _>()
5076    }
5077
5078    /// <p>Deprecates the specified <i>activity type</i>. After an activity type has been deprecated, you cannot create new tasks of that activity type. Tasks of this type that were scheduled before the type was deprecated continue to run.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>activityType.name</code>: String constraint. The key is <code>swf:activityType.name</code>.</p> </li> <li> <p> <code>activityType.version</code>: String constraint. The key is <code>swf:activityType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5079    async fn deprecate_activity_type(
5080        &self,
5081        input: DeprecateActivityTypeInput,
5082    ) -> Result<(), RusotoError<DeprecateActivityTypeError>> {
5083        let mut request = self.new_signed_request("POST", "/");
5084        request.add_header(
5085            "x-amz-target",
5086            "SimpleWorkflowService.DeprecateActivityType",
5087        );
5088        let encoded = serde_json::to_string(&input).unwrap();
5089        request.set_payload(Some(encoded));
5090
5091        let response = self
5092            .sign_and_dispatch(request, DeprecateActivityTypeError::from_response)
5093            .await?;
5094        std::mem::drop(response);
5095        Ok(())
5096    }
5097
5098    /// <p>Deprecates the specified domain. After a domain has been deprecated it cannot be used to create new workflow executions or register new types. However, you can still use visibility actions on this domain. Deprecating a domain also deprecates all activity and workflow types registered in the domain. Executions that were started before the domain was deprecated continues to run.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5099    async fn deprecate_domain(
5100        &self,
5101        input: DeprecateDomainInput,
5102    ) -> Result<(), RusotoError<DeprecateDomainError>> {
5103        let mut request = self.new_signed_request("POST", "/");
5104        request.add_header("x-amz-target", "SimpleWorkflowService.DeprecateDomain");
5105        let encoded = serde_json::to_string(&input).unwrap();
5106        request.set_payload(Some(encoded));
5107
5108        let response = self
5109            .sign_and_dispatch(request, DeprecateDomainError::from_response)
5110            .await?;
5111        std::mem::drop(response);
5112        Ok(())
5113    }
5114
5115    /// <p>Deprecates the specified <i>workflow type</i>. After a workflow type has been deprecated, you cannot create new executions of that type. Executions that were started before the type was deprecated continues to run. A deprecated workflow type may still be used when calling visibility actions.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>workflowType.name</code>: String constraint. The key is <code>swf:workflowType.name</code>.</p> </li> <li> <p> <code>workflowType.version</code>: String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5116    async fn deprecate_workflow_type(
5117        &self,
5118        input: DeprecateWorkflowTypeInput,
5119    ) -> Result<(), RusotoError<DeprecateWorkflowTypeError>> {
5120        let mut request = self.new_signed_request("POST", "/");
5121        request.add_header(
5122            "x-amz-target",
5123            "SimpleWorkflowService.DeprecateWorkflowType",
5124        );
5125        let encoded = serde_json::to_string(&input).unwrap();
5126        request.set_payload(Some(encoded));
5127
5128        let response = self
5129            .sign_and_dispatch(request, DeprecateWorkflowTypeError::from_response)
5130            .await?;
5131        std::mem::drop(response);
5132        Ok(())
5133    }
5134
5135    /// <p>Returns information about the specified activity type. This includes configuration settings provided when the type was registered and other general information about the type.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>activityType.name</code>: String constraint. The key is <code>swf:activityType.name</code>.</p> </li> <li> <p> <code>activityType.version</code>: String constraint. The key is <code>swf:activityType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5136    async fn describe_activity_type(
5137        &self,
5138        input: DescribeActivityTypeInput,
5139    ) -> Result<ActivityTypeDetail, RusotoError<DescribeActivityTypeError>> {
5140        let mut request = self.new_signed_request("POST", "/");
5141        request.add_header("x-amz-target", "SimpleWorkflowService.DescribeActivityType");
5142        let encoded = serde_json::to_string(&input).unwrap();
5143        request.set_payload(Some(encoded));
5144
5145        let response = self
5146            .sign_and_dispatch(request, DescribeActivityTypeError::from_response)
5147            .await?;
5148        let mut response = response;
5149        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5150        proto::json::ResponsePayload::new(&response).deserialize::<ActivityTypeDetail, _>()
5151    }
5152
5153    /// <p>Returns information about the specified domain, including description and status.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5154    async fn describe_domain(
5155        &self,
5156        input: DescribeDomainInput,
5157    ) -> Result<DomainDetail, RusotoError<DescribeDomainError>> {
5158        let mut request = self.new_signed_request("POST", "/");
5159        request.add_header("x-amz-target", "SimpleWorkflowService.DescribeDomain");
5160        let encoded = serde_json::to_string(&input).unwrap();
5161        request.set_payload(Some(encoded));
5162
5163        let response = self
5164            .sign_and_dispatch(request, DescribeDomainError::from_response)
5165            .await?;
5166        let mut response = response;
5167        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5168        proto::json::ResponsePayload::new(&response).deserialize::<DomainDetail, _>()
5169    }
5170
5171    /// <p>Returns information about the specified workflow execution including its type and some statistics.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5172    async fn describe_workflow_execution(
5173        &self,
5174        input: DescribeWorkflowExecutionInput,
5175    ) -> Result<WorkflowExecutionDetail, RusotoError<DescribeWorkflowExecutionError>> {
5176        let mut request = self.new_signed_request("POST", "/");
5177        request.add_header(
5178            "x-amz-target",
5179            "SimpleWorkflowService.DescribeWorkflowExecution",
5180        );
5181        let encoded = serde_json::to_string(&input).unwrap();
5182        request.set_payload(Some(encoded));
5183
5184        let response = self
5185            .sign_and_dispatch(request, DescribeWorkflowExecutionError::from_response)
5186            .await?;
5187        let mut response = response;
5188        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5189        proto::json::ResponsePayload::new(&response).deserialize::<WorkflowExecutionDetail, _>()
5190    }
5191
5192    /// <p>Returns information about the specified <i>workflow type</i>. This includes configuration settings specified when the type was registered and other information such as creation date, current status, etc.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>workflowType.name</code>: String constraint. The key is <code>swf:workflowType.name</code>.</p> </li> <li> <p> <code>workflowType.version</code>: String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5193    async fn describe_workflow_type(
5194        &self,
5195        input: DescribeWorkflowTypeInput,
5196    ) -> Result<WorkflowTypeDetail, RusotoError<DescribeWorkflowTypeError>> {
5197        let mut request = self.new_signed_request("POST", "/");
5198        request.add_header("x-amz-target", "SimpleWorkflowService.DescribeWorkflowType");
5199        let encoded = serde_json::to_string(&input).unwrap();
5200        request.set_payload(Some(encoded));
5201
5202        let response = self
5203            .sign_and_dispatch(request, DescribeWorkflowTypeError::from_response)
5204            .await?;
5205        let mut response = response;
5206        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5207        proto::json::ResponsePayload::new(&response).deserialize::<WorkflowTypeDetail, _>()
5208    }
5209
5210    /// <p>Returns the history of the specified workflow execution. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the <code>nextPageToken</code> returned by the initial call.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5211    async fn get_workflow_execution_history(
5212        &self,
5213        input: GetWorkflowExecutionHistoryInput,
5214    ) -> Result<History, RusotoError<GetWorkflowExecutionHistoryError>> {
5215        let mut request = self.new_signed_request("POST", "/");
5216        request.add_header(
5217            "x-amz-target",
5218            "SimpleWorkflowService.GetWorkflowExecutionHistory",
5219        );
5220        let encoded = serde_json::to_string(&input).unwrap();
5221        request.set_payload(Some(encoded));
5222
5223        let response = self
5224            .sign_and_dispatch(request, GetWorkflowExecutionHistoryError::from_response)
5225            .await?;
5226        let mut response = response;
5227        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5228        proto::json::ResponsePayload::new(&response).deserialize::<History, _>()
5229    }
5230
5231    /// <p>Returns information about all activities registered in the specified domain that match the specified name and registration status. The result includes information like creation date, current status of the activity, etc. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the <code>nextPageToken</code> returned by the initial call.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5232    async fn list_activity_types(
5233        &self,
5234        input: ListActivityTypesInput,
5235    ) -> Result<ActivityTypeInfos, RusotoError<ListActivityTypesError>> {
5236        let mut request = self.new_signed_request("POST", "/");
5237        request.add_header("x-amz-target", "SimpleWorkflowService.ListActivityTypes");
5238        let encoded = serde_json::to_string(&input).unwrap();
5239        request.set_payload(Some(encoded));
5240
5241        let response = self
5242            .sign_and_dispatch(request, ListActivityTypesError::from_response)
5243            .await?;
5244        let mut response = response;
5245        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5246        proto::json::ResponsePayload::new(&response).deserialize::<ActivityTypeInfos, _>()
5247    }
5248
5249    /// <p>Returns a list of closed workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagFilter.tag</code>: String constraint. The key is <code>swf:tagFilter.tag</code>.</p> </li> <li> <p> <code>typeFilter.name</code>: String constraint. The key is <code>swf:typeFilter.name</code>.</p> </li> <li> <p> <code>typeFilter.version</code>: String constraint. The key is <code>swf:typeFilter.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5250    async fn list_closed_workflow_executions(
5251        &self,
5252        input: ListClosedWorkflowExecutionsInput,
5253    ) -> Result<WorkflowExecutionInfos, RusotoError<ListClosedWorkflowExecutionsError>> {
5254        let mut request = self.new_signed_request("POST", "/");
5255        request.add_header(
5256            "x-amz-target",
5257            "SimpleWorkflowService.ListClosedWorkflowExecutions",
5258        );
5259        let encoded = serde_json::to_string(&input).unwrap();
5260        request.set_payload(Some(encoded));
5261
5262        let response = self
5263            .sign_and_dispatch(request, ListClosedWorkflowExecutionsError::from_response)
5264            .await?;
5265        let mut response = response;
5266        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5267        proto::json::ResponsePayload::new(&response).deserialize::<WorkflowExecutionInfos, _>()
5268    }
5269
5270    /// <p>Returns the list of domains registered in the account. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains. The element must be set to <code>arn:aws:swf::AccountID:domain/*</code>, where <i>AccountID</i> is the account ID, with no dashes.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5271    async fn list_domains(
5272        &self,
5273        input: ListDomainsInput,
5274    ) -> Result<DomainInfos, RusotoError<ListDomainsError>> {
5275        let mut request = self.new_signed_request("POST", "/");
5276        request.add_header("x-amz-target", "SimpleWorkflowService.ListDomains");
5277        let encoded = serde_json::to_string(&input).unwrap();
5278        request.set_payload(Some(encoded));
5279
5280        let response = self
5281            .sign_and_dispatch(request, ListDomainsError::from_response)
5282            .await?;
5283        let mut response = response;
5284        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5285        proto::json::ResponsePayload::new(&response).deserialize::<DomainInfos, _>()
5286    }
5287
5288    /// <p>Returns a list of open workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagFilter.tag</code>: String constraint. The key is <code>swf:tagFilter.tag</code>.</p> </li> <li> <p> <code>typeFilter.name</code>: String constraint. The key is <code>swf:typeFilter.name</code>.</p> </li> <li> <p> <code>typeFilter.version</code>: String constraint. The key is <code>swf:typeFilter.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5289    async fn list_open_workflow_executions(
5290        &self,
5291        input: ListOpenWorkflowExecutionsInput,
5292    ) -> Result<WorkflowExecutionInfos, RusotoError<ListOpenWorkflowExecutionsError>> {
5293        let mut request = self.new_signed_request("POST", "/");
5294        request.add_header(
5295            "x-amz-target",
5296            "SimpleWorkflowService.ListOpenWorkflowExecutions",
5297        );
5298        let encoded = serde_json::to_string(&input).unwrap();
5299        request.set_payload(Some(encoded));
5300
5301        let response = self
5302            .sign_and_dispatch(request, ListOpenWorkflowExecutionsError::from_response)
5303            .await?;
5304        let mut response = response;
5305        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5306        proto::json::ResponsePayload::new(&response).deserialize::<WorkflowExecutionInfos, _>()
5307    }
5308
5309    /// <p>List tags for a given domain.</p>
5310    async fn list_tags_for_resource(
5311        &self,
5312        input: ListTagsForResourceInput,
5313    ) -> Result<ListTagsForResourceOutput, RusotoError<ListTagsForResourceError>> {
5314        let mut request = self.new_signed_request("POST", "/");
5315        request.add_header("x-amz-target", "SimpleWorkflowService.ListTagsForResource");
5316        let encoded = serde_json::to_string(&input).unwrap();
5317        request.set_payload(Some(encoded));
5318
5319        let response = self
5320            .sign_and_dispatch(request, ListTagsForResourceError::from_response)
5321            .await?;
5322        let mut response = response;
5323        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5324        proto::json::ResponsePayload::new(&response).deserialize::<ListTagsForResourceOutput, _>()
5325    }
5326
5327    /// <p>Returns information about workflow types in the specified domain. The results may be split into multiple pages that can be retrieved by making the call repeatedly.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5328    async fn list_workflow_types(
5329        &self,
5330        input: ListWorkflowTypesInput,
5331    ) -> Result<WorkflowTypeInfos, RusotoError<ListWorkflowTypesError>> {
5332        let mut request = self.new_signed_request("POST", "/");
5333        request.add_header("x-amz-target", "SimpleWorkflowService.ListWorkflowTypes");
5334        let encoded = serde_json::to_string(&input).unwrap();
5335        request.set_payload(Some(encoded));
5336
5337        let response = self
5338            .sign_and_dispatch(request, ListWorkflowTypesError::from_response)
5339            .await?;
5340        let mut response = response;
5341        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5342        proto::json::ResponsePayload::new(&response).deserialize::<WorkflowTypeInfos, _>()
5343    }
5344
5345    /// <p>Used by workers to get an <a>ActivityTask</a> from the specified activity <code>taskList</code>. This initiates a long poll, where the service holds the HTTP connection open and responds as soon as a task becomes available. The maximum time the service holds on to the request before responding is 60 seconds. If no task is available within 60 seconds, the poll returns an empty result. An empty result, in this context, means that an ActivityTask is returned, but that the value of taskToken is an empty string. If a task is returned, the worker should use its type to identify and process it correctly.</p> <important> <p>Workers should set their client side socket timeout to at least 70 seconds (10 seconds higher than the maximum time service may hold the poll request).</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the <code>taskList.name</code> parameter by using a <code>Condition</code> element with the <code>swf:taskList.name</code> key to allow the action to access only certain task lists.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5346    async fn poll_for_activity_task(
5347        &self,
5348        input: PollForActivityTaskInput,
5349    ) -> Result<ActivityTask, RusotoError<PollForActivityTaskError>> {
5350        let mut request = self.new_signed_request("POST", "/");
5351        request.add_header("x-amz-target", "SimpleWorkflowService.PollForActivityTask");
5352        let encoded = serde_json::to_string(&input).unwrap();
5353        request.set_payload(Some(encoded));
5354
5355        let response = self
5356            .sign_and_dispatch(request, PollForActivityTaskError::from_response)
5357            .await?;
5358        let mut response = response;
5359        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5360        proto::json::ResponsePayload::new(&response).deserialize::<ActivityTask, _>()
5361    }
5362
5363    /// <p>Used by deciders to get a <a>DecisionTask</a> from the specified decision <code>taskList</code>. A decision task may be returned for any open workflow execution that is using the specified task list. The task includes a paginated view of the history of the workflow execution. The decider should use the workflow type and the history to determine how to properly handle the task.</p> <p>This action initiates a long poll, where the service holds the HTTP connection open and responds as soon a task becomes available. If no decision task is available in the specified task list before the timeout of 60 seconds expires, an empty result is returned. An empty result, in this context, means that a DecisionTask is returned, but that the value of taskToken is an empty string.</p> <important> <p>Deciders should set their client side socket timeout to at least 70 seconds (10 seconds higher than the timeout).</p> </important> <important> <p>Because the number of workflow history events for a single workflow execution might be very large, the result returned might be split up across a number of pages. To retrieve subsequent pages, make additional calls to <code>PollForDecisionTask</code> using the <code>nextPageToken</code> returned by the initial call. Note that you do <i>not</i> call <code>GetWorkflowExecutionHistory</code> with this <code>nextPageToken</code>. Instead, call <code>PollForDecisionTask</code> again.</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the <code>taskList.name</code> parameter by using a <code>Condition</code> element with the <code>swf:taskList.name</code> key to allow the action to access only certain task lists.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5364    async fn poll_for_decision_task(
5365        &self,
5366        input: PollForDecisionTaskInput,
5367    ) -> Result<DecisionTask, RusotoError<PollForDecisionTaskError>> {
5368        let mut request = self.new_signed_request("POST", "/");
5369        request.add_header("x-amz-target", "SimpleWorkflowService.PollForDecisionTask");
5370        let encoded = serde_json::to_string(&input).unwrap();
5371        request.set_payload(Some(encoded));
5372
5373        let response = self
5374            .sign_and_dispatch(request, PollForDecisionTaskError::from_response)
5375            .await?;
5376        let mut response = response;
5377        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5378        proto::json::ResponsePayload::new(&response).deserialize::<DecisionTask, _>()
5379    }
5380
5381    /// <p>Used by activity workers to report to the service that the <a>ActivityTask</a> represented by the specified <code>taskToken</code> is still making progress. The worker can also specify details of the progress, for example percent complete, using the <code>details</code> parameter. This action can also be used by the worker as a mechanism to check if cancellation is being requested for the activity task. If a cancellation is being attempted for the specified task, then the boolean <code>cancelRequested</code> flag returned by the service is set to <code>true</code>.</p> <p>This action resets the <code>taskHeartbeatTimeout</code> clock. The <code>taskHeartbeatTimeout</code> is specified in <a>RegisterActivityType</a>.</p> <p>This action doesn't in itself create an event in the workflow execution history. However, if the task times out, the workflow execution history contains a <code>ActivityTaskTimedOut</code> event that contains the information from the last heartbeat generated by the activity worker.</p> <note> <p>The <code>taskStartToCloseTimeout</code> of an activity type is the maximum duration of an activity task, regardless of the number of <a>RecordActivityTaskHeartbeat</a> requests received. The <code>taskStartToCloseTimeout</code> is also specified in <a>RegisterActivityType</a>.</p> </note> <note> <p>This operation is only useful for long-lived activities to report liveliness of the task and to determine if a cancellation is being attempted.</p> </note> <important> <p>If the <code>cancelRequested</code> flag returns <code>true</code>, a cancellation is being attempted. If the worker can cancel the activity, it should respond with <a>RespondActivityTaskCanceled</a>. Otherwise, it should ignore the cancellation request.</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5382    async fn record_activity_task_heartbeat(
5383        &self,
5384        input: RecordActivityTaskHeartbeatInput,
5385    ) -> Result<ActivityTaskStatus, RusotoError<RecordActivityTaskHeartbeatError>> {
5386        let mut request = self.new_signed_request("POST", "/");
5387        request.add_header(
5388            "x-amz-target",
5389            "SimpleWorkflowService.RecordActivityTaskHeartbeat",
5390        );
5391        let encoded = serde_json::to_string(&input).unwrap();
5392        request.set_payload(Some(encoded));
5393
5394        let response = self
5395            .sign_and_dispatch(request, RecordActivityTaskHeartbeatError::from_response)
5396            .await?;
5397        let mut response = response;
5398        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5399        proto::json::ResponsePayload::new(&response).deserialize::<ActivityTaskStatus, _>()
5400    }
5401
5402    /// <p>Registers a new <i>activity type</i> along with its configuration settings in the specified domain.</p> <important> <p>A <code>TypeAlreadyExists</code> fault is returned if the type already exists in the domain. You cannot change any configuration settings of the type after its registration, and it must be registered as a new version.</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>defaultTaskList.name</code>: String constraint. The key is <code>swf:defaultTaskList.name</code>.</p> </li> <li> <p> <code>name</code>: String constraint. The key is <code>swf:name</code>.</p> </li> <li> <p> <code>version</code>: String constraint. The key is <code>swf:version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5403    async fn register_activity_type(
5404        &self,
5405        input: RegisterActivityTypeInput,
5406    ) -> Result<(), RusotoError<RegisterActivityTypeError>> {
5407        let mut request = self.new_signed_request("POST", "/");
5408        request.add_header("x-amz-target", "SimpleWorkflowService.RegisterActivityType");
5409        let encoded = serde_json::to_string(&input).unwrap();
5410        request.set_payload(Some(encoded));
5411
5412        let response = self
5413            .sign_and_dispatch(request, RegisterActivityTypeError::from_response)
5414            .await?;
5415        std::mem::drop(response);
5416        Ok(())
5417    }
5418
5419    /// <p>Registers a new domain.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>You cannot use an IAM policy to control domain access for this action. The name of the domain being registered is available as the resource of this action.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5420    async fn register_domain(
5421        &self,
5422        input: RegisterDomainInput,
5423    ) -> Result<(), RusotoError<RegisterDomainError>> {
5424        let mut request = self.new_signed_request("POST", "/");
5425        request.add_header("x-amz-target", "SimpleWorkflowService.RegisterDomain");
5426        let encoded = serde_json::to_string(&input).unwrap();
5427        request.set_payload(Some(encoded));
5428
5429        let response = self
5430            .sign_and_dispatch(request, RegisterDomainError::from_response)
5431            .await?;
5432        std::mem::drop(response);
5433        Ok(())
5434    }
5435
5436    /// <p>Registers a new <i>workflow type</i> and its configuration settings in the specified domain.</p> <p>The retention period for the workflow history is set by the <a>RegisterDomain</a> action.</p> <important> <p>If the type already exists, then a <code>TypeAlreadyExists</code> fault is returned. You cannot change the configuration settings of a workflow type once it is registered and it must be registered as a new version.</p> </important> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>defaultTaskList.name</code>: String constraint. The key is <code>swf:defaultTaskList.name</code>.</p> </li> <li> <p> <code>name</code>: String constraint. The key is <code>swf:name</code>.</p> </li> <li> <p> <code>version</code>: String constraint. The key is <code>swf:version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5437    async fn register_workflow_type(
5438        &self,
5439        input: RegisterWorkflowTypeInput,
5440    ) -> Result<(), RusotoError<RegisterWorkflowTypeError>> {
5441        let mut request = self.new_signed_request("POST", "/");
5442        request.add_header("x-amz-target", "SimpleWorkflowService.RegisterWorkflowType");
5443        let encoded = serde_json::to_string(&input).unwrap();
5444        request.set_payload(Some(encoded));
5445
5446        let response = self
5447            .sign_and_dispatch(request, RegisterWorkflowTypeError::from_response)
5448            .await?;
5449        std::mem::drop(response);
5450        Ok(())
5451    }
5452
5453    /// <p>Records a <code>WorkflowExecutionCancelRequested</code> event in the currently running workflow execution identified by the given domain, workflowId, and runId. This logically requests the cancellation of the workflow execution as a whole. It is up to the decider to take appropriate actions when it receives an execution history with this event.</p> <note> <p>If the runId isn't specified, the <code>WorkflowExecutionCancelRequested</code> event is recorded in the history of the current open workflow execution with the specified workflowId in the domain.</p> </note> <note> <p>Because this action allows the workflow to properly clean up and gracefully close, it should be used instead of <a>TerminateWorkflowExecution</a> when possible.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5454    async fn request_cancel_workflow_execution(
5455        &self,
5456        input: RequestCancelWorkflowExecutionInput,
5457    ) -> Result<(), RusotoError<RequestCancelWorkflowExecutionError>> {
5458        let mut request = self.new_signed_request("POST", "/");
5459        request.add_header(
5460            "x-amz-target",
5461            "SimpleWorkflowService.RequestCancelWorkflowExecution",
5462        );
5463        let encoded = serde_json::to_string(&input).unwrap();
5464        request.set_payload(Some(encoded));
5465
5466        let response = self
5467            .sign_and_dispatch(request, RequestCancelWorkflowExecutionError::from_response)
5468            .await?;
5469        std::mem::drop(response);
5470        Ok(())
5471    }
5472
5473    /// <p>Used by workers to tell the service that the <a>ActivityTask</a> identified by the <code>taskToken</code> was successfully canceled. Additional <code>details</code> can be provided using the <code>details</code> argument.</p> <p>These <code>details</code> (if provided) appear in the <code>ActivityTaskCanceled</code> event added to the workflow history.</p> <important> <p>Only use this operation if the <code>canceled</code> flag of a <a>RecordActivityTaskHeartbeat</a> request returns <code>true</code> and if the activity can be safely undone or abandoned.</p> </important> <p>A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to <a>RespondActivityTaskCompleted</a>, RespondActivityTaskCanceled, <a>RespondActivityTaskFailed</a>, or the task has <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-timeout-types">timed out</a>.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5474    async fn respond_activity_task_canceled(
5475        &self,
5476        input: RespondActivityTaskCanceledInput,
5477    ) -> Result<(), RusotoError<RespondActivityTaskCanceledError>> {
5478        let mut request = self.new_signed_request("POST", "/");
5479        request.add_header(
5480            "x-amz-target",
5481            "SimpleWorkflowService.RespondActivityTaskCanceled",
5482        );
5483        let encoded = serde_json::to_string(&input).unwrap();
5484        request.set_payload(Some(encoded));
5485
5486        let response = self
5487            .sign_and_dispatch(request, RespondActivityTaskCanceledError::from_response)
5488            .await?;
5489        std::mem::drop(response);
5490        Ok(())
5491    }
5492
5493    /// <p>Used by workers to tell the service that the <a>ActivityTask</a> identified by the <code>taskToken</code> completed successfully with a <code>result</code> (if provided). The <code>result</code> appears in the <code>ActivityTaskCompleted</code> event in the workflow history.</p> <important> <p>If the requested task doesn't complete successfully, use <a>RespondActivityTaskFailed</a> instead. If the worker finds that the task is canceled through the <code>canceled</code> flag returned by <a>RecordActivityTaskHeartbeat</a>, it should cancel the task, clean up and then call <a>RespondActivityTaskCanceled</a>.</p> </important> <p>A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, <a>RespondActivityTaskCanceled</a>, <a>RespondActivityTaskFailed</a>, or the task has <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-timeout-types">timed out</a>.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5494    async fn respond_activity_task_completed(
5495        &self,
5496        input: RespondActivityTaskCompletedInput,
5497    ) -> Result<(), RusotoError<RespondActivityTaskCompletedError>> {
5498        let mut request = self.new_signed_request("POST", "/");
5499        request.add_header(
5500            "x-amz-target",
5501            "SimpleWorkflowService.RespondActivityTaskCompleted",
5502        );
5503        let encoded = serde_json::to_string(&input).unwrap();
5504        request.set_payload(Some(encoded));
5505
5506        let response = self
5507            .sign_and_dispatch(request, RespondActivityTaskCompletedError::from_response)
5508            .await?;
5509        std::mem::drop(response);
5510        Ok(())
5511    }
5512
5513    /// <p>Used by workers to tell the service that the <a>ActivityTask</a> identified by the <code>taskToken</code> has failed with <code>reason</code> (if specified). The <code>reason</code> and <code>details</code> appear in the <code>ActivityTaskFailed</code> event added to the workflow history.</p> <p>A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to <a>RespondActivityTaskCompleted</a>, <a>RespondActivityTaskCanceled</a>, RespondActivityTaskFailed, or the task has <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-timeout-types">timed out</a>.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5514    async fn respond_activity_task_failed(
5515        &self,
5516        input: RespondActivityTaskFailedInput,
5517    ) -> Result<(), RusotoError<RespondActivityTaskFailedError>> {
5518        let mut request = self.new_signed_request("POST", "/");
5519        request.add_header(
5520            "x-amz-target",
5521            "SimpleWorkflowService.RespondActivityTaskFailed",
5522        );
5523        let encoded = serde_json::to_string(&input).unwrap();
5524        request.set_payload(Some(encoded));
5525
5526        let response = self
5527            .sign_and_dispatch(request, RespondActivityTaskFailedError::from_response)
5528            .await?;
5529        std::mem::drop(response);
5530        Ok(())
5531    }
5532
5533    /// <p>Used by deciders to tell the service that the <a>DecisionTask</a> identified by the <code>taskToken</code> has successfully completed. The <code>decisions</code> argument specifies the list of decisions made while processing the task.</p> <p>A <code>DecisionTaskCompleted</code> event is added to the workflow history. The <code>executionContext</code> specified is attached to the event in the workflow execution history.</p> <p> <b>Access Control</b> </p> <p>If an IAM policy grants permission to use <code>RespondDecisionTaskCompleted</code>, it can express permissions for the list of decisions in the <code>decisions</code> parameter. Each of the decisions has one or more parameters, much like a regular API call. To allow for policies to be as readable as possible, you can express permissions on decisions as if they were actual API calls, including applying conditions to some parameters. For more information, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5534    async fn respond_decision_task_completed(
5535        &self,
5536        input: RespondDecisionTaskCompletedInput,
5537    ) -> Result<(), RusotoError<RespondDecisionTaskCompletedError>> {
5538        let mut request = self.new_signed_request("POST", "/");
5539        request.add_header(
5540            "x-amz-target",
5541            "SimpleWorkflowService.RespondDecisionTaskCompleted",
5542        );
5543        let encoded = serde_json::to_string(&input).unwrap();
5544        request.set_payload(Some(encoded));
5545
5546        let response = self
5547            .sign_and_dispatch(request, RespondDecisionTaskCompletedError::from_response)
5548            .await?;
5549        std::mem::drop(response);
5550        Ok(())
5551    }
5552
5553    /// <p>Records a <code>WorkflowExecutionSignaled</code> event in the workflow execution history and creates a decision task for the workflow execution identified by the given domain, workflowId and runId. The event is recorded with the specified user defined signalName and input (if provided).</p> <note> <p>If a runId isn't specified, then the <code>WorkflowExecutionSignaled</code> event is recorded in the history of the current open workflow with the matching workflowId in the domain.</p> </note> <note> <p>If the specified workflow execution isn't open, this method fails with <code>UnknownResource</code>.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5554    async fn signal_workflow_execution(
5555        &self,
5556        input: SignalWorkflowExecutionInput,
5557    ) -> Result<(), RusotoError<SignalWorkflowExecutionError>> {
5558        let mut request = self.new_signed_request("POST", "/");
5559        request.add_header(
5560            "x-amz-target",
5561            "SimpleWorkflowService.SignalWorkflowExecution",
5562        );
5563        let encoded = serde_json::to_string(&input).unwrap();
5564        request.set_payload(Some(encoded));
5565
5566        let response = self
5567            .sign_and_dispatch(request, SignalWorkflowExecutionError::from_response)
5568            .await?;
5569        std::mem::drop(response);
5570        Ok(())
5571    }
5572
5573    /// <p>Starts an execution of the workflow type in the specified domain using the provided <code>workflowId</code> and input data.</p> <p>This action returns the newly started workflow execution.</p> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>tagList.member.0</code>: The key is <code>swf:tagList.member.0</code>.</p> </li> <li> <p> <code>tagList.member.1</code>: The key is <code>swf:tagList.member.1</code>.</p> </li> <li> <p> <code>tagList.member.2</code>: The key is <code>swf:tagList.member.2</code>.</p> </li> <li> <p> <code>tagList.member.3</code>: The key is <code>swf:tagList.member.3</code>.</p> </li> <li> <p> <code>tagList.member.4</code>: The key is <code>swf:tagList.member.4</code>.</p> </li> <li> <p> <code>taskList</code>: String constraint. The key is <code>swf:taskList.name</code>.</p> </li> <li> <p> <code>workflowType.name</code>: String constraint. The key is <code>swf:workflowType.name</code>.</p> </li> <li> <p> <code>workflowType.version</code>: String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5574    async fn start_workflow_execution(
5575        &self,
5576        input: StartWorkflowExecutionInput,
5577    ) -> Result<Run, RusotoError<StartWorkflowExecutionError>> {
5578        let mut request = self.new_signed_request("POST", "/");
5579        request.add_header(
5580            "x-amz-target",
5581            "SimpleWorkflowService.StartWorkflowExecution",
5582        );
5583        let encoded = serde_json::to_string(&input).unwrap();
5584        request.set_payload(Some(encoded));
5585
5586        let response = self
5587            .sign_and_dispatch(request, StartWorkflowExecutionError::from_response)
5588            .await?;
5589        let mut response = response;
5590        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5591        proto::json::ResponsePayload::new(&response).deserialize::<Run, _>()
5592    }
5593
5594    /// <p><p>Add a tag to a Amazon SWF domain.</p> <note> <p>Amazon SWF supports a maximum of 50 tags per resource.</p> </note></p>
5595    async fn tag_resource(
5596        &self,
5597        input: TagResourceInput,
5598    ) -> Result<(), RusotoError<TagResourceError>> {
5599        let mut request = self.new_signed_request("POST", "/");
5600        request.add_header("x-amz-target", "SimpleWorkflowService.TagResource");
5601        let encoded = serde_json::to_string(&input).unwrap();
5602        request.set_payload(Some(encoded));
5603
5604        let response = self
5605            .sign_and_dispatch(request, TagResourceError::from_response)
5606            .await?;
5607        std::mem::drop(response);
5608        Ok(())
5609    }
5610
5611    /// <p>Records a <code>WorkflowExecutionTerminated</code> event and forces closure of the workflow execution identified by the given domain, runId, and workflowId. The child policy, registered with the workflow type or specified when starting this execution, is applied to any open child workflow executions of this workflow execution.</p> <important> <p>If the identified workflow execution was in progress, it is terminated immediately.</p> </important> <note> <p>If a runId isn't specified, then the <code>WorkflowExecutionTerminated</code> event is recorded in the history of the current open workflow with the matching workflowId in the domain.</p> </note> <note> <p>You should consider using <a>RequestCancelWorkflowExecution</a> action instead because it allows the workflow to gracefully close while <a>TerminateWorkflowExecution</a> doesn't.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5612    async fn terminate_workflow_execution(
5613        &self,
5614        input: TerminateWorkflowExecutionInput,
5615    ) -> Result<(), RusotoError<TerminateWorkflowExecutionError>> {
5616        let mut request = self.new_signed_request("POST", "/");
5617        request.add_header(
5618            "x-amz-target",
5619            "SimpleWorkflowService.TerminateWorkflowExecution",
5620        );
5621        let encoded = serde_json::to_string(&input).unwrap();
5622        request.set_payload(Some(encoded));
5623
5624        let response = self
5625            .sign_and_dispatch(request, TerminateWorkflowExecutionError::from_response)
5626            .await?;
5627        std::mem::drop(response);
5628        Ok(())
5629    }
5630
5631    /// <p>Undeprecates a previously deprecated <i>activity type</i>. After an activity type has been undeprecated, you can create new tasks of that activity type.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>activityType.name</code>: String constraint. The key is <code>swf:activityType.name</code>.</p> </li> <li> <p> <code>activityType.version</code>: String constraint. The key is <code>swf:activityType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5632    async fn undeprecate_activity_type(
5633        &self,
5634        input: UndeprecateActivityTypeInput,
5635    ) -> Result<(), RusotoError<UndeprecateActivityTypeError>> {
5636        let mut request = self.new_signed_request("POST", "/");
5637        request.add_header(
5638            "x-amz-target",
5639            "SimpleWorkflowService.UndeprecateActivityType",
5640        );
5641        let encoded = serde_json::to_string(&input).unwrap();
5642        request.set_payload(Some(encoded));
5643
5644        let response = self
5645            .sign_and_dispatch(request, UndeprecateActivityTypeError::from_response)
5646            .await?;
5647        std::mem::drop(response);
5648        Ok(())
5649    }
5650
5651    /// <p>Undeprecates a previously deprecated domain. After a domain has been undeprecated it can be used to create new workflow executions or register new types.</p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>You cannot use an IAM policy to constrain this action's parameters.</p> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5652    async fn undeprecate_domain(
5653        &self,
5654        input: UndeprecateDomainInput,
5655    ) -> Result<(), RusotoError<UndeprecateDomainError>> {
5656        let mut request = self.new_signed_request("POST", "/");
5657        request.add_header("x-amz-target", "SimpleWorkflowService.UndeprecateDomain");
5658        let encoded = serde_json::to_string(&input).unwrap();
5659        request.set_payload(Some(encoded));
5660
5661        let response = self
5662            .sign_and_dispatch(request, UndeprecateDomainError::from_response)
5663            .await?;
5664        std::mem::drop(response);
5665        Ok(())
5666    }
5667
5668    /// <p>Undeprecates a previously deprecated <i>workflow type</i>. After a workflow type has been undeprecated, you can create new executions of that type. </p> <note> <p>This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.</p> </note> <p> <b>Access Control</b> </p> <p>You can use IAM policies to control this action's access to Amazon SWF resources as follows:</p> <ul> <li> <p>Use a <code>Resource</code> element with the domain name to limit the action to only specified domains.</p> </li> <li> <p>Use an <code>Action</code> element to allow or deny permission to call this action.</p> </li> <li> <p>Constrain the following parameters by using a <code>Condition</code> element with the appropriate keys.</p> <ul> <li> <p> <code>workflowType.name</code>: String constraint. The key is <code>swf:workflowType.name</code>.</p> </li> <li> <p> <code>workflowType.version</code>: String constraint. The key is <code>swf:workflowType.version</code>.</p> </li> </ul> </li> </ul> <p>If the caller doesn't have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's <code>cause</code> parameter is set to <code>OPERATION_NOT_PERMITTED</code>. For details and example IAM policies, see <a href="https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to Amazon SWF Workflows</a> in the <i>Amazon SWF Developer Guide</i>.</p>
5669    async fn undeprecate_workflow_type(
5670        &self,
5671        input: UndeprecateWorkflowTypeInput,
5672    ) -> Result<(), RusotoError<UndeprecateWorkflowTypeError>> {
5673        let mut request = self.new_signed_request("POST", "/");
5674        request.add_header(
5675            "x-amz-target",
5676            "SimpleWorkflowService.UndeprecateWorkflowType",
5677        );
5678        let encoded = serde_json::to_string(&input).unwrap();
5679        request.set_payload(Some(encoded));
5680
5681        let response = self
5682            .sign_and_dispatch(request, UndeprecateWorkflowTypeError::from_response)
5683            .await?;
5684        std::mem::drop(response);
5685        Ok(())
5686    }
5687
5688    /// <p>Remove a tag from a Amazon SWF domain.</p>
5689    async fn untag_resource(
5690        &self,
5691        input: UntagResourceInput,
5692    ) -> Result<(), RusotoError<UntagResourceError>> {
5693        let mut request = self.new_signed_request("POST", "/");
5694        request.add_header("x-amz-target", "SimpleWorkflowService.UntagResource");
5695        let encoded = serde_json::to_string(&input).unwrap();
5696        request.set_payload(Some(encoded));
5697
5698        let response = self
5699            .sign_and_dispatch(request, UntagResourceError::from_response)
5700            .await?;
5701        std::mem::drop(response);
5702        Ok(())
5703    }
5704}