{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DirectoryService.Types.DirectoryDescription 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.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.OSVersion
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.Prelude as Prelude

-- | Contains information about an Directory Service directory.
--
-- /See:/ 'newDirectoryDescription' smart constructor.
data DirectoryDescription = 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 -> Maybe Text
accessUrl :: Prelude.Maybe Prelude.Text,
    -- | 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,
    -- | 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,
    -- | The description for the directory.
    DirectoryDescription -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The desired number of domain controllers in the directory if the
    -- directory is Microsoft AD.
    DirectoryDescription -> Maybe Natural
desiredNumberOfDomainControllers :: Prelude.Maybe Prelude.Natural,
    -- | The directory identifier.
    DirectoryDescription -> Maybe Text
directoryId :: Prelude.Maybe Prelude.Text,
    -- | 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],
    -- | The edition associated with this directory.
    DirectoryDescription -> Maybe DirectoryEdition
edition :: Prelude.Maybe DirectoryEdition,
    -- | Specifies when the directory was created.
    DirectoryDescription -> Maybe POSIX
launchTime :: Prelude.Maybe Data.POSIX,
    -- | The fully qualified name of the directory.
    DirectoryDescription -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The operating system (OS) version of the directory.
    DirectoryDescription -> Maybe OSVersion
osVersion :: Prelude.Maybe OSVersion,
    -- | Describes the Managed Microsoft AD directory in the directory owner
    -- account.
    DirectoryDescription -> Maybe OwnerDirectoryDescription
ownerDirectoryDescription :: Prelude.Maybe OwnerDirectoryDescription,
    -- | A RadiusSettings object that contains information about the RADIUS
    -- server configured for this directory.
    DirectoryDescription -> Maybe RadiusSettings
radiusSettings :: Prelude.Maybe RadiusSettings,
    -- | The status of the RADIUS MFA server connection.
    DirectoryDescription -> Maybe RadiusStatus
radiusStatus :: Prelude.Maybe RadiusStatus,
    -- | Lists the Regions where the directory has replicated.
    DirectoryDescription -> Maybe RegionsInfo
regionsInfo :: Prelude.Maybe RegionsInfo,
    -- | 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,
    -- | 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 (Data.Sensitive Prelude.Text),
    -- | Current directory status of the shared Managed Microsoft AD directory.
    DirectoryDescription -> Maybe ShareStatus
shareStatus :: Prelude.Maybe ShareStatus,
    -- | The short name of the directory.
    DirectoryDescription -> Maybe Text
shortName :: Prelude.Maybe Prelude.Text,
    -- | The directory size.
    DirectoryDescription -> Maybe DirectorySize
size :: Prelude.Maybe DirectorySize,
    -- | 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 current stage of the directory.
    DirectoryDescription -> Maybe DirectoryStage
stage :: Prelude.Maybe DirectoryStage,
    -- | The date and time that the stage was last updated.
    DirectoryDescription -> Maybe POSIX
stageLastUpdatedDateTime :: Prelude.Maybe Data.POSIX,
    -- | Additional information about the directory stage.
    DirectoryDescription -> Maybe Text
stageReason :: Prelude.Maybe Prelude.Text,
    -- | The directory size.
    DirectoryDescription -> Maybe DirectoryType
