{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.DirectoryDescription
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DirectoryService.Types.DirectoryDescription where

import qualified Amazonka.Core as Core
import Amazonka.DirectoryService.Types.DirectoryConnectSettingsDescription
import Amazonka.DirectoryService.Types.DirectoryEdition
import Amazonka.DirectoryService.Types.DirectorySize
import Amazonka.DirectoryService.Types.DirectoryStage
import Amazonka.DirectoryService.Types.DirectoryType
import Amazonka.DirectoryService.Types.DirectoryVpcSettingsDescription
import Amazonka.DirectoryService.Types.OwnerDirectoryDescription
import Amazonka.DirectoryService.Types.RadiusSettings
import Amazonka.DirectoryService.Types.RadiusStatus
import Amazonka.DirectoryService.Types.RegionsInfo
import Amazonka.DirectoryService.Types.ShareMethod
import Amazonka.DirectoryService.Types.ShareStatus
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Contains information about an Directory Service directory.
--
-- /See:/ 'newDirectoryDescription' smart constructor.
data DirectoryDescription = DirectoryDescription'
  { -- | The edition associated with this directory.
    DirectoryDescription -> Maybe DirectoryEdition
edition :: Prelude.Maybe DirectoryEdition,
    -- | The status of the RADIUS MFA server connection.
    DirectoryDescription -> Maybe RadiusStatus
radiusStatus :: Prelude.Maybe RadiusStatus,
    -- | The current stage of the directory.
    DirectoryDescription -> Maybe DirectoryStage
stage :: Prelude.Maybe DirectoryStage,
    -- | The directory identifier.
    DirectoryDescription -> Maybe Text
directoryId :: Prelude.Maybe Prelude.Text,
    -- | The access URL for the directory, such as
    -- @http:\/\/\<alias>.awsapps.com@. If no alias has been created for the
    -- directory, @\<alias>@ is the directory identifier, such as
    -- @d-XXXXXXXXXX@.
    DirectoryDescription -> Maybe Text
accessUrl :: Prelude.Maybe Prelude.Text,
    -- | The short name of the directory.
    DirectoryDescription -> Maybe Text
shortName :: Prelude.Maybe Prelude.Text,
    -- | Lists the Regions where the directory has replicated.
    DirectoryDescription -> Maybe RegionsInfo
regionsInfo :: Prelude.Maybe RegionsInfo,
    -- | The directory size.
    DirectoryDescription -> Maybe DirectorySize
size :: Prelude.Maybe DirectorySize,
    -- | The desired number of domain controllers in the directory if the
    -- directory is Microsoft AD.
    DirectoryDescription -> Maybe Natural
desiredNumberOfDomainControllers :: Prelude.Maybe Prelude.Natural,
    -- | A RadiusSettings object that contains information about the RADIUS
    -- server configured for this directory.
    DirectoryDescription -> Maybe RadiusSettings
radiusSettings :: Prelude.Maybe RadiusSettings,
    -- | Specifies when the directory was created.
    DirectoryDescription -> Maybe POSIX
launchTime :: Prelude.Maybe Core.POSIX,
    -- | The alias for the directory. If no alias has been created for the
    -- directory, the alias is the directory identifier, such as
    -- @d-XXXXXXXXXX@.
    DirectoryDescription -> Maybe Text
alias :: Prelude.Maybe Prelude.Text,
    -- | Current directory status of the shared Managed Microsoft AD directory.
    DirectoryDescription -> Maybe ShareStatus
shareStatus :: Prelude.Maybe ShareStatus,
    -- | The fully qualified name of the directory.
    DirectoryDescription -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The method used when sharing a directory to determine whether the
    -- directory should be shared within your Amazon Web Services organization
    -- (@ORGANIZATIONS@) or with any Amazon Web Services account by sending a
    -- shared directory request (@HANDSHAKE@).
    DirectoryDescription -> Maybe ShareMethod
shareMethod :: Prelude.Maybe ShareMethod,
    -- | The date and time that the stage was last updated.
    DirectoryDescription -> Maybe POSIX
stageLastUpdatedDateTime :: Prelude.Maybe Core.POSIX,
    -- | Indicates if single sign-on is enabled for the directory. For more
    -- information, see EnableSso and DisableSso.
    DirectoryDescription -> Maybe Bool
ssoEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The IP addresses of the DNS servers for the directory. For a Simple AD
    -- or Microsoft AD directory, these are the IP addresses of the Simple AD
    -- or Microsoft AD directory servers. For an AD Connector directory, these
    -- are the IP addresses of the DNS servers or domain controllers in your
    -- self-managed directory to which the AD Connector is connected.
    DirectoryDescription -> Maybe [Text]
dnsIpAddrs :: Prelude.Maybe [Prelude.Text],
    -- | A DirectoryVpcSettingsDescription object that contains additional
    -- information about a directory. This member is only present if the
    -- directory is a Simple AD or Managed Microsoft AD directory.
    DirectoryDescription -> Maybe DirectoryVpcSettingsDescription
vpcSettings :: Prelude.Maybe DirectoryVpcSettingsDescription,
    -- | The directory size.
    DirectoryDescription -> Maybe DirectoryType
type' :: Prelude.Maybe DirectoryType,
    -- | Additional information about the directory stage.
    DirectoryDescription -> Maybe Text
stageReason :: Prelude.Maybe Prelude.Text,
    -- | A DirectoryConnectSettingsDescription object that contains additional
    -- information about an AD Connector directory. This member is only present
    -- if the directory is an AD Connector directory.
    DirectoryDescription -> Maybe DirectoryConnectSettingsDescription
connectSettings :: Prelude.Maybe DirectoryConnectSettingsDescription,
    -- | Describes the Managed Microsoft AD directory in the directory owner
    -- account.
    DirectoryDescription -> Maybe OwnerDirectoryDescription
ownerDirectoryDescription :: Prelude.Maybe OwnerDirectoryDescription,
    -- | The description for the directory.
    DirectoryDescription -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | A directory share request that is sent by the directory owner to the
    -- directory consumer. The request includes a typed message to help the
    -- directory consumer administrator determine whether to approve or reject
    -- the share invitation.
    DirectoryDescription -> Maybe (Sensitive Text)
shareNotes :: Prelude.Maybe (Core.Sensitive Prelude.Text)
  }
  deriving (DirectoryDescription -> DirectoryDescription -> Bool
(DirectoryDescription -> DirectoryDescription -> Bool)
-> (DirectoryDescription -> DirectoryDescription -> Bool)
-> Eq DirectoryDescription
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DirectoryDescription -> DirectoryDescription -> Bool
$c/= :: DirectoryDescription -> DirectoryDescription -> Bool
== :: DirectoryDescription -> DirectoryDescription -> Bool
$c== :: DirectoryDescription -> DirectoryDescription -> Bool
Prelude.Eq, Int -> DirectoryDescription -> ShowS
[DirectoryDescription] -> ShowS
DirectoryDescription -> String
(Int -> DirectoryDescription -> ShowS)
-> (DirectoryDescription -> String)
-> ([DirectoryDescription] -> ShowS)
-> Show DirectoryDescription
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DirectoryDescription] -> ShowS
$cshowList :: [DirectoryDescription] -> ShowS
show :: DirectoryDescription -> String
$cshow :: DirectoryDescription -> String
showsPrec :: Int -> DirectoryDescription -> ShowS
$cshowsPrec :: Int -> DirectoryDescription -> ShowS
Prelude.Show, (forall x. DirectoryDescription -> Rep DirectoryDescription x)
-> (forall x. Rep DirectoryDescription x -> DirectoryDescription)
-> Generic DirectoryDescription
forall x. Rep DirectoryDescription x -> DirectoryDescription
forall x. DirectoryDescription -> Rep DirectoryDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DirectoryDescription x -> DirectoryDescription
$cfrom :: forall x. DirectoryDescription -> Rep DirectoryDescription x
Prelude.Generic)

