{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.SWF.RegisterActivityType -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Registers a new /activity type/ along with its configuration settings in the specified domain. -- -- -- /Important:/ 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: -- -- * Use a @Resource@ element with the domain name to limit the action to only specified domains. * Use an @Action@ element to allow or deny permission to call this action. * Constrain the following parameters by using a @Condition@ element with the appropriate keys. * @defaultTaskList.name@ : String constraint. The key is @swf:defaultTaskList.name@ . * @name@ : String constraint. The key is @swf:name@ . * @version@ : String constraint. The key is @swf:version@ . -- -- -- -- If the caller does not 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 will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see . -- module Network.AWS.SWF.RegisterActivityType ( -- * Creating a Request registerActivityType , RegisterActivityType -- * Request Lenses , ratDefaultTaskScheduleToStartTimeout , ratDefaultTaskList , ratDefaultTaskPriority , ratDefaultTaskHeartbeatTimeout , ratDefaultTaskScheduleToCloseTimeout , ratDefaultTaskStartToCloseTimeout , ratDescription , ratDomain , ratName , ratVersion -- * Destructuring the Response , registerActivityTypeResponse , RegisterActivityTypeResponse ) where import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response import Network.AWS.SWF.Types import Network.AWS.SWF.Types.Product -- | /See:/ 'registerActivityType' smart constructor. data RegisterActivityType = RegisterActivityType' { _ratDefaultTaskScheduleToStartTimeout :: !(Maybe Text) , _ratDefaultTaskList :: !(Maybe TaskList) , _ratDefaultTaskPriority :: !(Maybe Text) , _ratDefaultTaskHeartbeatTimeout :: !(Maybe Text) , _ratDefaultTaskScheduleToCloseTimeout :: !(Maybe Text) , _ratDefaultTaskStartToCloseTimeout :: !(Maybe Text) , _ratDescription :: !(Maybe Text) , _ratDomain :: !Text , _ratName :: !Text , _ratVersion :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'RegisterActivityType' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ratDefaultTaskScheduleToStartTimeout' - 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 @ScheduleActivityTask@ decision. The duration is specified in seconds; an integer greater than or equal to 0. The value "NONE" can be used to specify unlimited duration. -- -- * 'ratDefaultTaskList' - 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 is not provided when a task is scheduled through the @ScheduleActivityTask@ decision. -- -- * 'ratDefaultTaskPriority' - The default task priority to assign to the activity type. If not assigned, then "0" will be used. Valid values are integers that range from Java's @Integer.MIN_VALUE@ (-2147483648) to @Integer.MAX_VALUE@ (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see in the /Amazon Simple Workflow Developer Guide/ . -- -- * 'ratDefaultTaskHeartbeatTimeout' - If set, specifies the default maximum time before which a worker processing a task of this type must report progress by calling 'RecordActivityTaskHeartbeat' . If the timeout is exceeded, the activity task is automatically timed out. This default can be overridden when scheduling an activity task using the @ScheduleActivityTask@ decision. If the activity worker subsequently attempts to record a heartbeat or returns a result, the activity worker receives an @UnknownResource@ fault. In this case, Amazon SWF no longer considers the activity task to be valid; the activity worker should clean up the activity task. The duration is specified in seconds; an integer greater than or equal to 0. The value "NONE" can be used to specify unlimited duration. -- -- * 'ratDefaultTaskScheduleToCloseTimeout' - 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 @ScheduleActivityTask@ decision. The duration is specified in seconds; an integer greater than or equal to 0. The value "NONE" can be used to specify unlimited duration. -- -- * 'ratDefaultTaskStartToCloseTimeout' - 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 @ScheduleActivityTask@ decision. The duration is specified in seconds; an integer greater than or equal to 0. The value "NONE" can be used to specify unlimited duration. -- -- * 'ratDescription' - A textual description of the activity type. -- -- * 'ratDomain' - The name of the domain in which this activity is to be registered. -- -- * 'ratName' - The name of the activity type within the domain. The specified string must not start or end with whitespace. It must not contain a @:@ (colon), @/@ (slash), @|@ (vertical bar), or any control characters (\u0000-\u001f | \u007f - \u009f). Also, it must not contain the literal string quotarnquot. -- -- * 'ratVersion' - The version of the activity type. The specified string must not start or end with whitespace. It must not contain a @:@ (colon), @/@ (slash), @|@ (vertical bar), or any control characters (\u0000-\u001f | \u007f - \u009f). Also, it must not contain the literal string quotarnquot. registerActivityType :: Text -- ^ 'ratDomain' -> Text -- ^ 'ratName' -> Text -- ^ 'ratVersion' -> RegisterActivityType registerActivityType pDomain_ pName_ pVersion_ = RegisterActivityType' { _ratDefaultTaskScheduleToStartTimeout = Nothing , _ratDefaultTaskList = Nothing , _ratDefaultTaskPriority = Nothing , _ratDefaultTaskHeartbeatTimeout = Nothing , _ratDefaultTaskScheduleToCloseTimeout = Nothing , _ratDefaultTaskStartToCloseTimeout = Nothing , _ratDescription = Nothing , _ratDomain = pDomain_ , _ratName = pName_ , _ratVersion = pVersion_ } -- | 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 @ScheduleActivityTask@ decision. The duration is specified in seconds; an integer greater than or equal to 0. The value "NONE" can be used to specify unlimited duration. ratDefaultTaskScheduleToStartTimeout :: Lens' RegisterActivityType (Maybe Text) ratDefaultTaskScheduleToStartTimeout = lens _ratDefaultTaskScheduleToStartTimeout (\ s a -> s{_ratDefaultTaskScheduleToStartTimeout = a}); -- | 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 is not provided when a task is scheduled through the @ScheduleActivityTask@ decision. ratDefaultTaskList :: Lens' RegisterActivityType (Maybe TaskList) ratDefaultTaskList = lens _ratDefaultTaskList (\ s a -> s{_ratDefaultTaskList = a}); -- | The default task priority to assign to the activity type. If not assigned, then "0" will be used. Valid values are integers that range from Java's @Integer.MIN_VALUE@ (-2147483648) to @Integer.MAX_VALUE@ (2147483647). Higher numbers indicate higher priority. For more information about setting task priority, see in the /Amazon Simple Workflow Developer Guide/ . ratDefaultTaskPriority :: Lens' RegisterActivityType (Maybe Text) ratDefaultTaskPriority = lens _ratDefaultTaskPriority (\ s a -> s{_ratDefaultTaskPriority = a}); -- | If set, specifies the default maximum time before which a worker processing a task of this type must report progress by calling 'RecordActivityTaskHeartbeat' . If the timeout is exceeded, the activity task is automatically timed out. This default can be overridden when scheduling an activity task using the @ScheduleActivityTask@ decision. If the activity worker subsequently attempts to record a heartbeat or returns a result, the activity worker receives an @UnknownResource@ fault. In this case, Amazon SWF no longer considers the activity task to be valid; the activity worker should clean up the activity task. The duration is specified in seconds; an integer greater than or equal to 0. The value "NONE" can be used to specify unlimited duration. ratDefaultTaskHeartbeatTimeout :: Lens' RegisterActivityType (Maybe Text) ratDefaultTaskHeartbeatTimeout = lens _ratDefaultTaskHeartbeatTimeout (\ s a -> s{_ratDefaultTaskHeartbeatTimeout = a}); -- | 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 @ScheduleActivityTask@ decision. The duration is specified in seconds; an integer greater than or equal to 0. The value "NONE" can be used to specify unlimited duration. ratDefaultTaskScheduleToCloseTimeout :: Lens' RegisterActivityType (Maybe Text) ratDefaultTaskScheduleToCloseTimeout = lens _ratDefaultTaskScheduleToCloseTimeout (\ s a -> s{_ratDefaultTaskScheduleToCloseTimeout = a}); -- | 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 @ScheduleActivityTask@ decision. The duration is specified in seconds; an integer greater than or equal to 0. The value "NONE" can be used to specify unlimited duration. ratDefaultTaskStartToCloseTimeout :: Lens' RegisterActivityType (Maybe Text) ratDefaultTaskStartToCloseTimeout = lens _ratDefaultTaskStartToCloseTimeout (\ s a -> s{_ratDefaultTaskStartToCloseTimeout = a}); -- | A textual description of the activity type. ratDescription :: Lens' RegisterActivityType (Maybe Text) ratDescription = lens _ratDescription (\ s a -> s{_ratDescription = a}); -- | The name of the domain in which this activity is to be registered. ratDomain :: Lens' RegisterActivityType Text ratDomain = lens _ratDomain (\ s a -> s{_ratDomain = a}); -- | The name of the activity type within the domain. The specified string must not start or end with whitespace. It must not contain a @:@ (colon), @/@ (slash), @|@ (vertical bar), or any control characters (\u0000-\u001f | \u007f - \u009f). Also, it must not contain the literal string quotarnquot. ratName :: Lens' RegisterActivityType Text ratName = lens _ratName (\ s a -> s{_ratName = a}); -- | The version of the activity type. The specified string must not start or end with whitespace. It must not contain a @:@ (colon), @/@ (slash), @|@ (vertical bar), or any control characters (\u0000-\u001f | \u007f - \u009f). Also, it must not contain the literal string quotarnquot. ratVersion :: Lens' RegisterActivityType Text ratVersion = lens _ratVersion (\ s a -> s{_ratVersion = a}); instance AWSRequest RegisterActivityType where type Rs RegisterActivityType = RegisterActivityTypeResponse request = postJSON swf response = receiveNull RegisterActivityTypeResponse' instance Hashable RegisterActivityType instance NFData RegisterActivityType instance ToHeaders RegisterActivityType where toHeaders = const (mconcat ["X-Amz-Target" =# ("SimpleWorkflowService.RegisterActivityType" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.0" :: ByteString)]) instance ToJSON RegisterActivityType where toJSON RegisterActivityType'{..} = object (catMaybes [("defaultTaskScheduleToStartTimeout" .=) <$> _ratDefaultTaskScheduleToStartTimeout, ("defaultTaskList" .=) <$> _ratDefaultTaskList, ("defaultTaskPriority" .=) <$> _ratDefaultTaskPriority, ("defaultTaskHeartbeatTimeout" .=) <$> _ratDefaultTaskHeartbeatTimeout, ("defaultTaskScheduleToCloseTimeout" .=) <$> _ratDefaultTaskScheduleToCloseTimeout, ("defaultTaskStartToCloseTimeout" .=) <$> _ratDefaultTaskStartToCloseTimeout, ("description" .=) <$> _ratDescription, Just ("domain" .= _ratDomain), Just ("name" .= _ratName), Just ("version" .= _ratVersion)]) instance ToPath RegisterActivityType where toPath = const "/" instance ToQuery RegisterActivityType where toQuery = const mempty -- | /See:/ 'registerActivityTypeResponse' smart constructor. data RegisterActivityTypeResponse = RegisterActivityTypeResponse' deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'RegisterActivityTypeResponse' with the minimum fields required to make a request. -- registerActivityTypeResponse :: RegisterActivityTypeResponse registerActivityTypeResponse = RegisterActivityTypeResponse' instance NFData RegisterActivityTypeResponse