type' :: Prelude.Maybe DirectoryType,
    -- | 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
  }
  deriving (DirectoryDescription -> DirectoryDescription -> Bool
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
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. 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:
--
-- '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@.
--
-- '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@.
--
-- '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.
--
-- 'description', 'directoryDescription_description' - The description for the directory.
--
-- 'desiredNumberOfDomainControllers', 'directoryDescription_desiredNumberOfDomainControllers' - The desired number of domain controllers in the directory if the
-- directory is Microsoft AD.
--
-- 'directoryId', 'directoryDescription_directoryId' - The directory identifier.
--
-- '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.
--
-- 'edition', 'directoryDescription_edition' - The edition associated with this directory.
--
-- 'launchTime', 'directoryDescription_launchTime' - Specifies when the directory was created.
--
-- 'name', 'directoryDescription_name' - The fully qualified name of the directory.
--
-- 'osVersion', 'directoryDescription_osVersion' - The operating system (OS) version of the directory.
--
-- 'ownerDirectoryDescription', 'directoryDescription_ownerDirectoryDescription' - Describes the Managed Microsoft AD directory in the directory owner
-- account.
--
-- 'radiusSettings', 'directoryDescription_radiusSettings' - A RadiusSettings object that contains information about the RADIUS
-- server configured for this directory.
--
-- 'radiusStatus', 'directoryDescription_radiusStatus' - The status of the RADIUS MFA server connection.
--
-- 'regionsInfo', 'directoryDescription_regionsInfo' - Lists the Regions where the directory has replicated.
--
-- '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@).
--
-- '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.
--
-- 'shareStatus', 'directoryDescription_shareStatus' - Current directory status of the shared Managed Microsoft AD directory.
--
-- 'shortName', 'directoryDescription_shortName' - The short name of the directory.
--
-- 'size', 'directoryDescription_size' - The directory size.
--
-- 'ssoEnabled', 'directoryDescription_ssoEnabled' - Indicates if single sign-on is enabled for the directory. For more
-- information, see EnableSso and DisableSso.
--
-- 'stage', 'directoryDescription_stage' - The current stage of the directory.
--
-- 'stageLastUpdatedDateTime', 'directoryDescription_stageLastUpdatedDateTime' - The date and time that the stage was last updated.
--
-- 'stageReason', 'directoryDescription_stageReason' - Additional information about the directory stage.
--
-- 'type'', 'directoryDescription_type' - The directory size.
--
-- '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.
newDirectoryDescription ::
  DirectoryDescription
newDirectoryDescription :: DirectoryDescription
newDirectoryDescription =
  DirectoryDescription'
    { $sel:accessUrl:DirectoryDescription' :: Maybe Text
accessUrl = forall a. Maybe a
Prelude.Nothing,
      $sel:alias:DirectoryDescription' :: Maybe Text
alias = forall a. Maybe a
Prelude.Nothing,
      $sel:connectSettings:DirectoryDescription' :: Maybe DirectoryConnectSettingsDescription
connectSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:description:DirectoryDescription' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:desiredNumberOfDomainControllers:DirectoryDescription' :: Maybe Natural
desiredNumberOfDomainControllers = forall a. Maybe a
Prelude.Nothing,
      $sel:directoryId:DirectoryDescription' :: Maybe Text
directoryId = forall a. Maybe a
Prelude.Nothing,
      $sel:dnsIpAddrs:DirectoryDescription' :: Maybe [Text]
dnsIpAddrs = forall a. Maybe a
Prelude.Nothing,
      $sel:edition:DirectoryDescription' :: Maybe DirectoryEdition
edition = forall a. Maybe a
Prelude.Nothing,
      $sel:launchTime:DirectoryDescription' :: Maybe POSIX
launchTime = forall a. Maybe a
Prelude.Nothing,
      $sel:name:DirectoryDescription' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:osVersion:DirectoryDescription' :: Maybe OSVersion
osVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:ownerDirectoryDescription:DirectoryDescription' :: Maybe OwnerDirectoryDescription
ownerDirectoryDescription = forall a. Maybe a
Prelude.Nothing,
      $sel:radiusSettings:DirectoryDescription' :: Maybe RadiusSettings
radiusSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:radiusStatus:DirectoryDescription' :: Maybe RadiusStatus
radiusStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:regionsInfo:DirectoryDescription' :: Maybe RegionsInfo
regionsInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:shareMethod:DirectoryDescription' :: Maybe ShareMethod
shareMethod = forall a. Maybe a
Prelude.Nothing,
      $sel:shareNotes:DirectoryDescription' :: Maybe (Sensitive Text)
shareNotes = forall a. Maybe a
Prelude.Nothing,
      $sel:shareStatus:DirectoryDescription' :: Maybe ShareStatus
shareStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:shortName:DirectoryDescription' :: Maybe Text
shortName = forall a. Maybe a
Prelude.Nothing,
      $sel:size:DirectoryDescription' :: Maybe DirectorySize
size = forall a. Maybe a
Prelude.Nothing,
      $sel:ssoEnabled:DirectoryDescription' :: Maybe Bool
ssoEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:stage:DirectoryDescription' :: Maybe DirectoryStage
stage = forall a. Maybe a
Prelude.Nothing,
      $sel:stageLastUpdatedDateTime:DirectoryDescription' :: Maybe POSIX
stageLastUpdatedDateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:stageReason:DirectoryDescription' :: Maybe Text
stageReason = forall a. Maybe a
Prelude.Nothing,
      $sel:type':DirectoryDescription' :: Maybe DirectoryType
type' = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSettings:DirectoryDescription' :: Maybe DirectoryVpcSettingsDescription
vpcSettings = forall a. Maybe a
Prelude.Nothing
    }

-- | 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 :: Lens' DirectoryDescription (Maybe Text)
directoryDescription_accessUrl = 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 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 :: Lens' DirectoryDescription (Maybe Text)
directoryDescription_alias = 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)