-- |
-- Create a value of 'DirectoryDescription' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'edition', 'directoryDescription_edition' - The edition associated with this directory.
--
-- 'radiusStatus', 'directoryDescription_radiusStatus' - The status of the RADIUS MFA server connection.
--
-- 'stage', 'directoryDescription_stage' - The current stage of the directory.
--
-- 'directoryId', 'directoryDescription_directoryId' - The directory identifier.
--
-- 'accessUrl', 'directoryDescription_accessUrl' - The access URL for the directory, such as
-- @http:\/\/\<alias>.awsapps.com@. If no alias has been created for the
-- directory, @\<alias>@ is the directory identifier, such as
-- @d-XXXXXXXXXX@.
--
-- 'shortName', 'directoryDescription_shortName' - The short name of the directory.
--
-- 'regionsInfo', 'directoryDescription_regionsInfo' - Lists the Regions where the directory has replicated.
--
-- 'size', 'directoryDescription_size' - The directory size.
--
-- 'desiredNumberOfDomainControllers', 'directoryDescription_desiredNumberOfDomainControllers' - The desired number of domain controllers in the directory if the
-- directory is Microsoft AD.
--
-- 'radiusSettings', 'directoryDescription_radiusSettings' - A RadiusSettings object that contains information about the RADIUS
-- server configured for this directory.
--
-- 'launchTime', 'directoryDescription_launchTime' - Specifies when the directory was created.
--
-- 'alias', 'directoryDescription_alias' - The alias for the directory. If no alias has been created for the
-- directory, the alias is the directory identifier, such as
-- @d-XXXXXXXXXX@.
--
-- 'shareStatus', 'directoryDescription_shareStatus' - Current directory status of the shared Managed Microsoft AD directory.
--
-- 'name', 'directoryDescription_name' - The fully qualified name of the directory.
--
-- 'shareMethod', 'directoryDescription_shareMethod' - The method used when sharing a directory to determine whether the
-- directory should be shared within your Amazon Web Services organization
-- (@ORGANIZATIONS@) or with any Amazon Web Services account by sending a
-- shared directory request (@HANDSHAKE@).
--
-- 'stageLastUpdatedDateTime', 'directoryDescription_stageLastUpdatedDateTime' - The date and time that the stage was last updated.
--
-- 'ssoEnabled', 'directoryDescription_ssoEnabled' - Indicates if single sign-on is enabled for the directory. For more
-- information, see EnableSso and DisableSso.
--
-- 'dnsIpAddrs', 'directoryDescription_dnsIpAddrs' - The IP addresses of the DNS servers for the directory. For a Simple AD
-- or Microsoft AD directory, these are the IP addresses of the Simple AD
-- or Microsoft AD directory servers. For an AD Connector directory, these
-- are the IP addresses of the DNS servers or domain controllers in your
-- self-managed directory to which the AD Connector is connected.
--
-- 'vpcSettings', 'directoryDescription_vpcSettings' - A DirectoryVpcSettingsDescription object that contains additional
-- information about a directory. This member is only present if the
-- directory is a Simple AD or Managed Microsoft AD directory.
--
-- 'type'', 'directoryDescription_type' - The directory size.
--
-- 'stageReason', 'directoryDescription_stageReason' - Additional information about the directory stage.
--
-- 'connectSettings', 'directoryDescription_connectSettings' - A DirectoryConnectSettingsDescription object that contains additional
-- information about an AD Connector directory. This member is only present
-- if the directory is an AD Connector directory.
--
-- 'ownerDirectoryDescription', 'directoryDescription_ownerDirectoryDescription' - Describes the Managed Microsoft AD directory in the directory owner
-- account.
--
-- 'description', 'directoryDescription_description' - The description for the directory.
--
-- 'shareNotes', 'directoryDescription_shareNotes' - A directory share request that is sent by the directory owner to the
-- directory consumer. The request includes a typed message to help the
-- directory consumer administrator determine whether to approve or reject
-- the share invitation.
newDirectoryDescription ::
  DirectoryDescription
