%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE! %% See https://github.com/aws-beam/aws-codegen for more details. %% @doc Amazon Simple Workflow Service %% %% The Amazon Simple Workflow Service (Amazon SWF) makes it easy to build %% applications that use Amazon's cloud to coordinate work across distributed %% components. In Amazon SWF, a task represents a logical unit of work %% that is performed by a component of your workflow. Coordinating tasks in a %% workflow involves managing intertask dependencies, scheduling, and %% concurrency in accordance with the logical flow of the application. %% %% Amazon SWF gives you full control over implementing tasks and coordinating %% them without worrying about underlying complexities such as tracking their %% progress and maintaining their state. %% %% This documentation serves as reference only. For a broader overview of the %% Amazon SWF programming model, see the Amazon %% SWF Developer Guide . -module(aws_swf). -export([count_closed_workflow_executions/2, count_closed_workflow_executions/3, count_open_workflow_executions/2, count_open_workflow_executions/3, count_pending_activity_tasks/2, count_pending_activity_tasks/3, count_pending_decision_tasks/2, count_pending_decision_tasks/3, deprecate_activity_type/2, deprecate_activity_type/3, deprecate_domain/2, deprecate_domain/3, deprecate_workflow_type/2, deprecate_workflow_type/3, describe_activity_type/2, describe_activity_type/3, describe_domain/2, describe_domain/3, describe_workflow_execution/2, describe_workflow_execution/3, describe_workflow_type/2, describe_workflow_type/3, get_workflow_execution_history/2, get_workflow_execution_history/3, list_activity_types/2, list_activity_types/3, list_closed_workflow_executions/2, list_closed_workflow_executions/3, list_domains/2, list_domains/3, list_open_workflow_executions/2, list_open_workflow_executions/3, list_tags_for_resource/2, list_tags_for_resource/3, list_workflow_types/2, list_workflow_types/3, poll_for_activity_task/2, poll_for_activity_task/3, poll_for_decision_task/2, poll_for_decision_task/3, record_activity_task_heartbeat/2, record_activity_task_heartbeat/3, register_activity_type/2, register_activity_type/3, register_domain/2, register_domain/3, register_workflow_type/2, register_workflow_type/3, request_cancel_workflow_execution/2, request_cancel_workflow_execution/3, respond_activity_task_canceled/2, respond_activity_task_canceled/3, respond_activity_task_completed/2, respond_activity_task_completed/3, respond_activity_task_failed/2, respond_activity_task_failed/3, respond_decision_task_completed/2, respond_decision_task_completed/3, signal_workflow_execution/2, signal_workflow_execution/3, start_workflow_execution/2, start_workflow_execution/3, tag_resource/2, tag_resource/3, terminate_workflow_execution/2, terminate_workflow_execution/3, undeprecate_activity_type/2, undeprecate_activity_type/3, undeprecate_domain/2, undeprecate_domain/3, undeprecate_workflow_type/2, undeprecate_workflow_type/3, untag_resource/2, untag_resource/3]). -include_lib("hackney/include/hackney_lib.hrl"). %%==================================================================== %% API %%==================================================================== %% @doc Returns the number of closed workflow executions within the given %% domain that meet the specified filtering criteria. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. count_closed_workflow_executions(Client, Input) when is_map(Client), is_map(Input) -> count_closed_workflow_executions(Client, Input, []). count_closed_workflow_executions(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CountClosedWorkflowExecutions">>, Input, Options). %% @doc Returns the number of open workflow executions within the given %% domain that meet the specified filtering criteria. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. count_open_workflow_executions(Client, Input) when is_map(Client), is_map(Input) -> count_open_workflow_executions(Client, Input, []). count_open_workflow_executions(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CountOpenWorkflowExecutions">>, Input, Options). %% @doc 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 0 is returned. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. count_pending_activity_tasks(Client, Input) when is_map(Client), is_map(Input) -> count_pending_activity_tasks(Client, Input, []). count_pending_activity_tasks(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CountPendingActivityTasks">>, Input, Options). %% @doc 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 0 is returned. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. count_pending_decision_tasks(Client, Input) when is_map(Client), is_map(Input) -> count_pending_decision_tasks(Client, Input, []). count_pending_decision_tasks(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CountPendingDecisionTasks">>, Input, Options). %% @doc Deprecates the specified activity type. 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. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. deprecate_activity_type(Client, Input) when is_map(Client), is_map(Input) -> deprecate_activity_type(Client, Input, []). deprecate_activity_type(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeprecateActivityType">>, Input, Options). %% @doc 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. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. deprecate_domain(Client, Input) when is_map(Client), is_map(Input) -> deprecate_domain(Client, Input, []). deprecate_domain(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeprecateDomain">>, Input, Options). %% @doc Deprecates the specified workflow type. 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. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. deprecate_workflow_type(Client, Input) when is_map(Client), is_map(Input) -> deprecate_workflow_type(Client, Input, []). deprecate_workflow_type(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeprecateWorkflowType">>, Input, Options). %% @doc Returns information about the specified activity type. This includes %% configuration settings provided when the type was registered and other %% general information about the type. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. describe_activity_type(Client, Input) when is_map(Client), is_map(Input) -> describe_activity_type(Client, Input, []). describe_activity_type(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeActivityType">>, Input, Options). %% @doc Returns information about the specified domain, including description %% and status. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. describe_domain(Client, Input) when is_map(Client), is_map(Input) -> describe_domain(Client, Input, []). describe_domain(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeDomain">>, Input, Options). %% @doc Returns information about the specified workflow execution including %% its type and some statistics. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. describe_workflow_execution(Client, Input) when is_map(Client), is_map(Input) -> describe_workflow_execution(Client, Input, []). describe_workflow_execution(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeWorkflowExecution">>, Input, Options). %% @doc Returns information about the specified workflow type. This %% includes configuration settings specified when the type was registered and %% other information such as creation date, current status, etc. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. describe_workflow_type(Client, Input) when is_map(Client), is_map(Input) -> describe_workflow_type(Client, Input, []). describe_workflow_type(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeWorkflowType">>, Input, Options). %% @doc 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 nextPageToken returned by the initial %% call. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. get_workflow_execution_history(Client, Input) when is_map(Client), is_map(Input) -> get_workflow_execution_history(Client, Input, []). get_workflow_execution_history(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"GetWorkflowExecutionHistory">>, Input, Options). %% @doc 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 nextPageToken returned %% by the initial call. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. list_activity_types(Client, Input) when is_map(Client), is_map(Input) -> list_activity_types(Client, Input, []). list_activity_types(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListActivityTypes">>, Input, Options). %% @doc 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. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. list_closed_workflow_executions(Client, Input) when is_map(Client), is_map(Input) -> list_closed_workflow_executions(Client, Input, []). list_closed_workflow_executions(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListClosedWorkflowExecutions">>, Input, Options). %% @doc 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. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. list_domains(Client, Input) when is_map(Client), is_map(Input) -> list_domains(Client, Input, []). list_domains(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListDomains">>, Input, Options). %% @doc 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. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. list_open_workflow_executions(Client, Input) when is_map(Client), is_map(Input) -> list_open_workflow_executions(Client, Input, []). list_open_workflow_executions(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListOpenWorkflowExecutions">>, Input, Options). %% @doc List tags for a given domain. list_tags_for_resource(Client, Input) when is_map(Client), is_map(Input) -> list_tags_for_resource(Client, Input, []). list_tags_for_resource(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListTagsForResource">>, Input, Options). %% @doc 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. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. list_workflow_types(Client, Input) when is_map(Client), is_map(Input) -> list_workflow_types(Client, Input, []). list_workflow_types(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListWorkflowTypes">>, Input, Options). %% @doc Used by workers to get an ActivityTask from the specified %% activity taskList. 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. %% %% 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). %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. poll_for_activity_task(Client, Input) when is_map(Client), is_map(Input) -> poll_for_activity_task(Client, Input, []). poll_for_activity_task(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PollForActivityTask">>, Input, Options). %% @doc Used by deciders to get a DecisionTask from the specified %% decision taskList. 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. %% %% 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. %% %% Deciders should set their client side socket timeout to at %% least 70 seconds (10 seconds higher than the timeout). %% %% 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 PollForDecisionTask using the %% nextPageToken returned by the initial call. Note that you do %% not call GetWorkflowExecutionHistory with this %% nextPageToken. Instead, call PollForDecisionTask %% again. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. poll_for_decision_task(Client, Input) when is_map(Client), is_map(Input) -> poll_for_decision_task(Client, Input, []). poll_for_decision_task(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PollForDecisionTask">>, Input, Options). %% @doc Used by activity workers to report to the service that the %% ActivityTask represented by the specified taskToken is %% still making progress. The worker can also specify details of the %% progress, for example percent complete, using the details %% 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 %% cancelRequested flag returned by the service is set to %% true. %% %% This action resets the taskHeartbeatTimeout clock. The %% taskHeartbeatTimeout is specified in %% RegisterActivityType. %% %% 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 ActivityTaskTimedOut event that contains the %% information from the last heartbeat generated by the activity worker. %% %% The taskStartToCloseTimeout of an activity type is the %% maximum duration of an activity task, regardless of the number of %% RecordActivityTaskHeartbeat requests received. The %% taskStartToCloseTimeout is also specified in %% RegisterActivityType. %% %% This operation is only useful for long-lived activities to %% report liveliness of the task and to determine if a cancellation is being %% attempted. %% %% If the cancelRequested flag returns %% true, a cancellation is being attempted. If the worker can %% cancel the activity, it should respond with %% RespondActivityTaskCanceled. Otherwise, it should ignore the %% cancellation request. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. record_activity_task_heartbeat(Client, Input) when is_map(Client), is_map(Input) -> record_activity_task_heartbeat(Client, Input, []). record_activity_task_heartbeat(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RecordActivityTaskHeartbeat">>, Input, Options). %% @doc Registers a new activity type along with its configuration %% settings in the specified domain. %% %% A TypeAlreadyExists 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. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. register_activity_type(Client, Input) when is_map(Client), is_map(Input) -> register_activity_type(Client, Input, []). register_activity_type(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RegisterActivityType">>, Input, Options). %% @doc Registers a new domain. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. register_domain(Client, Input) when is_map(Client), is_map(Input) -> register_domain(Client, Input, []). register_domain(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RegisterDomain">>, Input, Options). %% @doc Registers a new workflow type and its configuration settings %% in the specified domain. %% %% The retention period for the workflow history is set by the %% RegisterDomain action. %% %% If the type already exists, then a %% TypeAlreadyExists 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. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. register_workflow_type(Client, Input) when is_map(Client), is_map(Input) -> register_workflow_type(Client, Input, []). register_workflow_type(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RegisterWorkflowType">>, Input, Options). %% @doc Records a WorkflowExecutionCancelRequested 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. %% %% If the runId isn't specified, the %% WorkflowExecutionCancelRequested event is recorded in the %% history of the current open workflow execution with the specified %% workflowId in the domain. %% %% Because this action allows the workflow to properly clean %% up and gracefully close, it should be used instead of %% TerminateWorkflowExecution when possible. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. request_cancel_workflow_execution(Client, Input) when is_map(Client), is_map(Input) -> request_cancel_workflow_execution(Client, Input, []). request_cancel_workflow_execution(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RequestCancelWorkflowExecution">>, Input, Options). %% @doc Used by workers to tell the service that the ActivityTask %% identified by the taskToken was successfully canceled. %% Additional details can be provided using the %% details argument. %% %% These details (if provided) appear in the %% ActivityTaskCanceled event added to the workflow history. %% %% Only use this operation if the canceled flag of a %% RecordActivityTaskHeartbeat request returns true and %% if the activity can be safely undone or abandoned. %% %% 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, RespondActivityTaskCanceled, %% RespondActivityTaskFailed, or the task has timed %% out. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. respond_activity_task_canceled(Client, Input) when is_map(Client), is_map(Input) -> respond_activity_task_canceled(Client, Input, []). respond_activity_task_canceled(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RespondActivityTaskCanceled">>, Input, Options). %% @doc Used by workers to tell the service that the ActivityTask %% identified by the taskToken completed successfully with a %% result (if provided). The result appears in the %% ActivityTaskCompleted event in the workflow history. %% %% If the requested task doesn't complete successfully, use %% RespondActivityTaskFailed instead. If the worker finds that the %% task is canceled through the canceled flag returned by %% RecordActivityTaskHeartbeat, it should cancel the task, clean up %% and then call RespondActivityTaskCanceled. %% %% 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, RespondActivityTaskCanceled, %% RespondActivityTaskFailed, or the task has timed %% out. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. respond_activity_task_completed(Client, Input) when is_map(Client), is_map(Input) -> respond_activity_task_completed(Client, Input, []). respond_activity_task_completed(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RespondActivityTaskCompleted">>, Input, Options). %% @doc Used by workers to tell the service that the ActivityTask %% identified by the taskToken has failed with %% reason (if specified). The reason and %% details appear in the ActivityTaskFailed event %% added to the workflow history. %% %% 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, RespondActivityTaskCanceled, %% RespondActivityTaskFailed, or the task has timed %% out. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. respond_activity_task_failed(Client, Input) when is_map(Client), is_map(Input) -> respond_activity_task_failed(Client, Input, []). respond_activity_task_failed(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RespondActivityTaskFailed">>, Input, Options). %% @doc Used by deciders to tell the service that the DecisionTask %% identified by the taskToken has successfully completed. The %% decisions argument specifies the list of decisions made while %% processing the task. %% %% A DecisionTaskCompleted event is added to the workflow %% history. The executionContext specified is attached to the %% event in the workflow execution history. %% %% Access Control %% %% If an IAM policy grants permission to use %% RespondDecisionTaskCompleted, it can express permissions for %% the list of decisions in the decisions 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 Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. respond_decision_task_completed(Client, Input) when is_map(Client), is_map(Input) -> respond_decision_task_completed(Client, Input, []). respond_decision_task_completed(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RespondDecisionTaskCompleted">>, Input, Options). %% @doc Records a WorkflowExecutionSignaled 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). %% %% If a runId isn't specified, then the %% WorkflowExecutionSignaled event is recorded in the history of %% the current open workflow with the matching workflowId in the domain. %% %% If the specified workflow execution isn't open, this method %% fails with UnknownResource. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. signal_workflow_execution(Client, Input) when is_map(Client), is_map(Input) -> signal_workflow_execution(Client, Input, []). signal_workflow_execution(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"SignalWorkflowExecution">>, Input, Options). %% @doc Starts an execution of the workflow type in the specified domain %% using the provided workflowId and input data. %% %% This action returns the newly started workflow execution. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. start_workflow_execution(Client, Input) when is_map(Client), is_map(Input) -> start_workflow_execution(Client, Input, []). start_workflow_execution(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"StartWorkflowExecution">>, Input, Options). %% @doc Add a tag to a Amazon SWF domain. %% %% Amazon SWF supports a maximum of 50 tags per resource. %% %% tag_resource(Client, Input) when is_map(Client), is_map(Input) -> tag_resource(Client, Input, []). tag_resource(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"TagResource">>, Input, Options). %% @doc Records a WorkflowExecutionTerminated 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. %% %% If the identified workflow execution was in progress, it is %% terminated immediately. %% %% If a runId isn't specified, then the %% WorkflowExecutionTerminated event is recorded in the history %% of the current open workflow with the matching workflowId in the domain. %% %% You should consider using %% RequestCancelWorkflowExecution action instead because it allows the %% workflow to gracefully close while TerminateWorkflowExecution %% doesn't. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. terminate_workflow_execution(Client, Input) when is_map(Client), is_map(Input) -> terminate_workflow_execution(Client, Input, []). terminate_workflow_execution(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"TerminateWorkflowExecution">>, Input, Options). %% @doc Undeprecates a previously deprecated activity type. After an %% activity type has been undeprecated, you can create new tasks of that %% activity type. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. undeprecate_activity_type(Client, Input) when is_map(Client), is_map(Input) -> undeprecate_activity_type(Client, Input, []). undeprecate_activity_type(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"UndeprecateActivityType">>, Input, Options). %% @doc Undeprecates a previously deprecated domain. After a domain has been %% undeprecated it can be used to create new workflow executions or register %% new types. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. undeprecate_domain(Client, Input) when is_map(Client), is_map(Input) -> undeprecate_domain(Client, Input, []). undeprecate_domain(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"UndeprecateDomain">>, Input, Options). %% @doc Undeprecates a previously deprecated workflow type. After a %% workflow type has been undeprecated, you can create new executions of that %% type. %% %% This operation is eventually consistent. The results are best %% effort and may not exactly reflect recent updates and changes. %% %% Access Control %% %% You can use IAM policies to control this action's access to Amazon SWF %% resources as follows: %% %% 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 %% cause parameter is set to %% OPERATION_NOT_PERMITTED. For details and example IAM %% policies, see Using %% IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF %% Developer Guide. undeprecate_workflow_type(Client, Input) when is_map(Client), is_map(Input) -> undeprecate_workflow_type(Client, Input, []). undeprecate_workflow_type(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"UndeprecateWorkflowType">>, Input, Options). %% @doc Remove a tag from a Amazon SWF domain. untag_resource(Client, Input) when is_map(Client), is_map(Input) -> untag_resource(Client, Input, []). untag_resource(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"UntagResource">>, Input, Options). %%==================================================================== %% Internal functions %%==================================================================== -spec request(aws_client:aws_client(), binary(), map(), list()) -> {ok, Result, {integer(), list(), hackney:client()}} | {error, Error, {integer(), list(), hackney:client()}} | {error, term()} when Result :: map() | undefined, Error :: {binary(), binary()}. request(Client, Action, Input, Options) -> Client1 = Client#{service => <<"swf">>}, Host = get_host(<<"swf">>, Client1), URL = get_url(Host, Client1), Headers = [ {<<"Host">>, Host}, {<<"Content-Type">>, <<"application/x-amz-json-1.0">>}, {<<"X-Amz-Target">>, << <<"SimpleWorkflowService.">>/binary, Action/binary>>} ], Payload = jsx:encode(Input), SignedHeaders = aws_request:sign_request(Client1, <<"POST">>, URL, Headers, Payload), Response = hackney:request(post, URL, SignedHeaders, Payload, Options), handle_response(Response). handle_response({ok, 200, ResponseHeaders, Client}) -> case hackney:body(Client) of {ok, <<>>} -> {ok, undefined, {200, ResponseHeaders, Client}}; {ok, Body} -> Result = jsx:decode(Body, [return_maps]), {ok, Result, {200, ResponseHeaders, Client}} end; handle_response({ok, StatusCode, ResponseHeaders, Client}) -> {ok, Body} = hackney:body(Client), Error = jsx:decode(Body, [return_maps]), Exception = maps:get(<<"__type">>, Error, undefined), Reason = maps:get(<<"message">>, Error, undefined), {error, {Exception, Reason}, {StatusCode, ResponseHeaders, Client}}; handle_response({error, Reason}) -> {error, Reason}. get_host(_EndpointPrefix, #{region := <<"local">>}) -> <<"localhost">>; get_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) -> aws_util:binary_join([EndpointPrefix, <<".">>, Region, <<".">>, Endpoint], <<"">>). get_url(Host, Client) -> Proto = maps:get(proto, Client), Port = maps:get(port, Client), aws_util:binary_join([Proto, <<"://">>, Host, <<":">>, Port, <<"/">>], <<"">>).