-- | 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 :: Lens'
  DirectoryDescription (Maybe DirectoryConnectSettingsDescription)
directoryDescription_connectSettings = 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)

-- | The description for the directory.
directoryDescription_description :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_description :: Lens' DirectoryDescription (Maybe Text)
directoryDescription_description = 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)

-- | 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 :: Lens' DirectoryDescription (Maybe Natural)
directoryDescription_desiredNumberOfDomainControllers = 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)

-- | The directory identifier.
directoryDescription_directoryId :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_directoryId :: Lens' DirectoryDescription (Maybe Text)
directoryDescription_directoryId = 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 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 :: Lens' DirectoryDescription (Maybe [Text])
directoryDescription_dnsIpAddrs = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The edition associated with this directory.
directoryDescription_edition :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectoryEdition)
directoryDescription_edition :: Lens' DirectoryDescription (Maybe DirectoryEdition)
directoryDescription_edition = 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)

-- | Specifies when the directory was created.
directoryDescription_launchTime :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.UTCTime)
directoryDescription_launchTime :: Lens' DirectoryDescription (Maybe UTCTime)
directoryDescription_launchTime = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The fully qualified name of the directory.
directoryDescription_name :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_name :: Lens' DirectoryDescription (Maybe Text)
directoryDescription_name = 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 operating system (OS) version of the directory.
directoryDescription_osVersion :: Lens.Lens' DirectoryDescription (Prelude.Maybe OSVersion)
directoryDescription_osVersion :: Lens' DirectoryDescription (Maybe OSVersion)
directoryDescription_osVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectoryDescription' {Maybe OSVersion
osVersion :: Maybe OSVersion
$sel:osVersion:DirectoryDescription' :: DirectoryDescription -> Maybe OSVersion
osVersion} -> Maybe OSVersion
osVersion) (\s :: DirectoryDescription
s@DirectoryDescription' {} Maybe OSVersion
a -> DirectoryDescription
s {$sel:osVersion:DirectoryDescription' :: Maybe OSVersion
osVersion = Maybe OSVersion
a} :: DirectoryDescription)

-- | Describes the Managed Microsoft AD directory in the directory owner
-- account.
directoryDescription_ownerDirectoryDescription :: Lens.Lens' DirectoryDescription (Prelude.Maybe OwnerDirectoryDescription)
directoryDescription_ownerDirectoryDescription :: Lens' DirectoryDescription (Maybe OwnerDirectoryDescription)
directoryDescription_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)

