{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.AppStream.UpdateDirectoryConfig
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates the specified Directory Config object in AppStream 2.0. This
-- object includes the configuration information required to join fleets
-- and image builders to Microsoft Active Directory domains.
module Amazonka.AppStream.UpdateDirectoryConfig
  ( -- * Creating a Request
    UpdateDirectoryConfig (..),
    newUpdateDirectoryConfig,

    -- * Request Lenses
    updateDirectoryConfig_certificateBasedAuthProperties,
    updateDirectoryConfig_organizationalUnitDistinguishedNames,
    updateDirectoryConfig_serviceAccountCredentials,
    updateDirectoryConfig_directoryName,

    -- * Destructuring the Response
    UpdateDirectoryConfigResponse (..),
    newUpdateDirectoryConfigResponse,

    -- * Response Lenses
    updateDirectoryConfigResponse_directoryConfig,
    updateDirectoryConfigResponse_httpStatus,
  )
where

import Amazonka.AppStream.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newUpdateDirectoryConfig' smart constructor.
data UpdateDirectoryConfig = UpdateDirectoryConfig'
  { -- | The certificate-based authentication properties used to authenticate
    -- SAML 2.0 Identity Provider (IdP) user identities to Active Directory
    -- domain-joined streaming instances. Fallback is turned on by default when
    -- certificate-based authentication is __Enabled__ . Fallback allows users
    -- to log in using their AD domain password if certificate-based
    -- authentication is unsuccessful, or to unlock a desktop lock screen.
    -- __Enabled_no_directory_login_fallback__ enables certificate-based
    -- authentication, but does not allow users to log in using their AD domain
    -- password. Users will be disconnected to re-authenticate using
    -- certificates.
    UpdateDirectoryConfig -> Maybe CertificateBasedAuthProperties
certificateBasedAuthProperties :: Prelude.Maybe CertificateBasedAuthProperties,
    -- | The distinguished names of the organizational units for computer
    -- accounts.
    UpdateDirectoryConfig -> Maybe [Text]
organizationalUnitDistinguishedNames :: Prelude.Maybe [Prelude.Text],
    -- | The credentials for the service account used by the fleet or image
    -- builder to connect to the directory.
    UpdateDirectoryConfig -> Maybe ServiceAccountCredentials
serviceAccountCredentials :: Prelude.Maybe ServiceAccountCredentials,
    -- | The name of the Directory Config object.
    UpdateDirectoryConfig -> Text
directoryName :: Prelude.Text
  }
  deriving (UpdateDirectoryConfig -> UpdateDirectoryConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDirectoryConfig -> UpdateDirectoryConfig -> Bool
$c/= :: UpdateDirectoryConfig -> UpdateDirectoryConfig -> Bool
== :: UpdateDirectoryConfig -> UpdateDirectoryConfig -> Bool
$c== :: UpdateDirectoryConfig -> UpdateDirectoryConfig -> Bool
Prelude.Eq, Int -> UpdateDirectoryConfig -> ShowS
[UpdateDirectoryConfig] -> ShowS
UpdateDirectoryConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDirectoryConfig] -> ShowS
$cshowList :: [UpdateDirectoryConfig] -> ShowS
show :: UpdateDirectoryConfig -> String
$cshow :: UpdateDirectoryConfig -> String
showsPrec :: Int -> UpdateDirectoryConfig -> ShowS
$cshowsPrec :: Int -> UpdateDirectoryConfig -> ShowS
Prelude.Show, forall x. Rep UpdateDirectoryConfig x -> UpdateDirectoryConfig
forall x. UpdateDirectoryConfig -> Rep UpdateDirectoryConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateDirectoryConfig x -> UpdateDirectoryConfig
$cfrom :: forall x. UpdateDirectoryConfig -> Rep UpdateDirectoryConfig x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDirectoryConfig' 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:
--
-- 'certificateBasedAuthProperties', 'updateDirectoryConfig_certificateBasedAuthProperties' - The certificate-based authentication properties used to authenticate
-- SAML 2.0 Identity Provider (IdP) user identities to Active Directory
-- domain-joined streaming instances. Fallback is turned on by default when
-- certificate-based authentication is __Enabled__ . Fallback allows users
-- to log in using their AD domain password if certificate-based
-- authentication is unsuccessful, or to unlock a desktop lock screen.
-- __Enabled_no_directory_login_fallback__ enables certificate-based
-- authentication, but does not allow users to log in using their AD domain
-- password. Users will be disconnected to re-authenticate using
-- certificates.
--
-- 'organizationalUnitDistinguishedNames', 'updateDirectoryConfig_organizationalUnitDistinguishedNames' - The distinguished names of the organizational units for computer
-- accounts.
--
-- 'serviceAccountCredentials', 'updateDirectoryConfig_serviceAccountCredentials' - The credentials for the service account used by the fleet or image
-- builder to connect to the directory.
--
-- 'directoryName', 'updateDirectoryConfig_directoryName' - The name of the Directory Config object.
newUpdateDirectoryConfig ::
  -- | 'directoryName'
  Prelude.Text ->
  UpdateDirectoryConfig
newUpdateDirectoryConfig :: Text -> UpdateDirectoryConfig
newUpdateDirectoryConfig Text
pDirectoryName_ =
  UpdateDirectoryConfig'
    { $sel:certificateBasedAuthProperties:UpdateDirectoryConfig' :: Maybe CertificateBasedAuthProperties
certificateBasedAuthProperties =
        forall a. Maybe a
Prelude.Nothing,
      $sel:organizationalUnitDistinguishedNames:UpdateDirectoryConfig' :: Maybe [Text]
organizationalUnitDistinguishedNames =
        forall a. Maybe a
Prelude.Nothing,
      $sel:serviceAccountCredentials:UpdateDirectoryConfig' :: Maybe ServiceAccountCredentials
serviceAccountCredentials = forall a. Maybe a
Prelude.Nothing,
      $sel:directoryName:UpdateDirectoryConfig' :: Text
directoryName = Text
pDirectoryName_
    }

-- | The certificate-based authentication properties used to authenticate
-- SAML 2.0 Identity Provider (IdP) user identities to Active Directory
-- domain-joined streaming instances. Fallback is turned on by default when
-- certificate-based authentication is __Enabled__ . Fallback allows users
-- to log in using their AD domain password if certificate-based
-- authentication is unsuccessful, or to unlock a desktop lock screen.
-- __Enabled_no_directory_login_fallback__ enables certificate-based
-- authentication, but does not allow users to log in using their AD domain
-- password. Users will be disconnected to re-authenticate using
-- certificates.
updateDirectoryConfig_certificateBasedAuthProperties :: Lens.Lens' UpdateDirectoryConfig (Prelude.Maybe CertificateBasedAuthProperties)
updateDirectoryConfig_certificateBasedAuthProperties :: Lens' UpdateDirectoryConfig (Maybe CertificateBasedAuthProperties)
updateDirectoryConfig_certificateBasedAuthProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDirectoryConfig' {Maybe CertificateBasedAuthProperties
certificateBasedAuthProperties :: Maybe CertificateBasedAuthProperties
$sel:certificateBasedAuthProperties:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe CertificateBasedAuthProperties
certificateBasedAuthProperties} -> Maybe CertificateBasedAuthProperties
certificateBasedAuthProperties) (\s :: UpdateDirectoryConfig
s@UpdateDirectoryConfig' {} Maybe CertificateBasedAuthProperties
a -> UpdateDirectoryConfig
s {$sel:certificateBasedAuthProperties:UpdateDirectoryConfig' :: Maybe CertificateBasedAuthProperties
certificateBasedAuthProperties = Maybe CertificateBasedAuthProperties
a} :: UpdateDirectoryConfig)

