{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.DirectoryService.ConnectDirectory -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates an AD Connector to connect to a self-managed directory. -- -- Before you call @ConnectDirectory@, ensure that all of the required -- permissions have been explicitly granted through a policy. For details -- about what permissions are required to run the @ConnectDirectory@ -- operation, see -- . module Amazonka.DirectoryService.ConnectDirectory ( -- * Creating a Request ConnectDirectory (..), newConnectDirectory, -- * Request Lenses connectDirectory_description, connectDirectory_shortName, connectDirectory_tags, connectDirectory_name, connectDirectory_password, connectDirectory_size, connectDirectory_connectSettings, -- * Destructuring the Response ConnectDirectoryResponse (..), newConnectDirectoryResponse, -- * Response Lenses connectDirectoryResponse_directoryId, connectDirectoryResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.DirectoryService.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | Contains the inputs for the ConnectDirectory operation. -- -- /See:/ 'newConnectDirectory' smart constructor. data ConnectDirectory = ConnectDirectory' { -- | A description for the directory. description :: Prelude.Maybe Prelude.Text, -- | The NetBIOS name of your self-managed directory, such as @CORP@. shortName :: Prelude.Maybe Prelude.Text, -- | The tags to be assigned to AD Connector. tags :: Prelude.Maybe [Tag], -- | The fully qualified name of your self-managed directory, such as -- @corp.example.com@. name :: Prelude.Text, -- | The password for your self-managed user account. password :: Data.Sensitive Prelude.Text, -- | The size of the directory. size :: DirectorySize, -- | A DirectoryConnectSettings object that contains additional information -- for the operation. connectSettings :: DirectoryConnectSettings } deriving (Prelude.Eq, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ConnectDirectory' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'description', 'connectDirectory_description' - A description for the directory. -- -- 'shortName', 'connectDirectory_shortName' - The NetBIOS name of your self-managed directory, such as @CORP@. -- -- 'tags', 'connectDirectory_tags' - The tags to be assigned to AD Connector. -- -- 'name', 'connectDirectory_name' - The fully qualified name of your self-managed directory, such as -- @corp.example.com@. -- -- 'password', 'connectDirectory_password' - The password for your self-managed user account. -- -- 'size', 'connectDirectory_size' - The size of the directory. -- -- 'connectSettings', 'connectDirectory_connectSettings' - A DirectoryConnectSettings object that contains additional information -- for the operation. newConnectDirectory :: -- | 'name' Prelude.Text -> -- | 'password' Prelude.Text -> -- | 'size' DirectorySize -> -- | 'connectSettings' DirectoryConnectSettings -> ConnectDirectory newConnectDirectory pName_ pPassword_ pSize_ pConnectSettings_ = ConnectDirectory' { description = Prelude.Nothing, shortName = Prelude.Nothing, tags = Prelude.Nothing, name = pName_, password = Data._Sensitive Lens.# pPassword_, size = pSize_, connectSettings = pConnectSettings_ } -- | A description for the directory. connectDirectory_description :: Lens.Lens' ConnectDirectory (Prelude.Maybe Prelude.Text) connectDirectory_description = Lens.lens (\ConnectDirectory' {description} -> description) (\s@ConnectDirectory' {} a -> s {description = a} :: ConnectDirectory) -- | The NetBIOS name of your self-managed directory, such as @CORP@. connectDirectory_shortName :: Lens.Lens' ConnectDirectory (Prelude.Maybe Prelude.Text) connectDirectory_shortName = Lens.lens (\ConnectDirectory' {shortName} -> shortName) (\s@ConnectDirectory' {} a -> s {shortName = a} :: ConnectDirectory) -- | The tags to be assigned to AD Connector. connectDirectory_tags :: Lens.Lens' ConnectDirectory (Prelude.Maybe [Tag]) connectDirectory_tags = Lens.lens (\ConnectDirectory' {tags} -> tags) (\s@ConnectDirectory' {} a -> s {tags = a} :: ConnectDirectory) Prelude.. Lens.mapping Lens.coerced -- | The fully qualified name of your self-managed directory, such as -- @corp.example.com@. connectDirectory_name :: Lens.Lens' ConnectDirectory Prelude.Text connectDirectory_name = Lens.lens (\ConnectDirectory' {name} -> name) (\s@ConnectDirectory' {} a -> s {name = a} :: ConnectDirectory) -- | The password for your self-managed user account. connectDirectory_password :: Lens.Lens' ConnectDirectory Prelude.Text connectDirectory_password = Lens.lens (\ConnectDirectory' {password} -> password) (\s@ConnectDirectory' {} a -> s {password = a} :: ConnectDirectory) Prelude.. Data._Sensitive -- | The size of the directory. connectDirectory_size :: Lens.Lens' ConnectDirectory DirectorySize connectDirectory_size = Lens.lens (\ConnectDirectory' {size} -> size) (\s@ConnectDirectory' {} a -> s {size = a} :: ConnectDirectory) -- | A DirectoryConnectSettings object that contains additional information -- for the operation. connectDirectory_connectSettings :: Lens.Lens' ConnectDirectory DirectoryConnectSettings connectDirectory_connectSettings = Lens.lens (\ConnectDirectory' {connectSettings} -> connectSettings) (\s@ConnectDirectory' {} a -> s {connectSettings = a} :: ConnectDirectory) instance Core.AWSRequest ConnectDirectory where type AWSResponse ConnectDirectory = ConnectDirectoryResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> ConnectDirectoryResponse' Prelude.<$> (x Data..?> "DirectoryId") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable ConnectDirectory where hashWithSalt _salt ConnectDirectory' {..} = _salt `Prelude.hashWithSalt` description `Prelude.hashWithSalt` shortName `Prelude.hashWithSalt` tags `Prelude.hashWithSalt` name `Prelude.hashWithSalt` password `Prelude.hashWithSalt` size `Prelude.hashWithSalt` connectSettings instance Prelude.NFData ConnectDirectory where rnf ConnectDirectory' {..} = Prelude.rnf description `Prelude.seq` Prelude.rnf shortName `Prelude.seq` Prelude.rnf tags `Prelude.seq` Prelude.rnf name `Prelude.seq` Prelude.rnf password `Prelude.seq` Prelude.rnf size `Prelude.seq` Prelude.rnf connectSettings instance Data.ToHeaders ConnectDirectory where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "DirectoryService_20150416.ConnectDirectory" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON ConnectDirectory where toJSON ConnectDirectory' {..} = Data.object ( Prelude.catMaybes [ ("Description" Data..=) Prelude.<$> description, ("ShortName" Data..=) Prelude.<$> shortName, ("Tags" Data..=) Prelude.<$> tags, Prelude.Just ("Name" Data..= name), Prelude.Just ("Password" Data..= password), Prelude.Just ("Size" Data..= size), Prelude.Just ("ConnectSettings" Data..= connectSettings) ] ) instance Data.ToPath ConnectDirectory where toPath = Prelude.const "/" instance Data.ToQuery ConnectDirectory where toQuery = Prelude.const Prelude.mempty -- | Contains the results of the ConnectDirectory operation. -- -- /See:/ 'newConnectDirectoryResponse' smart constructor. data ConnectDirectoryResponse = ConnectDirectoryResponse' { -- | The identifier of the new directory. directoryId :: Prelude.Maybe Prelude.Text, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ConnectDirectoryResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'directoryId', 'connectDirectoryResponse_directoryId' - The identifier of the new directory. -- -- 'httpStatus', 'connectDirectoryResponse_httpStatus' - The response's http status code. newConnectDirectoryResponse :: -- | 'httpStatus' Prelude.Int -> ConnectDirectoryResponse newConnectDirectoryResponse pHttpStatus_ = ConnectDirectoryResponse' { directoryId = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The identifier of the new directory. connectDirectoryResponse_directoryId :: Lens.Lens' ConnectDirectoryResponse (Prelude.Maybe Prelude.Text) connectDirectoryResponse_directoryId = Lens.lens (\ConnectDirectoryResponse' {directoryId} -> directoryId) (\s@ConnectDirectoryResponse' {} a -> s {directoryId = a} :: ConnectDirectoryResponse) -- | The response's http status code. connectDirectoryResponse_httpStatus :: Lens.Lens' ConnectDirectoryResponse Prelude.Int connectDirectoryResponse_httpStatus = Lens.lens (\ConnectDirectoryResponse' {httpStatus} -> httpStatus) (\s@ConnectDirectoryResponse' {} a -> s {httpStatus = a} :: ConnectDirectoryResponse) instance Prelude.NFData ConnectDirectoryResponse where rnf ConnectDirectoryResponse' {..} = Prelude.rnf directoryId `Prelude.seq` Prelude.rnf httpStatus