{-# 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.Organizations.AcceptHandshake -- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Sends a response to the originator of a handshake agreeing to the action proposed by the handshake request. -- -- -- This operation can be called only by the following principals when they also have the relevant IAM permissions: -- -- * __Invitation to join__ or __Approve all features request__ handshakes: only a principal from the member account. -- -- The user who calls the API for an invitation to join must have the @organizations:AcceptHandshake@ permission. If you enabled all features in the organization, then the user must also have the @iam:CreateServiceLinkedRole@ permission so that Organizations can create the required service-linked role named /OrgsServiceLinkedRoleName/ . For more information, see in the /AWS Organizations User Guide/ . -- -- * __Enable all features final confirmation__ handshake: only a principal from the master account. -- -- For more information about invitations, see in the /AWS Organizations User Guide/ . For more information about requests to enable all features in the organization, see in the /AWS Organizations User Guide/ . -- -- -- -- After you accept a handshake, it continues to appear in the results of relevant APIs for only 30 days. After that it is deleted. -- module Network.AWS.Organizations.AcceptHandshake ( -- * Creating a Request acceptHandshake , AcceptHandshake -- * Request Lenses , ahHandshakeId -- * Destructuring the Response , acceptHandshakeResponse , AcceptHandshakeResponse -- * Response Lenses , ahrsHandshake , ahrsResponseStatus ) where import Network.AWS.Lens import Network.AWS.Organizations.Types import Network.AWS.Organizations.Types.Product import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'acceptHandshake' smart constructor. newtype AcceptHandshake = AcceptHandshake' { _ahHandshakeId :: Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'AcceptHandshake' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ahHandshakeId' - The unique identifier (ID) of the handshake that you want to accept. The for handshake ID string requires "h-" followed by from 8 to 32 lower-case letters or digits. acceptHandshake :: Text -- ^ 'ahHandshakeId' -> AcceptHandshake acceptHandshake pHandshakeId_ = AcceptHandshake' {_ahHandshakeId = pHandshakeId_} -- | The unique identifier (ID) of the handshake that you want to accept. The for handshake ID string requires "h-" followed by from 8 to 32 lower-case letters or digits. ahHandshakeId :: Lens' AcceptHandshake Text ahHandshakeId = lens _ahHandshakeId (\ s a -> s{_ahHandshakeId = a}); instance AWSRequest AcceptHandshake where type Rs AcceptHandshake = AcceptHandshakeResponse request = postJSON organizations response = receiveJSON (\ s h x -> AcceptHandshakeResponse' <$> (x .?> "Handshake") <*> (pure (fromEnum s))) instance Hashable AcceptHandshake where instance NFData AcceptHandshake where instance ToHeaders AcceptHandshake where toHeaders = const (mconcat ["X-Amz-Target" =# ("AWSOrganizationsV20161128.AcceptHandshake" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON AcceptHandshake where toJSON AcceptHandshake'{..} = object (catMaybes [Just ("HandshakeId" .= _ahHandshakeId)]) instance ToPath AcceptHandshake where toPath = const "/" instance ToQuery AcceptHandshake where toQuery = const mempty -- | /See:/ 'acceptHandshakeResponse' smart constructor. data AcceptHandshakeResponse = AcceptHandshakeResponse' { _ahrsHandshake :: !(Maybe Handshake) , _ahrsResponseStatus :: !Int } deriving (Eq, Show, Data, Typeable, Generic) -- | Creates a value of 'AcceptHandshakeResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ahrsHandshake' - A structure that contains details about the accepted handshake. -- -- * 'ahrsResponseStatus' - -- | The response status code. acceptHandshakeResponse :: Int -- ^ 'ahrsResponseStatus' -> AcceptHandshakeResponse acceptHandshakeResponse pResponseStatus_ = AcceptHandshakeResponse' {_ahrsHandshake = Nothing, _ahrsResponseStatus = pResponseStatus_} -- | A structure that contains details about the accepted handshake. ahrsHandshake :: Lens' AcceptHandshakeResponse (Maybe Handshake) ahrsHandshake = lens _ahrsHandshake (\ s a -> s{_ahrsHandshake = a}); -- | -- | The response status code. ahrsResponseStatus :: Lens' AcceptHandshakeResponse Int ahrsResponseStatus = lens _ahrsResponseStatus (\ s a -> s{_ahrsResponseStatus = a}); instance NFData AcceptHandshakeResponse where