-- | The distinguished names of the organizational units for computer
-- accounts.
updateDirectoryConfig_organizationalUnitDistinguishedNames :: Lens.Lens' UpdateDirectoryConfig (Prelude.Maybe [Prelude.Text])
updateDirectoryConfig_organizationalUnitDistinguishedNames :: Lens' UpdateDirectoryConfig (Maybe [Text])
updateDirectoryConfig_organizationalUnitDistinguishedNames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDirectoryConfig' {Maybe [Text]
organizationalUnitDistinguishedNames :: Maybe [Text]
$sel:organizationalUnitDistinguishedNames:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe [Text]
organizationalUnitDistinguishedNames} -> Maybe [Text]
organizationalUnitDistinguishedNames) (\s :: UpdateDirectoryConfig
s@UpdateDirectoryConfig' {} Maybe [Text]
a -> UpdateDirectoryConfig
s {$sel:organizationalUnitDistinguishedNames:UpdateDirectoryConfig' :: Maybe [Text]
organizationalUnitDistinguishedNames = Maybe [Text]
a} :: UpdateDirectoryConfig) 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 credentials for the service account used by the fleet or image
-- builder to connect to the directory.
updateDirectoryConfig_serviceAccountCredentials :: Lens.Lens' UpdateDirectoryConfig (Prelude.Maybe ServiceAccountCredentials)
updateDirectoryConfig_serviceAccountCredentials :: Lens' UpdateDirectoryConfig (Maybe ServiceAccountCredentials)
updateDirectoryConfig_serviceAccountCredentials = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDirectoryConfig' {Maybe ServiceAccountCredentials
serviceAccountCredentials :: Maybe ServiceAccountCredentials
$sel:serviceAccountCredentials:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe ServiceAccountCredentials
serviceAccountCredentials} -> Maybe ServiceAccountCredentials
serviceAccountCredentials) (\s :: UpdateDirectoryConfig
s@UpdateDirectoryConfig' {} Maybe ServiceAccountCredentials
a -> UpdateDirectoryConfig
s {$sel:serviceAccountCredentials:UpdateDirectoryConfig' :: Maybe ServiceAccountCredentials
serviceAccountCredentials = Maybe ServiceAccountCredentials
a} :: UpdateDirectoryConfig)