-- | A RadiusSettings object that contains information about the RADIUS
-- server configured for this directory.
directoryDescription_radiusSettings :: Lens.Lens' DirectoryDescription (Prelude.Maybe RadiusSettings)
directoryDescription_radiusSettings :: Lens' DirectoryDescription (Maybe RadiusSettings)
directoryDescription_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)

-- | The status of the RADIUS MFA server connection.
directoryDescription_radiusStatus :: Lens.Lens' DirectoryDescription (Prelude.Maybe RadiusStatus)
directoryDescription_radiusStatus :: Lens' DirectoryDescription (Maybe RadiusStatus)
directoryDescription_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)

-- | Lists the Regions where the directory has replicated.
directoryDescription_regionsInfo :: Lens.Lens' DirectoryDescription (Prelude.Maybe RegionsInfo)
directoryDescription_regionsInfo :: Lens' DirectoryDescription (Maybe RegionsInfo)
directoryDescription_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 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 :: Lens' DirectoryDescription (Maybe ShareMethod)
directoryDescription_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)

-- | 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 :: Lens' DirectoryDescription (Maybe Text)
directoryDescription_shareNotes = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | Current directory status of the shared Managed Microsoft AD directory.
directoryDescription_shareStatus :: Lens.Lens' DirectoryDescription (Prelude.Maybe ShareStatus)
directoryDescription_shareStatus :: Lens' DirectoryDescription (Maybe ShareStatus)
directoryDescription_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 short name of the directory.
directoryDescription_shortName :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_shortName :: Lens' DirectoryDescription (Maybe Text)
directoryDescription_shortName = 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)

-- | The directory size.
directoryDescription_size :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectorySize)
directoryDescription_size :: Lens' DirectoryDescription (Maybe DirectorySize)
directoryDescription_size = 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)

-- | 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 :: Lens' DirectoryDescription (Maybe Bool)
directoryDescription_ssoEnabled = 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 current stage of the directory.
directoryDescription_stage :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectoryStage)
directoryDescription_stage :: Lens' DirectoryDescription (Maybe DirectoryStage)
directoryDescription_stage = 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 date and time that the stage was last updated.
directoryDescription_stageLastUpdatedDateTime :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.UTCTime)
directoryDescription_stageLastUpdatedDateTime :: Lens' DirectoryDescription (Maybe UTCTime)
directoryDescription_stageLastUpdatedDateTime = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Additional information about the directory stage.
directoryDescription_stageReason :: Lens.Lens' DirectoryDescription (Prelude.Maybe Prelude.Text)
directoryDescription_stageReason :: Lens' DirectoryDescription (Maybe Text)
directoryDescription_stageReason = 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)

-- | The directory size.
directoryDescription_type :: Lens.Lens' DirectoryDescription (Prelude.Maybe DirectoryType)
directoryDescription_type :: Lens' DirectoryDescription (Maybe DirectoryType)
directoryDescription_type = 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)

-- | 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 :: Lens' DirectoryDescription (Maybe DirectoryVpcSettingsDescription)
directoryDescription_vpcSettings = 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)

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

instance Prelude.Hashable DirectoryDescription where
  hashWithSalt :: Int -> DirectoryDescription -> Int
