{-# 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.WorkMail.CreateUser -- 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 user who can be used in Amazon WorkMail by calling the RegisterToWorkMail operation. -- -- module Network.AWS.WorkMail.CreateUser ( -- * Creating a Request createUser , CreateUser -- * Request Lenses , cuOrganizationId , cuName , cuDisplayName , cuPassword -- * Destructuring the Response , createUserResponse , CreateUserResponse -- * Response Lenses , cursUserId , cursResponseStatus ) where import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response import Network.AWS.WorkMail.Types import Network.AWS.WorkMail.Types.Product -- | /See:/ 'createUser' smart constructor. data CreateUser = CreateUser' { _cuOrganizationId :: !Text , _cuName :: !Text , _cuDisplayName :: !Text , _cuPassword :: !(Sensitive Text) } deriving (Eq, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateUser' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cuOrganizationId' - The identifier of the organization for which the user is created. -- -- * 'cuName' - The name for the user to be created. -- -- * 'cuDisplayName' - The display name for the user to be created. -- -- * 'cuPassword' - The password for the user to be created. createUser :: Text -- ^ 'cuOrganizationId' -> Text -- ^ 'cuName' -> Text -- ^ 'cuDisplayName' -> Text -- ^ 'cuPassword' -> CreateUser createUser pOrganizationId_ pName_ pDisplayName_ pPassword_ = CreateUser' { _cuOrganizationId = pOrganizationId_ , _cuName = pName_ , _cuDisplayName = pDisplayName_ , _cuPassword = _Sensitive # pPassword_ } -- | The identifier of the organization for which the user is created. cuOrganizationId :: Lens' CreateUser Text cuOrganizationId = lens _cuOrganizationId (\ s a -> s{_cuOrganizationId = a}) -- | The name for the user to be created. cuName :: Lens' CreateUser Text cuName = lens _cuName (\ s a -> s{_cuName = a}) -- | The display name for the user to be created. cuDisplayName :: Lens' CreateUser Text cuDisplayName = lens _cuDisplayName (\ s a -> s{_cuDisplayName = a}) -- | The password for the user to be created. cuPassword :: Lens' CreateUser Text cuPassword = lens _cuPassword (\ s a -> s{_cuPassword = a}) . _Sensitive instance AWSRequest CreateUser where type Rs CreateUser = CreateUserResponse request = postJSON workMail response = receiveJSON (\ s h x -> CreateUserResponse' <$> (x .?> "UserId") <*> (pure (fromEnum s))) instance Hashable CreateUser where instance NFData CreateUser where instance ToHeaders CreateUser where toHeaders = const (mconcat ["X-Amz-Target" =# ("WorkMailService.CreateUser" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON CreateUser where toJSON CreateUser'{..} = object (catMaybes [Just ("OrganizationId" .= _cuOrganizationId), Just ("Name" .= _cuName), Just ("DisplayName" .= _cuDisplayName), Just ("Password" .= _cuPassword)]) instance ToPath CreateUser where toPath = const "/" instance ToQuery CreateUser where toQuery = const mempty -- | /See:/ 'createUserResponse' smart constructor. data CreateUserResponse = CreateUserResponse' { _cursUserId :: !(Maybe Text) , _cursResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateUserResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cursUserId' - The information regarding the newly created user. -- -- * 'cursResponseStatus' - -- | The response status code. createUserResponse :: Int -- ^ 'cursResponseStatus' -> CreateUserResponse createUserResponse pResponseStatus_ = CreateUserResponse' {_cursUserId = Nothing, _cursResponseStatus = pResponseStatus_} -- | The information regarding the newly created user. cursUserId :: Lens' CreateUserResponse (Maybe Text) cursUserId = lens _cursUserId (\ s a -> s{_cursUserId = a}) -- | -- | The response status code. cursResponseStatus :: Lens' CreateUserResponse Int cursResponseStatus = lens _cursResponseStatus (\ s a -> s{_cursResponseStatus = a}) instance NFData CreateUserResponse where