-- | The name of the Directory Config object.
updateDirectoryConfig_directoryName :: Lens.Lens' UpdateDirectoryConfig Prelude.Text
updateDirectoryConfig_directoryName :: Lens' UpdateDirectoryConfig Text
updateDirectoryConfig_directoryName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDirectoryConfig' {Text
directoryName :: Text
$sel:directoryName:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Text
directoryName} -> Text
directoryName) (\s :: UpdateDirectoryConfig
s@UpdateDirectoryConfig' {} Text
a -> UpdateDirectoryConfig
s {$sel:directoryName:UpdateDirectoryConfig' :: Text
directoryName = Text
a} :: UpdateDirectoryConfig)

instance Core.AWSRequest UpdateDirectoryConfig where
  type
    AWSResponse UpdateDirectoryConfig =
      UpdateDirectoryConfigResponse
  request :: (Service -> Service)
-> UpdateDirectoryConfig -> Request UpdateDirectoryConfig
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateDirectoryConfig
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateDirectoryConfig)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe DirectoryConfig -> Int -> UpdateDirectoryConfigResponse
UpdateDirectoryConfigResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"DirectoryConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable UpdateDirectoryConfig where
  hashWithSalt :: Int -> UpdateDirectoryConfig -> Int
hashWithSalt Int
_salt UpdateDirectoryConfig' {Maybe [Text]
Maybe CertificateBasedAuthProperties
Maybe ServiceAccountCredentials
Text
directoryName :: Text
serviceAccountCredentials :: Maybe ServiceAccountCredentials
organizationalUnitDistinguishedNames :: Maybe [Text]
certificateBasedAuthProperties :: Maybe CertificateBasedAuthProperties
$sel:directoryName:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Text
$sel:serviceAccountCredentials:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe ServiceAccountCredentials
$sel:organizationalUnitDistinguishedNames:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe [Text]
$sel:certificateBasedAuthProperties:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe CertificateBasedAuthProperties
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CertificateBasedAuthProperties
certificateBasedAuthProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
organizationalUnitDistinguishedNames
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ServiceAccountCredentials
serviceAccountCredentials
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
directoryName