hashWithSalt Int
_salt DirectoryDescription' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
Maybe DirectoryConnectSettingsDescription
Maybe DirectoryEdition
Maybe DirectorySize
Maybe DirectoryStage
Maybe DirectoryType
Maybe DirectoryVpcSettingsDescription
Maybe OSVersion
Maybe RadiusSettings
Maybe RadiusStatus
Maybe OwnerDirectoryDescription
Maybe RegionsInfo
Maybe ShareMethod
Maybe ShareStatus
vpcSettings :: Maybe DirectoryVpcSettingsDescription
type' :: Maybe DirectoryType
stageReason :: Maybe Text
stageLastUpdatedDateTime :: Maybe POSIX
stage :: Maybe DirectoryStage
ssoEnabled :: Maybe Bool
size :: Maybe DirectorySize
shortName :: Maybe Text
shareStatus :: Maybe ShareStatus
shareNotes :: Maybe (Sensitive Text)
shareMethod :: Maybe ShareMethod
regionsInfo :: Maybe RegionsInfo
radiusStatus :: Maybe RadiusStatus
radiusSettings :: Maybe RadiusSettings
ownerDirectoryDescription :: Maybe OwnerDirectoryDescription
osVersion :: Maybe OSVersion
name :: Maybe Text
launchTime :: Maybe POSIX
edition :: Maybe DirectoryEdition
dnsIpAddrs :: Maybe [Text]
directoryId :: Maybe Text
desiredNumberOfDomainControllers :: Maybe Natural
description :: Maybe Text
connectSettings :: Maybe DirectoryConnectSettingsDescription
alias :: Maybe Text
accessUrl :: Maybe Text
$sel:vpcSettings:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryVpcSettingsDescription
$sel:type':DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryType
$sel:stageReason:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:stageLastUpdatedDateTime:DirectoryDescription' :: DirectoryDescription -> Maybe POSIX
$sel:stage:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryStage
$sel:ssoEnabled:DirectoryDescription' :: DirectoryDescription -> Maybe Bool
$sel:size:DirectoryDescription' :: DirectoryDescription -> Maybe DirectorySize
$sel:shortName:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:shareStatus:DirectoryDescription' :: DirectoryDescription -> Maybe ShareStatus
$sel:shareNotes:DirectoryDescription' :: DirectoryDescription -> Maybe (Sensitive Text)
$sel:shareMethod:DirectoryDescription' :: DirectoryDescription -> Maybe ShareMethod
$sel:regionsInfo:DirectoryDescription' :: DirectoryDescription -> Maybe RegionsInfo
$sel:radiusStatus:DirectoryDescription' :: DirectoryDescription -> Maybe RadiusStatus
$sel:radiusSettings:DirectoryDescription' :: DirectoryDescription -> Maybe RadiusSettings
$sel:ownerDirectoryDescription:DirectoryDescription' :: DirectoryDescription -> Maybe OwnerDirectoryDescription
$sel:osVersion:DirectoryDescription' :: DirectoryDescription -> Maybe OSVersion
$sel:name:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:launchTime:DirectoryDescription' :: DirectoryDescription -> Maybe POSIX
$sel:edition:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryEdition
$sel:dnsIpAddrs:DirectoryDescription' :: DirectoryDescription -> Maybe [Text]
$sel:directoryId:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:desiredNumberOfDomainControllers:DirectoryDescription' :: DirectoryDescription -> Maybe Natural
$sel:description:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:connectSettings:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryConnectSettingsDescription
$sel:alias:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:accessUrl:DirectoryDescription' :: DirectoryDescription -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
accessUrl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
alias
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DirectoryConnectSettingsDescription
connectSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
desiredNumberOfDomainControllers
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
directoryId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
dnsIpAddrs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DirectoryEdition
edition
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
launchTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OSVersion
osVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OwnerDirectoryDescription
ownerDirectoryDescription
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RadiusSettings
radiusSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RadiusStatus
radiusStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RegionsInfo
regionsInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ShareMethod
shareMethod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
shareNotes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ShareStatus
shareStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
shortName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DirectorySize
size
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
ssoEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DirectoryStage
stage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
stageLastUpdatedDateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
stageReason
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DirectoryType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DirectoryVpcSettingsDescription
vpcSettings

instance Prelude.NFData DirectoryDescription where
  rnf :: DirectoryDescription -> ()
rnf DirectoryDescription' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
Maybe DirectoryConnectSettingsDescription
Maybe DirectoryEdition
Maybe DirectorySize
Maybe DirectoryStage
Maybe DirectoryType
Maybe DirectoryVpcSettingsDescription
Maybe OSVersion
Maybe RadiusSettings
Maybe RadiusStatus
Maybe OwnerDirectoryDescription
Maybe RegionsInfo
Maybe ShareMethod
Maybe ShareStatus
vpcSettings :: Maybe DirectoryVpcSettingsDescription
type' :: Maybe DirectoryType
stageReason :: Maybe Text
stageLastUpdatedDateTime :: Maybe POSIX
stage :: Maybe DirectoryStage
ssoEnabled :: Maybe Bool
size :: Maybe DirectorySize
shortName :: Maybe Text
shareStatus :: Maybe ShareStatus
shareNotes :: Maybe (Sensitive Text)
shareMethod :: Maybe ShareMethod
regionsInfo :: Maybe RegionsInfo
radiusStatus :: Maybe RadiusStatus
radiusSettings :: Maybe RadiusSettings
ownerDirectoryDescription :: Maybe OwnerDirectoryDescription
osVersion :: Maybe OSVersion
name :: Maybe Text
launchTime :: Maybe POSIX
edition :: Maybe DirectoryEdition
dnsIpAddrs :: Maybe [Text]
directoryId :: Maybe Text
desiredNumberOfDomainControllers :: Maybe Natural
description :: Maybe Text
connectSettings :: Maybe DirectoryConnectSettingsDescription
alias :: Maybe Text
accessUrl :: Maybe Text
$sel:vpcSettings:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryVpcSettingsDescription
$sel:type':DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryType
$sel:stageReason:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:stageLastUpdatedDateTime:DirectoryDescription' :: DirectoryDescription -> Maybe POSIX
$sel:stage:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryStage
$sel:ssoEnabled:DirectoryDescription' :: DirectoryDescription -> Maybe Bool
$sel:size:DirectoryDescription' :: DirectoryDescription -> Maybe DirectorySize
$sel:shortName:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:shareStatus:DirectoryDescription' :: DirectoryDescription -> Maybe ShareStatus
$sel:shareNotes:DirectoryDescription' :: DirectoryDescription -> Maybe (Sensitive Text)
$sel:shareMethod:DirectoryDescription' :: DirectoryDescription -> Maybe ShareMethod
$sel:regionsInfo:DirectoryDescription' :: DirectoryDescription -> Maybe RegionsInfo
$sel:radiusStatus:DirectoryDescription' :: DirectoryDescription -> Maybe RadiusStatus
$sel:radiusSettings:DirectoryDescription' :: DirectoryDescription -> Maybe RadiusSettings
$sel:ownerDirectoryDescription:DirectoryDescription' :: DirectoryDescription -> Maybe OwnerDirectoryDescription
$sel:osVersion:DirectoryDescription' :: DirectoryDescription -> Maybe OSVersion
$sel:name:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:launchTime:DirectoryDescription' :: DirectoryDescription -> Maybe POSIX
$sel:edition:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryEdition
$sel:dnsIpAddrs:DirectoryDescription' :: DirectoryDescription -> Maybe [Text]
$sel:directoryId:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:desiredNumberOfDomainControllers:DirectoryDescription' :: DirectoryDescription -> Maybe Natural
$sel:description:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:connectSettings:DirectoryDescription' :: DirectoryDescription -> Maybe DirectoryConnectSettingsDescription
$sel:alias:DirectoryDescription' :: DirectoryDescription -> Maybe Text
$sel:accessUrl:DirectoryDescription' :: DirectoryDescription -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
accessUrl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
alias
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DirectoryConnectSettingsDescription
connectSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
desiredNumberOfDomainControllers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
directoryId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
dnsIpAddrs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DirectoryEdition
edition
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
launchTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OSVersion
osVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OwnerDirectoryDescription
ownerDirectoryDescription
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RadiusSettings
radiusSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RadiusStatus
radiusStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RegionsInfo
regionsInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ShareMethod
shareMethod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
shareNotes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ShareStatus
shareStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
shortName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DirectorySize
size
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
ssoEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DirectoryStage
stage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe POSIX
stageLastUpdatedDateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
stageReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DirectoryType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe DirectoryVpcSettingsDescription
vpcSettings