newDirectoryDescription :: DirectoryDescription
newDirectoryDescription =
  DirectoryDescription' :: Maybe DirectoryEdition
-> Maybe RadiusStatus
-> Maybe DirectoryStage
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe RegionsInfo
-> Maybe DirectorySize
-> Maybe Natural
-> Maybe RadiusSettings
-> Maybe POSIX
-> Maybe Text
-> Maybe ShareStatus
-> Maybe Text
-> Maybe ShareMethod
-> Maybe POSIX
-> Maybe Bool
-> Maybe [Text]
-> Maybe DirectoryVpcSettingsDescription
-> Maybe DirectoryType
-> Maybe Text
-> Maybe DirectoryConnectSettingsDescription
-> Maybe OwnerDirectoryDescription
-> Maybe Text
-> Maybe (Sensitive Text)
-> DirectoryDescription
DirectoryDescription'
    { $sel:edition:DirectoryDescription' :: Maybe DirectoryEdition
edition = Maybe DirectoryEdition
forall a. Maybe a
Prelude.Nothing,
      $sel:radiusStatus:DirectoryDescription' :: Maybe RadiusStatus
radiusStatus = Maybe RadiusStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:stage:DirectoryDescription' :: Maybe DirectoryStage
stage = Maybe DirectoryStage
forall a. Maybe a
Prelude.Nothing,
      $sel:directoryId:DirectoryDescription' :: Maybe Text
directoryId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:accessUrl:DirectoryDescription' :: Maybe Text
accessUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:shortName:DirectoryDescription' :: Maybe Text
shortName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:regionsInfo:DirectoryDescription' :: Maybe RegionsInfo
regionsInfo = Maybe RegionsInfo
forall a. Maybe a
Prelude.Nothing,
      $sel:size:DirectoryDescription' :: Maybe DirectorySize
size = Maybe DirectorySize
forall a. Maybe a
Prelude.Nothing,
      $sel:desiredNumberOfDomainControllers:DirectoryDescription' :: Maybe Natural
desiredNumberOfDomainControllers = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:radiusSettings:DirectoryDescription' :: Maybe RadiusSettings
radiusSettings = Maybe RadiusSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:launchTime:DirectoryDescription' :: Maybe POSIX
launchTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:alias:DirectoryDescription' :: Maybe Text
alias = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:shareStatus:DirectoryDescription' :: Maybe ShareStatus
shareStatus = Maybe ShareStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:name:DirectoryDescription' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:shareMethod:DirectoryDescription' :: Maybe ShareMethod
shareMethod = Maybe ShareMethod
forall a. Maybe a
Prelude.Nothing,
      $sel:stageLastUpdatedDateTime:DirectoryDescription' :: Maybe POSIX
stageLastUpdatedDateTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:ssoEnabled:DirectoryDescription' :: Maybe Bool
ssoEnabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:dnsIpAddrs:DirectoryDescription' :: Maybe [Text]
dnsIpAddrs = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSettings:DirectoryDescription' :: Maybe DirectoryVpcSettingsDescription
vpcSettings = Maybe DirectoryVpcSettingsDescription
forall a. Maybe a
Prelude.Nothing,
      $sel:type':DirectoryDescription' :: Maybe DirectoryType
type' = Maybe DirectoryType
forall a. Maybe a
Prelude.Nothing,
      $sel:stageReason:DirectoryDescription' :: Maybe Text
stageReason = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:connectSettings:DirectoryDescription' :: Maybe DirectoryConnectSettingsDescription
connectSettings = Maybe DirectoryConnectSettingsDescription
forall a. Maybe a
Prelude.Nothing,
      $sel:ownerDirectoryDescription:DirectoryDescription' :: Maybe OwnerDirectoryDescription
ownerDirectoryDescription = Maybe OwnerDirectoryDescription
forall a. Maybe a
Prelude.Nothing,
      $sel:description:DirectoryDescription' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:shareNotes:DirectoryDescription' :: Maybe (Sensitive Text)
shareNotes = Maybe (Sensitive Text)
forall a. Maybe a
Prelude.Nothing
    }

-- | The edition associated with this directory.
directoryDescription_edition :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectoryEdition)
directoryDescription_edition :: (Maybe DirectoryEdition -> f (Maybe DirectoryEdition))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_edition = (DirectoryDescription -> Maybe DirectoryEdition)
-> (DirectoryDescription
    -> Maybe DirectoryEdition -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe DirectoryEdition)
     (Maybe DirectoryEdition)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe DirectoryEdition
edition :: Maybe DirectoryEdition
$sel:edition:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryEdition
edition} -> Maybe DirectoryEdition
edition) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe DirectoryEdition
a -> DirectoryDescription
s {$sel:edition:DirectoryDescription' :: Maybe DirectoryEdition
edition = Maybe DirectoryEdition
a} :: DirectoryDescription)

-- | The status of the RADIUS MFA server connection.
directoryDescription_radiusStatus :: Lens.Lens' DirectoryDescription (Prelude.Maybe RadiusStatus)
directoryDescription_radiusStatus :: (Maybe RadiusStatus -> f (Maybe RadiusStatus))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_radiusStatus = (DirectoryDescription -> Maybe RadiusStatus)
-> (DirectoryDescription
    -> Maybe RadiusStatus -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe RadiusStatus)
     (Maybe RadiusStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe RadiusStatus
radiusStatus :: Maybe RadiusStatus
$sel:radiusStatus:DirectoryDescription' :: DirectoryDescription -> Maybe RadiusStatus
radiusStatus} -> Maybe RadiusStatus
radiusStatus) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe RadiusStatus
a -> DirectoryDescription
s {$sel:radiusStatus:DirectoryDescription' :: Maybe RadiusStatus
radiusStatus = Maybe RadiusStatus
a} :: DirectoryDescription)