instance Prelude.NFData UpdateDirectoryConfig where
  rnf :: UpdateDirectoryConfig -> ()
rnf UpdateDirectoryConfig' {Maybe [Text]
Maybe CertificateBasedAuthProperties
Maybe ServiceAccountCredentials
Text
directoryName :: Text
serviceAccountCredentials :: Maybe ServiceAccountCredentials
organizationalUnitDistinguishedNames :: Maybe [Text]
certificateBasedAuthProperties :: Maybe CertificateBasedAuthProperties
$sel:directoryName:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Text
$sel:serviceAccountCredentials:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe ServiceAccountCredentials
$sel:organizationalUnitDistinguishedNames:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe [Text]
$sel:certificateBasedAuthProperties:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe CertificateBasedAuthProperties
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe CertificateBasedAuthProperties
certificateBasedAuthProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
organizationalUnitDistinguishedNames
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ServiceAccountCredentials
serviceAccountCredentials
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
directoryName

instance Data.ToHeaders UpdateDirectoryConfig where
  toHeaders :: UpdateDirectoryConfig -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"PhotonAdminProxyService.UpdateDirectoryConfig" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateDirectoryConfig where
  toJSON :: UpdateDirectoryConfig -> Value
toJSON UpdateDirectoryConfig' {Maybe [Text]
Maybe CertificateBasedAuthProperties
Maybe ServiceAccountCredentials
Text
directoryName :: Text
serviceAccountCredentials :: Maybe ServiceAccountCredentials
organizationalUnitDistinguishedNames :: Maybe [Text]
certificateBasedAuthProperties :: Maybe CertificateBasedAuthProperties
$sel:directoryName:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Text
$sel:serviceAccountCredentials:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe ServiceAccountCredentials
$sel:organizationalUnitDistinguishedNames:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe [Text]
$sel:certificateBasedAuthProperties:UpdateDirectoryConfig' :: UpdateDirectoryConfig -> Maybe CertificateBasedAuthProperties
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"CertificateBasedAuthProperties" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CertificateBasedAuthProperties
certificateBasedAuthProperties,
            (Key
"OrganizationalUnitDistinguishedNames" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
organizationalUnitDistinguishedNames,
            (Key
"ServiceAccountCredentials" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ServiceAccountCredentials
serviceAccountCredentials,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"DirectoryName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
directoryName)
          ]
      )

instance Data.ToPath UpdateDirectoryConfig where
  toPath :: UpdateDirectoryConfig -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery UpdateDirectoryConfig where
  toQuery :: UpdateDirectoryConfig -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newUpdateDirectoryConfigResponse' smart constructor.
