{-# 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.IoT.CreateRoleAlias -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a role alias. -- -- module Network.AWS.IoT.CreateRoleAlias ( -- * Creating a Request createRoleAlias , CreateRoleAlias -- * Request Lenses , craCredentialDurationSeconds , craRoleAlias , craRoleARN -- * Destructuring the Response , createRoleAliasResponse , CreateRoleAliasResponse -- * Response Lenses , crarsRoleAliasARN , crarsRoleAlias , crarsResponseStatus ) where import Network.AWS.IoT.Types import Network.AWS.IoT.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'createRoleAlias' smart constructor. data CreateRoleAlias = CreateRoleAlias' { _craCredentialDurationSeconds :: !(Maybe Nat) , _craRoleAlias :: !Text , _craRoleARN :: !Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateRoleAlias' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'craCredentialDurationSeconds' - How long (in seconds) the credentials will be valid. -- -- * 'craRoleAlias' - The role alias that points to a role ARN. This allows you to change the role without having to update the device. -- -- * 'craRoleARN' - The role ARN. createRoleAlias :: Text -- ^ 'craRoleAlias' -> Text -- ^ 'craRoleARN' -> CreateRoleAlias createRoleAlias pRoleAlias_ pRoleARN_ = CreateRoleAlias' { _craCredentialDurationSeconds = Nothing , _craRoleAlias = pRoleAlias_ , _craRoleARN = pRoleARN_ } -- | How long (in seconds) the credentials will be valid. craCredentialDurationSeconds :: Lens' CreateRoleAlias (Maybe Natural) craCredentialDurationSeconds = lens _craCredentialDurationSeconds (\ s a -> s{_craCredentialDurationSeconds = a}) . mapping _Nat -- | The role alias that points to a role ARN. This allows you to change the role without having to update the device. craRoleAlias :: Lens' CreateRoleAlias Text craRoleAlias = lens _craRoleAlias (\ s a -> s{_craRoleAlias = a}) -- | The role ARN. craRoleARN :: Lens' CreateRoleAlias Text craRoleARN = lens _craRoleARN (\ s a -> s{_craRoleARN = a}) instance AWSRequest CreateRoleAlias where type Rs CreateRoleAlias = CreateRoleAliasResponse request = postJSON ioT response = receiveJSON (\ s h x -> CreateRoleAliasResponse' <$> (x .?> "roleAliasArn") <*> (x .?> "roleAlias") <*> (pure (fromEnum s))) instance Hashable CreateRoleAlias where instance NFData CreateRoleAlias where instance ToHeaders CreateRoleAlias where toHeaders = const mempty instance ToJSON CreateRoleAlias where toJSON CreateRoleAlias'{..} = object (catMaybes [("credentialDurationSeconds" .=) <$> _craCredentialDurationSeconds, Just ("roleArn" .= _craRoleARN)]) instance ToPath CreateRoleAlias where toPath CreateRoleAlias'{..} = mconcat ["/role-aliases/", toBS _craRoleAlias] instance ToQuery CreateRoleAlias where toQuery = const mempty -- | /See:/ 'createRoleAliasResponse' smart constructor. data CreateRoleAliasResponse = CreateRoleAliasResponse' { _crarsRoleAliasARN :: !(Maybe Text) , _crarsRoleAlias :: !(Maybe Text) , _crarsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateRoleAliasResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'crarsRoleAliasARN' - The role alias ARN. -- -- * 'crarsRoleAlias' - The role alias. -- -- * 'crarsResponseStatus' - -- | The response status code. createRoleAliasResponse :: Int -- ^ 'crarsResponseStatus' -> CreateRoleAliasResponse createRoleAliasResponse pResponseStatus_ = CreateRoleAliasResponse' { _crarsRoleAliasARN = Nothing , _crarsRoleAlias = Nothing , _crarsResponseStatus = pResponseStatus_ } -- | The role alias ARN. crarsRoleAliasARN :: Lens' CreateRoleAliasResponse (Maybe Text) crarsRoleAliasARN = lens _crarsRoleAliasARN (\ s a -> s{_crarsRoleAliasARN = a}) -- | The role alias. crarsRoleAlias :: Lens' CreateRoleAliasResponse (Maybe Text) crarsRoleAlias = lens _crarsRoleAlias (\ s a -> s{_crarsRoleAlias = a}) -- | -- | The response status code. crarsResponseStatus :: Lens' CreateRoleAliasResponse Int crarsResponseStatus = lens _crarsResponseStatus (\ s a -> s{_crarsResponseStatus = a}) instance NFData CreateRoleAliasResponse where