-- | The current stage of the directory.
directoryDescription_stage :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectoryStage)
directoryDescription_stage :: (Maybe DirectoryStage -> f (Maybe DirectoryStage))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_stage = (DirectoryDescription -> Maybe DirectoryStage)
-> (DirectoryDescription
    -> Maybe DirectoryStage -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe DirectoryStage)
     (Maybe DirectoryStage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe DirectoryStage
stage :: Maybe DirectoryStage
$sel:stage:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryStage
stage} -> Maybe DirectoryStage
stage) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe DirectoryStage
a -> DirectoryDescription
s {$sel:stage:DirectoryDescription' :: Maybe DirectoryStage
stage = Maybe DirectoryStage
a} :: DirectoryDescription)

-- | The directory identifier.
directoryDescription_directoryId :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_directoryId :: (Maybe Text -> f (Maybe Text))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_directoryId = (DirectoryDescription -> Maybe Text)
-> (DirectoryDescription -> Maybe Text -> DirectoryDescription)
-> Lens
     DirectoryDescription DirectoryDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe Text
directoryId :: Maybe Text
$sel:directoryId:DirectoryDescription' :: DirectoryDescription -> Maybe Text
directoryId} -> Maybe Text
directoryId) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe Text
a -> DirectoryDescription
s {$sel:directoryId:DirectoryDescription' :: Maybe Text
directoryId = Maybe Text
a} :: DirectoryDescription)

-- | The access URL for the directory, such as
-- @http:\/\/\<alias>.awsapps.com@. If no alias has been created for the
-- directory, @\<alias>@ is the directory identifier, such as
-- @d-XXXXXXXXXX@.
directoryDescription_accessUrl :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_accessUrl :: (Maybe Text -> f (Maybe Text))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_accessUrl = (DirectoryDescription -> Maybe Text)
-> (DirectoryDescription -> Maybe Text -> DirectoryDescription)
-> Lens
     DirectoryDescription DirectoryDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe Text
accessUrl :: Maybe Text
$sel:accessUrl:DirectoryDescription' :: DirectoryDescription -> Maybe Text
accessUrl} -> Maybe Text
accessUrl) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe Text
a -> DirectoryDescription
s {$sel:accessUrl:DirectoryDescription' :: Maybe Text
accessUrl = Maybe Text
a} :: DirectoryDescription)

-- | The short name of the directory.
directoryDescription_shortName :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_shortName :: (Maybe Text -> f (Maybe Text))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_shortName = (DirectoryDescription -> Maybe Text)
-> (DirectoryDescription -> Maybe Text -> DirectoryDescription)
-> Lens
     DirectoryDescription DirectoryDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe Text
shortName :: Maybe Text
$sel:shortName:DirectoryDescription' :: DirectoryDescription -> Maybe Text
shortName} -> Maybe Text
shortName) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe Text
a -> DirectoryDescription
s {$sel:shortName:DirectoryDescription' :: Maybe Text
shortName = Maybe Text
a} :: DirectoryDescription)

-- | Lists the Regions where the directory has replicated.
directoryDescription_regionsInfo :: Lens.Lens' DirectoryDescription (Prelude.Maybe RegionsInfo)
directoryDescription_regionsInfo :: (Maybe RegionsInfo -> f (Maybe RegionsInfo))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_regionsInfo = (DirectoryDescription -> Maybe RegionsInfo)
-> (DirectoryDescription
    -> Maybe RegionsInfo -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe RegionsInfo)
     (Maybe RegionsInfo)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe RegionsInfo
regionsInfo :: Maybe RegionsInfo
$sel:regionsInfo:DirectoryDescription' :: DirectoryDescription -> Maybe RegionsInfo
regionsInfo} -> Maybe RegionsInfo
regionsInfo) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe RegionsInfo
a -> DirectoryDescription
s {$sel:regionsInfo:DirectoryDescription' :: Maybe RegionsInfo
regionsInfo = Maybe RegionsInfo
a} :: DirectoryDescription)

-- | The directory size.
directoryDescription_size :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectorySize)
directoryDescription_size :: (Maybe DirectorySize -> f (Maybe DirectorySize))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_size = (DirectoryDescription -> Maybe DirectorySize)
-> (DirectoryDescription
    -> Maybe DirectorySize -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe DirectorySize)
     (Maybe DirectorySize)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe DirectorySize
size :: Maybe DirectorySize
$sel:size:DirectoryDescription' :: DirectoryDescription -> Maybe DirectorySize
size} -> Maybe DirectorySize
size) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe DirectorySize
a -> DirectoryDescription
s {$sel:size:DirectoryDescription' :: Maybe DirectorySize
size = Maybe DirectorySize
a} :: DirectoryDescription)

-- | The desired number of domain controllers in the directory if the
-- directory is Microsoft AD.
directoryDescription_desiredNumberOfDomainControllers :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Natural)
directoryDescription_desiredNumberOfDomainControllers :: (Maybe Natural -> f (Maybe Natural))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_desiredNumberOfDomainControllers = (DirectoryDescription -> Maybe Natural)
-> (DirectoryDescription -> Maybe Natural -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe Natural)
     (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe Natural
desiredNumberOfDomainControllers :: Maybe Natural
$sel:desiredNumberOfDomainControllers:DirectoryDescription' :: DirectoryDescription -> Maybe Natural
desiredNumberOfDomainControllers} -> Maybe Natural
desiredNumberOfDomainControllers) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe Natural
a -> DirectoryDescription
s {$sel:desiredNumberOfDomainControllers:DirectoryDescription' :: Maybe Natural
desiredNumberOfDomainControllers = Maybe Natural
a} :: DirectoryDescription)