data UpdateDirectoryConfigResponse = UpdateDirectoryConfigResponse'
  { -- | Information about the Directory Config object.
    UpdateDirectoryConfigResponse -> Maybe DirectoryConfig
directoryConfig :: Prelude.Maybe DirectoryConfig,
    -- | The response's http status code.
    UpdateDirectoryConfigResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateDirectoryConfigResponse
-> UpdateDirectoryConfigResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDirectoryConfigResponse
-> UpdateDirectoryConfigResponse -> Bool
$c/= :: UpdateDirectoryConfigResponse
-> UpdateDirectoryConfigResponse -> Bool
== :: UpdateDirectoryConfigResponse
-> UpdateDirectoryConfigResponse -> Bool
$c== :: UpdateDirectoryConfigResponse
-> UpdateDirectoryConfigResponse -> Bool
Prelude.Eq, Int -> UpdateDirectoryConfigResponse -> ShowS
[UpdateDirectoryConfigResponse] -> ShowS
UpdateDirectoryConfigResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDirectoryConfigResponse] -> ShowS
$cshowList :: [UpdateDirectoryConfigResponse] -> ShowS
show :: UpdateDirectoryConfigResponse -> String
$cshow :: UpdateDirectoryConfigResponse -> String
showsPrec :: Int -> UpdateDirectoryConfigResponse -> ShowS
$cshowsPrec :: Int -> UpdateDirectoryConfigResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateDirectoryConfigResponse x
-> UpdateDirectoryConfigResponse
forall x.
UpdateDirectoryConfigResponse
-> Rep UpdateDirectoryConfigResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateDirectoryConfigResponse x
-> UpdateDirectoryConfigResponse
$cfrom :: forall x.
UpdateDirectoryConfigResponse
-> Rep UpdateDirectoryConfigResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDirectoryConfigResponse' 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:
--
-- 'directoryConfig', 'updateDirectoryConfigResponse_directoryConfig' - Information about the Directory Config object.
--
-- 'httpStatus', 'updateDirectoryConfigResponse_httpStatus' - The response's http status code.
newUpdateDirectoryConfigResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateDirectoryConfigResponse
newUpdateDirectoryConfigResponse :: Int -> UpdateDirectoryConfigResponse
newUpdateDirectoryConfigResponse Int
pHttpStatus_ =
  UpdateDirectoryConfigResponse'
    { $sel:directoryConfig:UpdateDirectoryConfigResponse' :: Maybe DirectoryConfig
directoryConfig =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateDirectoryConfigResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the Directory Config object.
updateDirectoryConfigResponse_directoryConfig :: Lens.Lens' UpdateDirectoryConfigResponse (Prelude.Maybe DirectoryConfig)
updateDirectoryConfigResponse_directoryConfig :: Lens' UpdateDirectoryConfigResponse (Maybe DirectoryConfig)
updateDirectoryConfigResponse_directoryConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDirectoryConfigResponse' {Maybe DirectoryConfig
directoryConfig :: Maybe DirectoryConfig
$sel:directoryConfig:UpdateDirectoryConfigResponse' :: UpdateDirectoryConfigResponse -> Maybe DirectoryConfig
directoryConfig} -> Maybe DirectoryConfig
directoryConfig) (\s :: UpdateDirectoryConfigResponse
s@UpdateDirectoryConfigResponse' {} Maybe DirectoryConfig
a -> UpdateDirectoryConfigResponse
s {$sel:directoryConfig:UpdateDirectoryConfigResponse' :: Maybe DirectoryConfig
directoryConfig = Maybe DirectoryConfig
a} :: UpdateDirectoryConfigResponse)

-- | The response's http status code.
updateDirectoryConfigResponse_httpStatus :: Lens.Lens' UpdateDirectoryConfigResponse Prelude.Int
updateDirectoryConfigResponse_httpStatus :: Lens' UpdateDirectoryConfigResponse Int
updateDirectoryConfigResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDirectoryConfigResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateDirectoryConfigResponse' :: UpdateDirectoryConfigResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateDirectoryConfigResponse
s@UpdateDirectoryConfigResponse' {} Int
a -> UpdateDirectoryConfigResponse
s {$sel:httpStatus:UpdateDirectoryConfigResponse' :: Int
httpStatus = Int
a} :: UpdateDirectoryConfigResponse)

instance Prelude.NFData UpdateDirectoryConfigResponse where
  rnf :: UpdateDirectoryConfigResponse -> ()
rnf UpdateDirectoryConfigResponse' {Int
Maybe DirectoryConfig
httpStatus :: Int
directoryConfig :: Maybe DirectoryConfig
$sel:httpStatus:UpdateDirectoryConfigResponse' :: UpdateDirectoryConfigResponse -> Int
$sel:directoryConfig:UpdateDirectoryConfigResponse' :: UpdateDirectoryConfigResponse -> Maybe DirectoryConfig
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DirectoryConfig
directoryConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus