{-# 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.SQS.AddPermission -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Adds a permission to a queue for a specific -- . -- This allows for sharing access to the queue. -- -- When you create a queue, you have full control access rights for the -- queue. Only you (as owner of the queue) can grant or deny permissions to -- the queue. For more information about these permissions, see -- -- in the /Amazon SQS Developer Guide/. -- -- 'AddPermission' writes an Amazon SQS-generated policy. If you want to -- write your own policy, use < SetQueueAttributes> to upload your policy. -- For more information about writing your own policy, see -- -- in the /Amazon SQS Developer Guide/. -- -- Some API actions take lists of parameters. These lists are specified -- using the 'param.n' notation. Values of 'n' are integers starting from -- 1. For example, a parameter list with two elements looks like this: -- -- '&Attribute.1=this' -- -- '&Attribute.2=that' module Network.AWS.SQS.AddPermission ( -- * Creating a Request addPermission , AddPermission -- * Request Lenses , apQueueURL , apLabel , apAWSAccountIds , apActions -- * Destructuring the Response , addPermissionResponse , AddPermissionResponse ) where import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response import Network.AWS.SQS.Types import Network.AWS.SQS.Types.Product -- | /See:/ 'addPermission' smart constructor. data AddPermission = AddPermission' { _apQueueURL :: !Text , _apLabel :: !Text , _apAWSAccountIds :: ![Text] , _apActions :: ![Text] } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'AddPermission' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'apQueueURL' -- -- * 'apLabel' -- -- * 'apAWSAccountIds' -- -- * 'apActions' addPermission :: Text -- ^ 'apQueueURL' -> Text -- ^ 'apLabel' -> AddPermission addPermission pQueueURL_ pLabel_ = AddPermission' { _apQueueURL = pQueueURL_ , _apLabel = pLabel_ , _apAWSAccountIds = mempty , _apActions = mempty } -- | The URL of the Amazon SQS queue to take action on. apQueueURL :: Lens' AddPermission Text apQueueURL = lens _apQueueURL (\ s a -> s{_apQueueURL = a}); -- | The unique identification of the permission you\'re setting (e.g., -- 'AliceSendMessage'). Constraints: Maximum 80 characters; alphanumeric -- characters, hyphens (-), and underscores (_) are allowed. apLabel :: Lens' AddPermission Text apLabel = lens _apLabel (\ s a -> s{_apLabel = a}); -- | The AWS account number of the -- -- who will be given permission. The principal must have an AWS account, -- but does not need to be signed up for Amazon SQS. For information about -- locating the AWS account identification, see -- -- in the /Amazon SQS Developer Guide/. apAWSAccountIds :: Lens' AddPermission [Text] apAWSAccountIds = lens _apAWSAccountIds (\ s a -> s{_apAWSAccountIds = a}) . _Coerce; -- | The action the client wants to allow for the specified principal. The -- following are valid values: -- '* | SendMessage | ReceiveMessage | DeleteMessage | ChangeMessageVisibility | GetQueueAttributes | GetQueueUrl'. -- For more information about these actions, see -- -- in the /Amazon SQS Developer Guide/. -- -- Specifying 'SendMessage', 'DeleteMessage', or 'ChangeMessageVisibility' -- for the 'ActionName.n' also grants permissions for the corresponding -- batch versions of those actions: 'SendMessageBatch', -- 'DeleteMessageBatch', and 'ChangeMessageVisibilityBatch'. apActions :: Lens' AddPermission [Text] apActions = lens _apActions (\ s a -> s{_apActions = a}) . _Coerce; instance AWSRequest AddPermission where type Rs AddPermission = AddPermissionResponse request = postQuery sqs response = receiveNull AddPermissionResponse' instance Hashable AddPermission instance ToHeaders AddPermission where toHeaders = const mempty instance ToPath AddPermission where toPath = const "/" instance ToQuery AddPermission where toQuery AddPermission'{..} = mconcat ["Action" =: ("AddPermission" :: ByteString), "Version" =: ("2012-11-05" :: ByteString), "QueueUrl" =: _apQueueURL, "Label" =: _apLabel, toQueryList "AWSAccountId" _apAWSAccountIds, toQueryList "ActionName" _apActions] -- | /See:/ 'addPermissionResponse' smart constructor. data AddPermissionResponse = AddPermissionResponse' deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'AddPermissionResponse' with the minimum fields required to make a request. -- addPermissionResponse :: AddPermissionResponse addPermissionResponse = AddPermissionResponse'