-- | A RadiusSettings object that contains information about the RADIUS
-- server configured for this directory.
directoryDescription_radiusSettings :: Lens.Lens' DirectoryDescription (Prelude.Maybe RadiusSettings)
directoryDescription_radiusSettings :: (Maybe RadiusSettings -> f (Maybe RadiusSettings))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_radiusSettings = (DirectoryDescription -> Maybe RadiusSettings)
-> (DirectoryDescription
    -> Maybe RadiusSettings -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe RadiusSettings)
     (Maybe RadiusSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe RadiusSettings
radiusSettings :: Maybe RadiusSettings
$sel:radiusSettings:DirectoryDescription' :: DirectoryDescription -> Maybe RadiusSettings
radiusSettings} -> Maybe RadiusSettings
radiusSettings) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe RadiusSettings
a -> DirectoryDescription
s {$sel:radiusSettings:DirectoryDescription' :: Maybe RadiusSettings
radiusSettings = Maybe RadiusSettings
a} :: DirectoryDescription)

-- | Specifies when the directory was created.
directoryDescription_launchTime :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.UTCTime)
directoryDescription_launchTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_launchTime = (DirectoryDescription -> Maybe POSIX)
-> (DirectoryDescription -> Maybe POSIX -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe POSIX
launchTime :: Maybe POSIX
$sel:launchTime:DirectoryDescription' :: DirectoryDescription -> Maybe POSIX
launchTime} -> Maybe POSIX
launchTime) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe POSIX
a -> DirectoryDescription
s {$sel:launchTime:DirectoryDescription' :: Maybe POSIX
launchTime = Maybe POSIX
a} :: DirectoryDescription) ((Maybe POSIX -> f (Maybe POSIX))
 -> DirectoryDescription -> f DirectoryDescription)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DirectoryDescription
-> f DirectoryDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The alias for the directory. If no alias has been created for the
-- directory, the alias is the directory identifier, such as
-- @d-XXXXXXXXXX@.
directoryDescription_alias :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_alias :: (Maybe Text -> f (Maybe Text))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_alias = (DirectoryDescription -> Maybe Text)
-> (DirectoryDescription -> Maybe Text -> DirectoryDescription)
-> Lens
     DirectoryDescription DirectoryDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe Text
alias :: Maybe Text
$sel:alias:DirectoryDescription' :: DirectoryDescription -> Maybe Text
alias} -> Maybe Text
alias) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe Text
a -> DirectoryDescription
s {$sel:alias:DirectoryDescription' :: Maybe Text
alias = Maybe Text
a} :: DirectoryDescription)

-- | Current directory status of the shared Managed Microsoft AD directory.
directoryDescription_shareStatus :: Lens.Lens' DirectoryDescription (Prelude.Maybe ShareStatus)
directoryDescription_shareStatus :: (Maybe ShareStatus -> f (Maybe ShareStatus))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_shareStatus = (DirectoryDescription -> Maybe ShareStatus)
-> (DirectoryDescription
    -> Maybe ShareStatus -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe ShareStatus)
     (Maybe ShareStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe ShareStatus
shareStatus :: Maybe ShareStatus
$sel:shareStatus:DirectoryDescription' :: DirectoryDescription -> Maybe ShareStatus
shareStatus} -> Maybe ShareStatus
shareStatus) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe ShareStatus
a -> DirectoryDescription
s {$sel:shareStatus:DirectoryDescription' :: Maybe ShareStatus
shareStatus = Maybe ShareStatus
a} :: DirectoryDescription)

-- | The fully qualified name of the directory.
directoryDescription_name :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_name :: (Maybe Text -> f (Maybe Text))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_name = (DirectoryDescription -> Maybe Text)
-> (DirectoryDescription -> Maybe Text -> DirectoryDescription)
-> Lens
     DirectoryDescription DirectoryDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe Text
name :: Maybe Text
$sel:name:DirectoryDescription' :: DirectoryDescription -> Maybe Text
name} -> Maybe Text
name) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe Text
a -> DirectoryDescription
s {$sel:name:DirectoryDescription' :: Maybe Text
name = Maybe Text
a} :: DirectoryDescription)

-- | The method used when sharing a directory to determine whether the
-- directory should be shared within your Amazon Web Services organization
-- (@ORGANIZATIONS@) or with any Amazon Web Services account by sending a
-- shared directory request (@HANDSHAKE@).
directoryDescription_shareMethod :: Lens.Lens' DirectoryDescription (Prelude.Maybe ShareMethod)
directoryDescription_shareMethod :: (Maybe ShareMethod -> f (Maybe ShareMethod))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_shareMethod = (DirectoryDescription -> Maybe ShareMethod)
-> (DirectoryDescription
    -> Maybe ShareMethod -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe ShareMethod)
     (Maybe ShareMethod)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe ShareMethod
shareMethod :: Maybe ShareMethod
$sel:shareMethod:DirectoryDescription' :: DirectoryDescription -> Maybe ShareMethod
shareMethod} -> Maybe ShareMethod
shareMethod) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe ShareMethod
a -> DirectoryDescription
s {$sel:shareMethod:DirectoryDescription' :: Maybe ShareMethod
shareMethod = Maybe ShareMethod
a} :: DirectoryDescription)

-- | The date and time that the stage was last updated.
directoryDescription_stageLastUpdatedDateTime :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.UTCTime)
directoryDescription_stageLastUpdatedDateTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_stageLastUpdatedDateTime = (DirectoryDescription -> Maybe POSIX)
-> (DirectoryDescription -> Maybe POSIX -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe POSIX
stageLastUpdatedDateTime :: Maybe POSIX
$sel:stageLastUpdatedDateTime:DirectoryDescription' :: DirectoryDescription -> Maybe POSIX
stageLastUpdatedDateTime} -> Maybe POSIX
stageLastUpdatedDateTime) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe POSIX
a -> DirectoryDescription
s {$sel:stageLastUpdatedDateTime:DirectoryDescription' :: Maybe POSIX
stageLastUpdatedDateTime = Maybe POSIX
a} :: DirectoryDescription) ((Maybe POSIX -> f (Maybe POSIX))
 -> DirectoryDescription -> f DirectoryDescription)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DirectoryDescription
-> f DirectoryDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Indicates if single sign-on is enabled for the directory. For more
-- information, see EnableSso and DisableSso.
directoryDescription_ssoEnabled :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Bool)
directoryDescription_ssoEnabled :: (Maybe Bool -> f (Maybe Bool))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_ssoEnabled = (DirectoryDescription -> Maybe Bool)
-> (DirectoryDescription -> Maybe Bool -> DirectoryDescription)
-> Lens
     DirectoryDescription DirectoryDescription (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe Bool
ssoEnabled :: Maybe Bool
$sel:ssoEnabled:DirectoryDescription' :: DirectoryDescription -> Maybe Bool
ssoEnabled} -> Maybe Bool
ssoEnabled) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe Bool
a -> DirectoryDescription
s {$sel:ssoEnabled:DirectoryDescription' :: Maybe Bool
ssoEnabled = Maybe Bool
a} :: DirectoryDescription)

-- | The IP addresses of the DNS servers for the directory. For a Simple AD
-- or Microsoft AD directory, these are the IP addresses of the Simple AD
-- or Microsoft AD directory servers. For an AD Connector directory, these
-- are the IP addresses of the DNS servers or domain controllers in your
-- self-managed directory to which the AD Connector is connected.
directoryDescription_dnsIpAddrs :: Lens.Lens' DirectoryDescription (Prelude.Maybe [Prelude.Text])
directoryDescription_dnsIpAddrs :: (Maybe [Text] -> f (Maybe [Text]))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_dnsIpAddrs = (DirectoryDescription -> Maybe [Text])
-> (DirectoryDescription -> Maybe [Text] -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe [Text]
dnsIpAddrs :: Maybe [Text]
$sel:dnsIpAddrs:DirectoryDescription' :: DirectoryDescription -> Maybe [Text]
dnsIpAddrs} -> Maybe [Text]
dnsIpAddrs) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe [Text]
a -> DirectoryDescription
s {$sel:dnsIpAddrs:DirectoryDescription' :: Maybe [Text]
dnsIpAddrs = Maybe [Text]
a} :: DirectoryDescription) ((Maybe [Text] -> f (Maybe [Text]))
 -> DirectoryDescription -> f DirectoryDescription)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DirectoryDescription
-> f DirectoryDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A DirectoryVpcSettingsDescription object that contains additional
-- information about a directory. This member is only present if the
-- directory is a Simple AD or Managed Microsoft AD directory.
directoryDescription_vpcSettings :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectoryVpcSettingsDescription)
directoryDescription_vpcSettings :: (Maybe DirectoryVpcSettingsDescription
 -> f (Maybe DirectoryVpcSettingsDescription))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_vpcSettings = (DirectoryDescription -> Maybe DirectoryVpcSettingsDescription)
-> (DirectoryDescription
    -> Maybe DirectoryVpcSettingsDescription -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe DirectoryVpcSettingsDescription)
     (Maybe DirectoryVpcSettingsDescription)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe DirectoryVpcSettingsDescription
vpcSettings :: Maybe DirectoryVpcSettingsDescription
$sel:vpcSettings:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryVpcSettingsDescription
vpcSettings} -> Maybe DirectoryVpcSettingsDescription
vpcSettings) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe DirectoryVpcSettingsDescription
a -> DirectoryDescription
s {$sel:vpcSettings:DirectoryDescription' :: Maybe DirectoryVpcSettingsDescription
vpcSettings = Maybe DirectoryVpcSettingsDescription
a} :: DirectoryDescription)

-- | The directory size.
directoryDescription_type :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectoryType)
directoryDescription_type :: (Maybe DirectoryType -> f (Maybe DirectoryType))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_type = (DirectoryDescription -> Maybe DirectoryType)
-> (DirectoryDescription
    -> Maybe DirectoryType -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe DirectoryType)
     (Maybe DirectoryType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe DirectoryType
type' :: Maybe DirectoryType
$sel:type':DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryType
type'} -> Maybe DirectoryType
type') (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe DirectoryType
a -> DirectoryDescription
s {$sel:type':DirectoryDescription' :: Maybe DirectoryType
type' = Maybe DirectoryType
a} :: DirectoryDescription)

-- | Additional information about the directory stage.
directoryDescription_stageReason :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_stageReason :: (Maybe Text -> f (Maybe Text))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_stageReason = (DirectoryDescription -> Maybe Text)
-> (DirectoryDescription -> Maybe Text -> DirectoryDescription)
-> Lens
     DirectoryDescription DirectoryDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe Text
stageReason :: Maybe Text
$sel:stageReason:DirectoryDescription' :: DirectoryDescription -> Maybe Text
stageReason} -> Maybe Text
stageReason) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe Text
a -> DirectoryDescription
s {$sel:stageReason:DirectoryDescription' :: Maybe Text
stageReason = Maybe Text
a} :: DirectoryDescription)

-- | A DirectoryConnectSettingsDescription object that contains additional
-- information about an AD Connector directory. This member is only present
-- if the directory is an AD Connector directory.
directoryDescription_connectSettings :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectoryConnectSettingsDescription)
directoryDescription_connectSettings :: (Maybe DirectoryConnectSettingsDescription
 -> f (Maybe DirectoryConnectSettingsDescription))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_connectSettings = (DirectoryDescription -> Maybe DirectoryConnectSettingsDescription)
-> (DirectoryDescription
    -> Maybe DirectoryConnectSettingsDescription
    -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe DirectoryConnectSettingsDescription)
     (Maybe DirectoryConnectSettingsDescription)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe DirectoryConnectSettingsDescription
connectSettings :: Maybe DirectoryConnectSettingsDescription
$sel:connectSettings:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryConnectSettingsDescription
connectSettings} -> Maybe DirectoryConnectSettingsDescription
connectSettings) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe DirectoryConnectSettingsDescription
a -> DirectoryDescription
s {$sel:connectSettings:DirectoryDescription' :: Maybe DirectoryConnectSettingsDescription
connectSettings = Maybe DirectoryConnectSettingsDescription
a} :: DirectoryDescription)

-- | Describes the Managed Microsoft AD directory in the directory owner
-- account.
directoryDescription_ownerDirectoryDescription :: Lens.Lens' DirectoryDescription (Prelude.Maybe OwnerDirectoryDescription)
directoryDescription_ownerDirectoryDescription :: (Maybe OwnerDirectoryDescription
 -> f (Maybe OwnerDirectoryDescription))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_ownerDirectoryDescription = (DirectoryDescription -> Maybe OwnerDirectoryDescription)
-> (DirectoryDescription
    -> Maybe OwnerDirectoryDescription -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe OwnerDirectoryDescription)
     (Maybe OwnerDirectoryDescription)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe OwnerDirectoryDescription
ownerDirectoryDescription :: Maybe OwnerDirectoryDescription
$sel:ownerDirectoryDescription:DirectoryDescription' :: DirectoryDescription -> Maybe OwnerDirectoryDescription
ownerDirectoryDescription} -> Maybe OwnerDirectoryDescription
ownerDirectoryDescription) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe OwnerDirectoryDescription
a -> DirectoryDescription
s {$sel:ownerDirectoryDescription:DirectoryDescription' :: Maybe OwnerDirectoryDescription
ownerDirectoryDescription = Maybe OwnerDirectoryDescription
a} :: DirectoryDescription)

-- | The description for the directory.
directoryDescription_description :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_description :: (Maybe Text -> f (Maybe Text))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_description = (DirectoryDescription -> Maybe Text)
-> (DirectoryDescription -> Maybe Text -> DirectoryDescription)
-> Lens
     DirectoryDescription DirectoryDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe Text
description :: Maybe Text
$sel:description:DirectoryDescription' :: DirectoryDescription -> Maybe Text
description} -> Maybe Text
description) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe Text
a -> DirectoryDescription
s {$sel:description:DirectoryDescription' :: Maybe Text
description = Maybe Text
a} :: DirectoryDescription)

-- | A directory share request that is sent by the directory owner to the
-- directory consumer. The request includes a typed message to help the
-- directory consumer administrator determine whether to approve or reject
-- the share invitation.
directoryDescription_shareNotes :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_shareNotes :: (Maybe Text -> f (Maybe Text))
-> DirectoryDescription -> f DirectoryDescription
directoryDescription_shareNotes = (DirectoryDescription -> Maybe (Sensitive Text))
-> (DirectoryDescription
    -> Maybe (Sensitive Text) -> DirectoryDescription)
-> Lens
     DirectoryDescription
     DirectoryDescription
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe (Sensitive Text)
shareNotes :: Maybe (Sensitive Text)
$sel:shareNotes:DirectoryDescription' :: DirectoryDescription -> Maybe (Sensitive Text)
shareNotes} -> Maybe (Sensitive Text)
shareNotes) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe (Sensitive Text)
a -> DirectoryDescription
s {$sel:shareNotes:DirectoryDescription' :: Maybe (Sensitive Text)
shareNotes = Maybe (Sensitive Text)
a} :: DirectoryDescription) ((Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
 -> DirectoryDescription -> f DirectoryDescription)
-> ((Maybe Text -> f (Maybe Text))
    -> Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
-> (Maybe Text -> f (Maybe Text))
-> DirectoryDescription
-> f DirectoryDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso (Sensitive Text) (Sensitive Text) Text Text
-> Iso
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
     (Maybe Text)
     (Maybe Text)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso (Sensitive Text) (Sensitive Text) Text Text
forall a. Iso' (Sensitive a) a
Core._Sensitive

instance Core.FromJSON DirectoryDescription where
  parseJSON :: Value -> Parser DirectoryDescription
parseJSON =
    String
-> (Object -> Parser DirectoryDescription)
-> Value
-> Parser DirectoryDescription
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"DirectoryDescription"
      ( \Object
x ->
          Maybe DirectoryEdition
-> Maybe RadiusStatus
-> Maybe DirectoryStage
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe RegionsInfo
-> Maybe DirectorySize
-> Maybe Natural
-> Maybe RadiusSettings
-> Maybe POSIX
-> Maybe Text
-> Maybe ShareStatus
-> Maybe Text
-> Maybe ShareMethod
-> Maybe POSIX
-> Maybe Bool
-> Maybe [Text]
-> Maybe DirectoryVpcSettingsDescription
-> Maybe DirectoryType
-> Maybe Text
-> Maybe DirectoryConnectSettingsDescription
-> Maybe OwnerDirectoryDescription
-> Maybe Text
-> Maybe (Sensitive Text)
-> DirectoryDescription
DirectoryDescription'
            (Maybe DirectoryEdition
 -> Maybe RadiusStatus
 -> Maybe DirectoryStage
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe RegionsInfo
 -> Maybe DirectorySize
 -> Maybe Natural
 -> Maybe RadiusSettings
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe ShareStatus
 -> Maybe Text
 -> Maybe ShareMethod
 -> Maybe POSIX
 -> Maybe Bool
 -> Maybe [Text]
 -> Maybe DirectoryVpcSettingsDescription
 -> Maybe DirectoryType
 -> Maybe Text
 -> Maybe DirectoryConnectSettingsDescription
 -> Maybe OwnerDirectoryDescription
 -> Maybe Text
 -> Maybe (Sensitive Text)
 -> DirectoryDescription)
-> Parser (Maybe DirectoryEdition)
-> Parser
     (Maybe RadiusStatus
      -> Maybe DirectoryStage
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RegionsInfo
      -> Maybe DirectorySize
      -> Maybe Natural
      -> Maybe RadiusSettings
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe DirectoryEdition)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Edition")
            Parser
  (Maybe RadiusStatus
   -> Maybe DirectoryStage
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RegionsInfo
   -> Maybe DirectorySize
   -> Maybe Natural
   -> Maybe RadiusSettings
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe RadiusStatus)
-> Parser
     (Maybe DirectoryStage
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RegionsInfo
      -> Maybe DirectorySize
      -> Maybe Natural
      -> Maybe RadiusSettings
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RadiusStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RadiusStatus")
            Parser
  (Maybe DirectoryStage
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RegionsInfo
   -> Maybe DirectorySize
   -> Maybe Natural
   -> Maybe RadiusSettings
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe DirectoryStage)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RegionsInfo
      -> Maybe DirectorySize
      -> Maybe Natural
      -> Maybe RadiusSettings
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DirectoryStage)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Stage")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RegionsInfo
   -> Maybe DirectorySize
   -> Maybe Natural
   -> Maybe RadiusSettings
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe RegionsInfo
      -> Maybe DirectorySize
      -> Maybe Natural
      -> Maybe RadiusSettings
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DirectoryId")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe RegionsInfo
   -> Maybe DirectorySize
   -> Maybe Natural
   -> Maybe RadiusSettings
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe RegionsInfo
      -> Maybe DirectorySize
      -> Maybe Natural
      -> Maybe RadiusSettings
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AccessUrl")
            Parser
  (Maybe Text
   -> Maybe RegionsInfo
   -> Maybe DirectorySize
   -> Maybe Natural
   -> Maybe RadiusSettings
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe RegionsInfo
      -> Maybe DirectorySize
      -> Maybe Natural
      -> Maybe RadiusSettings
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ShortName")
            Parser
  (Maybe RegionsInfo
   -> Maybe DirectorySize
   -> Maybe Natural
   -> Maybe RadiusSettings
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe RegionsInfo)
-> Parser
     (Maybe DirectorySize
      -> Maybe Natural
      -> Maybe RadiusSettings
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RegionsInfo)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RegionsInfo")
            Parser
  (Maybe DirectorySize
   -> Maybe Natural
   -> Maybe RadiusSettings
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe DirectorySize)
-> Parser
     (Maybe Natural
      -> Maybe RadiusSettings
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DirectorySize)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Size")
            Parser
  (Maybe Natural
   -> Maybe RadiusSettings
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe Natural)
-> Parser
     (Maybe RadiusSettings
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DesiredNumberOfDomainControllers")
            Parser
  (Maybe RadiusSettings
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe RadiusSettings)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RadiusSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RadiusSettings")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LaunchTime")
            Parser
  (Maybe Text
   -> Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe ShareStatus
      -> Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Alias")
            Parser
  (Maybe ShareStatus
   -> Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe ShareStatus)
-> Parser
     (Maybe Text
      -> Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ShareStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ShareStatus")
            Parser
  (Maybe Text
   -> Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe ShareMethod
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Name")
            Parser
  (Maybe ShareMethod
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe ShareMethod)
-> Parser
     (Maybe POSIX
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ShareMethod)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ShareMethod")
            Parser
  (Maybe POSIX
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Bool
      -> Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"StageLastUpdatedDateTime")
            Parser
  (Maybe Bool
   -> Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe Bool)
-> Parser
     (Maybe [Text]
      -> Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SsoEnabled")
            Parser
  (Maybe [Text]
   -> Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe [Text])
-> Parser
     (Maybe DirectoryVpcSettingsDescription
      -> Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DnsIpAddrs" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe DirectoryVpcSettingsDescription
   -> Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe DirectoryVpcSettingsDescription)
-> Parser
     (Maybe DirectoryType
      -> Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DirectoryVpcSettingsDescription)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VpcSettings")
            Parser
  (Maybe DirectoryType
   -> Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe DirectoryType)
-> Parser
     (Maybe Text
      -> Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DirectoryType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Type")
            Parser
  (Maybe Text
   -> Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe DirectoryConnectSettingsDescription
      -> Maybe OwnerDirectoryDescription
      -> Maybe Text
      -> Maybe (Sensitive Text)
      -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"StageReason")
            Parser
  (Maybe DirectoryConnectSettingsDescription
   -> Maybe OwnerDirectoryDescription
   -> Maybe Text
   -> Maybe (Sensitive Text)
   -> DirectoryDescription)
-> Parser (Maybe DirectoryConnectSettingsDescription)
-> Parser
     (Maybe OwnerDirectoryDescription
      -> Maybe Text -> Maybe (Sensitive Text) -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe DirectoryConnectSettingsDescription)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ConnectSettings")
            Parser
  (Maybe OwnerDirectoryDescription
   -> Maybe Text -> Maybe (Sensitive Text) -> DirectoryDescription)
-> Parser (Maybe OwnerDirectoryDescription)
-> Parser
     (Maybe Text -> Maybe (Sensitive Text) -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe OwnerDirectoryDescription)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"OwnerDirectoryDescription")
            Parser
  (Maybe Text -> Maybe (Sensitive Text) -> DirectoryDescription)
-> Parser (Maybe Text)
-> Parser (Maybe (Sensitive Text) -> DirectoryDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Description")
            Parser (Maybe (Sensitive Text) -> DirectoryDescription)
-> Parser (Maybe (Sensitive Text)) -> Parser DirectoryDescription
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Sensitive Text))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ShareNotes")
      )

instance Prelude.Hashable DirectoryDescription

instance Prelude.NFData DirectoryDescription