{-# 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.OpenSearch.Types.DomainConfig
-- 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.OpenSearch.Types.DomainConfig where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.OpenSearch.Types.AccessPoliciesStatus
import Amazonka.OpenSearch.Types.AdvancedOptionsStatus
import Amazonka.OpenSearch.Types.AdvancedSecurityOptionsStatus
import Amazonka.OpenSearch.Types.AutoTuneOptionsStatus
import Amazonka.OpenSearch.Types.ClusterConfigStatus
import Amazonka.OpenSearch.Types.CognitoOptionsStatus
import Amazonka.OpenSearch.Types.DomainEndpointOptionsStatus
import Amazonka.OpenSearch.Types.EBSOptionsStatus
import Amazonka.OpenSearch.Types.EncryptionAtRestOptionsStatus
import Amazonka.OpenSearch.Types.LogPublishingOptionsStatus
import Amazonka.OpenSearch.Types.NodeToNodeEncryptionOptionsStatus
import Amazonka.OpenSearch.Types.SnapshotOptionsStatus
import Amazonka.OpenSearch.Types.VPCDerivedInfoStatus
import Amazonka.OpenSearch.Types.VersionStatus
import qualified Amazonka.Prelude as Prelude

-- | The configuration of a domain.
--
-- /See:/ 'newDomainConfig' smart constructor.
data DomainConfig = DomainConfig'
  { -- | The @EBSOptions@ for the domain.
    DomainConfig -> Maybe EBSOptionsStatus
eBSOptions :: Prelude.Maybe EBSOptionsStatus,
    -- | String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the
    -- engine version for the OpenSearch or Elasticsearch domain.
    DomainConfig -> Maybe VersionStatus
engineVersion :: Prelude.Maybe VersionStatus,
    -- | The @NodeToNodeEncryptionOptions@ for the domain.
    DomainConfig -> Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions :: Prelude.Maybe NodeToNodeEncryptionOptionsStatus,
    -- | IAM access policy as a JSON-formatted string.
    DomainConfig -> Maybe AccessPoliciesStatus
accessPolicies :: Prelude.Maybe AccessPoliciesStatus,
    -- | Specifies @AutoTuneOptions@ for the domain.
    DomainConfig -> Maybe AutoTuneOptionsStatus
autoTuneOptions :: Prelude.Maybe AutoTuneOptionsStatus,
    -- | Log publishing options for the given domain.
    DomainConfig -> Maybe LogPublishingOptionsStatus
logPublishingOptions :: Prelude.Maybe LogPublishingOptionsStatus,
    -- | The @ClusterConfig@ for the domain.
    DomainConfig -> Maybe ClusterConfigStatus
clusterConfig :: Prelude.Maybe ClusterConfigStatus,
    -- | Specifies @AdvancedSecurityOptions@ for the domain.
    DomainConfig -> Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions :: Prelude.Maybe AdvancedSecurityOptionsStatus,
    -- | The @SnapshotOptions@ for the domain.
    DomainConfig -> Maybe SnapshotOptionsStatus
snapshotOptions :: Prelude.Maybe SnapshotOptionsStatus,
    -- | The @CognitoOptions@ for the specified domain. For more information, see
    -- <http://docs.aws.amazon.com/opensearch-service/latest/developerguide/cognito-auth.html Configuring Amazon Cognito authentication for OpenSearch Dashboards>.
    DomainConfig -> Maybe CognitoOptionsStatus
cognitoOptions :: Prelude.Maybe CognitoOptionsStatus,
    -- | The @EncryptionAtRestOptions@ for the domain.
    DomainConfig -> Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions :: Prelude.Maybe EncryptionAtRestOptionsStatus,
    -- | The @VPCOptions@ for the specified domain. For more information, see
    -- <http://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html Launching your Amazon OpenSearch Service domains using a VPC>.
    DomainConfig -> Maybe VPCDerivedInfoStatus
vPCOptions :: Prelude.Maybe VPCDerivedInfoStatus,
    -- | The @DomainEndpointOptions@ for the domain.
    DomainConfig -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions :: Prelude.Maybe DomainEndpointOptionsStatus,
    -- | The @AdvancedOptions@ for the domain. See
    -- <http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options Advanced options>
    -- for more information.
    DomainConfig -> Maybe AdvancedOptionsStatus
advancedOptions :: Prelude.Maybe AdvancedOptionsStatus
  }
  deriving (DomainConfig -> DomainConfig -> Bool
(DomainConfig -> DomainConfig -> Bool)
-> (DomainConfig -> DomainConfig -> Bool) -> Eq DomainConfig
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DomainConfig -> DomainConfig -> Bool
$c/= :: DomainConfig -> DomainConfig -> Bool
== :: DomainConfig -> DomainConfig -> Bool
$c== :: DomainConfig -> DomainConfig -> Bool
Prelude.Eq, ReadPrec [DomainConfig]
ReadPrec DomainConfig
Int -> ReadS DomainConfig
ReadS [DomainConfig]
(Int -> ReadS DomainConfig)
-> ReadS [DomainConfig]
-> ReadPrec DomainConfig
-> ReadPrec [DomainConfig]
-> Read DomainConfig
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DomainConfig]
$creadListPrec :: ReadPrec [DomainConfig]
readPrec :: ReadPrec DomainConfig
$creadPrec :: ReadPrec DomainConfig
readList :: ReadS [DomainConfig]
$creadList :: ReadS [DomainConfig]
readsPrec :: Int -> ReadS DomainConfig
$creadsPrec :: Int -> ReadS DomainConfig
Prelude.Read, Int -> DomainConfig -> ShowS
[DomainConfig] -> ShowS
DomainConfig -> String
(Int -> DomainConfig -> ShowS)
-> (DomainConfig -> String)
-> ([DomainConfig] -> ShowS)
-> Show DomainConfig
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DomainConfig] -> ShowS
$cshowList :: [DomainConfig] -> ShowS
show :: DomainConfig -> String
$cshow :: DomainConfig -> String
showsPrec :: Int -> DomainConfig -> ShowS
$cshowsPrec :: Int -> DomainConfig -> ShowS
Prelude.Show, (forall x. DomainConfig -> Rep DomainConfig x)
-> (forall x. Rep DomainConfig x -> DomainConfig)
-> Generic DomainConfig
forall x. Rep DomainConfig x -> DomainConfig
forall x. DomainConfig -> Rep DomainConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DomainConfig x -> DomainConfig
$cfrom :: forall x. DomainConfig -> Rep DomainConfig x
Prelude.Generic)

-- |
-- Create a value of 'DomainConfig' 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:
--
-- 'eBSOptions', 'domainConfig_eBSOptions' - The @EBSOptions@ for the domain.
--
-- 'engineVersion', 'domainConfig_engineVersion' - String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the
-- engine version for the OpenSearch or Elasticsearch domain.
--
-- 'nodeToNodeEncryptionOptions', 'domainConfig_nodeToNodeEncryptionOptions' - The @NodeToNodeEncryptionOptions@ for the domain.
--
-- 'accessPolicies', 'domainConfig_accessPolicies' - IAM access policy as a JSON-formatted string.
--
-- 'autoTuneOptions', 'domainConfig_autoTuneOptions' - Specifies @AutoTuneOptions@ for the domain.
--
-- 'logPublishingOptions', 'domainConfig_logPublishingOptions' - Log publishing options for the given domain.
--
-- 'clusterConfig', 'domainConfig_clusterConfig' - The @ClusterConfig@ for the domain.
--
-- 'advancedSecurityOptions', 'domainConfig_advancedSecurityOptions' - Specifies @AdvancedSecurityOptions@ for the domain.
--
-- 'snapshotOptions', 'domainConfig_snapshotOptions' - The @SnapshotOptions@ for the domain.
--
-- 'cognitoOptions', 'domainConfig_cognitoOptions' - The @CognitoOptions@ for the specified domain. For more information, see
-- <http://docs.aws.amazon.com/opensearch-service/latest/developerguide/cognito-auth.html Configuring Amazon Cognito authentication for OpenSearch Dashboards>.
--
-- 'encryptionAtRestOptions', 'domainConfig_encryptionAtRestOptions' - The @EncryptionAtRestOptions@ for the domain.
--
-- 'vPCOptions', 'domainConfig_vPCOptions' - The @VPCOptions@ for the specified domain. For more information, see
-- <http://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html Launching your Amazon OpenSearch Service domains using a VPC>.
--
-- 'domainEndpointOptions', 'domainConfig_domainEndpointOptions' - The @DomainEndpointOptions@ for the domain.
--
-- 'advancedOptions', 'domainConfig_advancedOptions' - The @AdvancedOptions@ for the domain. See
-- <http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options Advanced options>
-- for more information.
newDomainConfig ::
  DomainConfig
newDomainConfig :: DomainConfig
newDomainConfig =
  DomainConfig' :: Maybe EBSOptionsStatus
-> Maybe VersionStatus
-> Maybe NodeToNodeEncryptionOptionsStatus
-> Maybe AccessPoliciesStatus
-> Maybe AutoTuneOptionsStatus
-> Maybe LogPublishingOptionsStatus
-> Maybe ClusterConfigStatus
-> Maybe AdvancedSecurityOptionsStatus
-> Maybe SnapshotOptionsStatus
-> Maybe CognitoOptionsStatus
-> Maybe EncryptionAtRestOptionsStatus
-> Maybe VPCDerivedInfoStatus
-> Maybe DomainEndpointOptionsStatus
-> Maybe AdvancedOptionsStatus
-> DomainConfig
DomainConfig'
    { $sel:eBSOptions:DomainConfig' :: Maybe EBSOptionsStatus
eBSOptions = Maybe EBSOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:engineVersion:DomainConfig' :: Maybe VersionStatus
engineVersion = Maybe VersionStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:nodeToNodeEncryptionOptions:DomainConfig' :: Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions = Maybe NodeToNodeEncryptionOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:accessPolicies:DomainConfig' :: Maybe AccessPoliciesStatus
accessPolicies = Maybe AccessPoliciesStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:autoTuneOptions:DomainConfig' :: Maybe AutoTuneOptionsStatus
autoTuneOptions = Maybe AutoTuneOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:logPublishingOptions:DomainConfig' :: Maybe LogPublishingOptionsStatus
logPublishingOptions = Maybe LogPublishingOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterConfig:DomainConfig' :: Maybe ClusterConfigStatus
clusterConfig = Maybe ClusterConfigStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:advancedSecurityOptions:DomainConfig' :: Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions = Maybe AdvancedSecurityOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotOptions:DomainConfig' :: Maybe SnapshotOptionsStatus
snapshotOptions = Maybe SnapshotOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:cognitoOptions:DomainConfig' :: Maybe CognitoOptionsStatus
cognitoOptions = Maybe CognitoOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionAtRestOptions:DomainConfig' :: Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions = Maybe EncryptionAtRestOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:vPCOptions:DomainConfig' :: Maybe VPCDerivedInfoStatus
vPCOptions = Maybe VPCDerivedInfoStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:domainEndpointOptions:DomainConfig' :: Maybe DomainEndpointOptionsStatus
domainEndpointOptions = Maybe DomainEndpointOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:advancedOptions:DomainConfig' :: Maybe AdvancedOptionsStatus
advancedOptions = Maybe AdvancedOptionsStatus
forall a. Maybe a
Prelude.Nothing
    }

-- | The @EBSOptions@ for the domain.
domainConfig_eBSOptions :: Lens.Lens' DomainConfig (Prelude.Maybe EBSOptionsStatus)
domainConfig_eBSOptions :: (Maybe EBSOptionsStatus -> f (Maybe EBSOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_eBSOptions = (DomainConfig -> Maybe EBSOptionsStatus)
-> (DomainConfig -> Maybe EBSOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe EBSOptionsStatus)
     (Maybe EBSOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe EBSOptionsStatus
eBSOptions :: Maybe EBSOptionsStatus
$sel:eBSOptions:DomainConfig' :: DomainConfig -> Maybe EBSOptionsStatus
eBSOptions} -> Maybe EBSOptionsStatus
eBSOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe EBSOptionsStatus
a -> DomainConfig
s {$sel:eBSOptions:DomainConfig' :: Maybe EBSOptionsStatus
eBSOptions = Maybe EBSOptionsStatus
a} :: DomainConfig)

-- | String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the
-- engine version for the OpenSearch or Elasticsearch domain.
domainConfig_engineVersion :: Lens.Lens' DomainConfig (Prelude.Maybe VersionStatus)
domainConfig_engineVersion :: (Maybe VersionStatus -> f (Maybe VersionStatus))
-> DomainConfig -> f DomainConfig
domainConfig_engineVersion = (DomainConfig -> Maybe VersionStatus)
-> (DomainConfig -> Maybe VersionStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe VersionStatus)
     (Maybe VersionStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe VersionStatus
engineVersion :: Maybe VersionStatus
$sel:engineVersion:DomainConfig' :: DomainConfig -> Maybe VersionStatus
engineVersion} -> Maybe VersionStatus
engineVersion) (\s :: DomainConfig
s@DomainConfig' {} Maybe VersionStatus
a -> DomainConfig
s {$sel:engineVersion:DomainConfig' :: Maybe VersionStatus
engineVersion = Maybe VersionStatus
a} :: DomainConfig)

-- | The @NodeToNodeEncryptionOptions@ for the domain.
domainConfig_nodeToNodeEncryptionOptions :: Lens.Lens' DomainConfig (Prelude.Maybe NodeToNodeEncryptionOptionsStatus)
domainConfig_nodeToNodeEncryptionOptions :: (Maybe NodeToNodeEncryptionOptionsStatus
 -> f (Maybe NodeToNodeEncryptionOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_nodeToNodeEncryptionOptions = (DomainConfig -> Maybe NodeToNodeEncryptionOptionsStatus)
-> (DomainConfig
    -> Maybe NodeToNodeEncryptionOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe NodeToNodeEncryptionOptionsStatus)
     (Maybe NodeToNodeEncryptionOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptionsStatus
$sel:nodeToNodeEncryptionOptions:DomainConfig' :: DomainConfig -> Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions} -> Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe NodeToNodeEncryptionOptionsStatus
a -> DomainConfig
s {$sel:nodeToNodeEncryptionOptions:DomainConfig' :: Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions = Maybe NodeToNodeEncryptionOptionsStatus
a} :: DomainConfig)

-- | IAM access policy as a JSON-formatted string.
domainConfig_accessPolicies :: Lens.Lens' DomainConfig (Prelude.Maybe AccessPoliciesStatus)
domainConfig_accessPolicies :: (Maybe AccessPoliciesStatus -> f (Maybe AccessPoliciesStatus))
-> DomainConfig -> f DomainConfig
domainConfig_accessPolicies = (DomainConfig -> Maybe AccessPoliciesStatus)
-> (DomainConfig -> Maybe AccessPoliciesStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe AccessPoliciesStatus)
     (Maybe AccessPoliciesStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe AccessPoliciesStatus
accessPolicies :: Maybe AccessPoliciesStatus
$sel:accessPolicies:DomainConfig' :: DomainConfig -> Maybe AccessPoliciesStatus
accessPolicies} -> Maybe AccessPoliciesStatus
accessPolicies) (\s :: DomainConfig
s@DomainConfig' {} Maybe AccessPoliciesStatus
a -> DomainConfig
s {$sel:accessPolicies:DomainConfig' :: Maybe AccessPoliciesStatus
accessPolicies = Maybe AccessPoliciesStatus
a} :: DomainConfig)

-- | Specifies @AutoTuneOptions@ for the domain.
domainConfig_autoTuneOptions :: Lens.Lens' DomainConfig (Prelude.Maybe AutoTuneOptionsStatus)
domainConfig_autoTuneOptions :: (Maybe AutoTuneOptionsStatus -> f (Maybe AutoTuneOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_autoTuneOptions = (DomainConfig -> Maybe AutoTuneOptionsStatus)
-> (DomainConfig -> Maybe AutoTuneOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe AutoTuneOptionsStatus)
     (Maybe AutoTuneOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe AutoTuneOptionsStatus
autoTuneOptions :: Maybe AutoTuneOptionsStatus
$sel:autoTuneOptions:DomainConfig' :: DomainConfig -> Maybe AutoTuneOptionsStatus
autoTuneOptions} -> Maybe AutoTuneOptionsStatus
autoTuneOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe AutoTuneOptionsStatus
a -> DomainConfig
s {$sel:autoTuneOptions:DomainConfig' :: Maybe AutoTuneOptionsStatus
autoTuneOptions = Maybe AutoTuneOptionsStatus
a} :: DomainConfig)

-- | Log publishing options for the given domain.
domainConfig_logPublishingOptions :: Lens.Lens' DomainConfig (Prelude.Maybe LogPublishingOptionsStatus)
domainConfig_logPublishingOptions :: (Maybe LogPublishingOptionsStatus
 -> f (Maybe LogPublishingOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_logPublishingOptions = (DomainConfig -> Maybe LogPublishingOptionsStatus)
-> (DomainConfig
    -> Maybe LogPublishingOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe LogPublishingOptionsStatus)
     (Maybe LogPublishingOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe LogPublishingOptionsStatus
logPublishingOptions :: Maybe LogPublishingOptionsStatus
$sel:logPublishingOptions:DomainConfig' :: DomainConfig -> Maybe LogPublishingOptionsStatus
logPublishingOptions} -> Maybe LogPublishingOptionsStatus
logPublishingOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe LogPublishingOptionsStatus
a -> DomainConfig
s {$sel:logPublishingOptions:DomainConfig' :: Maybe LogPublishingOptionsStatus
logPublishingOptions = Maybe LogPublishingOptionsStatus
a} :: DomainConfig)

-- | The @ClusterConfig@ for the domain.
domainConfig_clusterConfig :: Lens.Lens' DomainConfig (Prelude.Maybe ClusterConfigStatus)
domainConfig_clusterConfig :: (Maybe ClusterConfigStatus -> f (Maybe ClusterConfigStatus))
-> DomainConfig -> f DomainConfig
domainConfig_clusterConfig = (DomainConfig -> Maybe ClusterConfigStatus)
-> (DomainConfig -> Maybe ClusterConfigStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe ClusterConfigStatus)
     (Maybe ClusterConfigStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe ClusterConfigStatus
clusterConfig :: Maybe ClusterConfigStatus
$sel:clusterConfig:DomainConfig' :: DomainConfig -> Maybe ClusterConfigStatus
clusterConfig} -> Maybe ClusterConfigStatus
clusterConfig) (\s :: DomainConfig
s@DomainConfig' {} Maybe ClusterConfigStatus
a -> DomainConfig
s {$sel:clusterConfig:DomainConfig' :: Maybe ClusterConfigStatus
clusterConfig = Maybe ClusterConfigStatus
a} :: DomainConfig)

-- | Specifies @AdvancedSecurityOptions@ for the domain.
domainConfig_advancedSecurityOptions :: Lens.Lens' DomainConfig (Prelude.Maybe AdvancedSecurityOptionsStatus)
domainConfig_advancedSecurityOptions :: (Maybe AdvancedSecurityOptionsStatus
 -> f (Maybe AdvancedSecurityOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_advancedSecurityOptions = (DomainConfig -> Maybe AdvancedSecurityOptionsStatus)
-> (DomainConfig
    -> Maybe AdvancedSecurityOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe AdvancedSecurityOptionsStatus)
     (Maybe AdvancedSecurityOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsStatus
$sel:advancedSecurityOptions:DomainConfig' :: DomainConfig -> Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions} -> Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe AdvancedSecurityOptionsStatus
a -> DomainConfig
s {$sel:advancedSecurityOptions:DomainConfig' :: Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions = Maybe AdvancedSecurityOptionsStatus
a} :: DomainConfig)

-- | The @SnapshotOptions@ for the domain.
domainConfig_snapshotOptions :: Lens.Lens' DomainConfig (Prelude.Maybe SnapshotOptionsStatus)
domainConfig_snapshotOptions :: (Maybe SnapshotOptionsStatus -> f (Maybe SnapshotOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_snapshotOptions = (DomainConfig -> Maybe SnapshotOptionsStatus)
-> (DomainConfig -> Maybe SnapshotOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe SnapshotOptionsStatus)
     (Maybe SnapshotOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe SnapshotOptionsStatus
snapshotOptions :: Maybe SnapshotOptionsStatus
$sel:snapshotOptions:DomainConfig' :: DomainConfig -> Maybe SnapshotOptionsStatus
snapshotOptions} -> Maybe SnapshotOptionsStatus
snapshotOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe SnapshotOptionsStatus
a -> DomainConfig
s {$sel:snapshotOptions:DomainConfig' :: Maybe SnapshotOptionsStatus
snapshotOptions = Maybe SnapshotOptionsStatus
a} :: DomainConfig)

-- | The @CognitoOptions@ for the specified domain. For more information, see
-- <http://docs.aws.amazon.com/opensearch-service/latest/developerguide/cognito-auth.html Configuring Amazon Cognito authentication for OpenSearch Dashboards>.
domainConfig_cognitoOptions :: Lens.Lens' DomainConfig (Prelude.Maybe CognitoOptionsStatus)
domainConfig_cognitoOptions :: (Maybe CognitoOptionsStatus -> f (Maybe CognitoOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_cognitoOptions = (DomainConfig -> Maybe CognitoOptionsStatus)
-> (DomainConfig -> Maybe CognitoOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe CognitoOptionsStatus)
     (Maybe CognitoOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe CognitoOptionsStatus
cognitoOptions :: Maybe CognitoOptionsStatus
$sel:cognitoOptions:DomainConfig' :: DomainConfig -> Maybe CognitoOptionsStatus
cognitoOptions} -> Maybe CognitoOptionsStatus
cognitoOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe CognitoOptionsStatus
a -> DomainConfig
s {$sel:cognitoOptions:DomainConfig' :: Maybe CognitoOptionsStatus
cognitoOptions = Maybe CognitoOptionsStatus
a} :: DomainConfig)

-- | The @EncryptionAtRestOptions@ for the domain.
domainConfig_encryptionAtRestOptions :: Lens.Lens' DomainConfig (Prelude.Maybe EncryptionAtRestOptionsStatus)
domainConfig_encryptionAtRestOptions :: (Maybe EncryptionAtRestOptionsStatus
 -> f (Maybe EncryptionAtRestOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_encryptionAtRestOptions = (DomainConfig -> Maybe EncryptionAtRestOptionsStatus)
-> (DomainConfig
    -> Maybe EncryptionAtRestOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe EncryptionAtRestOptionsStatus)
     (Maybe EncryptionAtRestOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions :: Maybe EncryptionAtRestOptionsStatus
$sel:encryptionAtRestOptions:DomainConfig' :: DomainConfig -> Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions} -> Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe EncryptionAtRestOptionsStatus
a -> DomainConfig
s {$sel:encryptionAtRestOptions:DomainConfig' :: Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions = Maybe EncryptionAtRestOptionsStatus
a} :: DomainConfig)

-- | The @VPCOptions@ for the specified domain. For more information, see
-- <http://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html Launching your Amazon OpenSearch Service domains using a VPC>.
domainConfig_vPCOptions :: Lens.Lens' DomainConfig (Prelude.Maybe VPCDerivedInfoStatus)
domainConfig_vPCOptions :: (Maybe VPCDerivedInfoStatus -> f (Maybe VPCDerivedInfoStatus))
-> DomainConfig -> f DomainConfig
domainConfig_vPCOptions = (DomainConfig -> Maybe VPCDerivedInfoStatus)
-> (DomainConfig -> Maybe VPCDerivedInfoStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe VPCDerivedInfoStatus)
     (Maybe VPCDerivedInfoStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe VPCDerivedInfoStatus
vPCOptions :: Maybe VPCDerivedInfoStatus
$sel:vPCOptions:DomainConfig' :: DomainConfig -> Maybe VPCDerivedInfoStatus
vPCOptions} -> Maybe VPCDerivedInfoStatus
vPCOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe VPCDerivedInfoStatus
a -> DomainConfig
s {$sel:vPCOptions:DomainConfig' :: Maybe VPCDerivedInfoStatus
vPCOptions = Maybe VPCDerivedInfoStatus
a} :: DomainConfig)

-- | The @DomainEndpointOptions@ for the domain.
domainConfig_domainEndpointOptions :: Lens.Lens' DomainConfig (Prelude.Maybe DomainEndpointOptionsStatus)
domainConfig_domainEndpointOptions :: (Maybe DomainEndpointOptionsStatus
 -> f (Maybe DomainEndpointOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_domainEndpointOptions = (DomainConfig -> Maybe DomainEndpointOptionsStatus)
-> (DomainConfig
    -> Maybe DomainEndpointOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe DomainEndpointOptionsStatus)
     (Maybe DomainEndpointOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe DomainEndpointOptionsStatus
domainEndpointOptions :: Maybe DomainEndpointOptionsStatus
$sel:domainEndpointOptions:DomainConfig' :: DomainConfig -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions} -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe DomainEndpointOptionsStatus
a -> DomainConfig
s {$sel:domainEndpointOptions:DomainConfig' :: Maybe DomainEndpointOptionsStatus
domainEndpointOptions = Maybe DomainEndpointOptionsStatus
a} :: DomainConfig)

-- | The @AdvancedOptions@ for the domain. See
-- <http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options Advanced options>
-- for more information.
domainConfig_advancedOptions :: Lens.Lens' DomainConfig (Prelude.Maybe AdvancedOptionsStatus)
domainConfig_advancedOptions :: (Maybe AdvancedOptionsStatus -> f (Maybe AdvancedOptionsStatus))
-> DomainConfig -> f DomainConfig
domainConfig_advancedOptions = (DomainConfig -> Maybe AdvancedOptionsStatus)
-> (DomainConfig -> Maybe AdvancedOptionsStatus -> DomainConfig)
-> Lens
     DomainConfig
     DomainConfig
     (Maybe AdvancedOptionsStatus)
     (Maybe AdvancedOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe AdvancedOptionsStatus
advancedOptions :: Maybe AdvancedOptionsStatus
$sel:advancedOptions:DomainConfig' :: DomainConfig -> Maybe AdvancedOptionsStatus
advancedOptions} -> Maybe AdvancedOptionsStatus
advancedOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe AdvancedOptionsStatus
a -> DomainConfig
s {$sel:advancedOptions:DomainConfig' :: Maybe AdvancedOptionsStatus
advancedOptions = Maybe AdvancedOptionsStatus
a} :: DomainConfig)

instance Core.FromJSON DomainConfig where
  parseJSON :: Value -> Parser DomainConfig
parseJSON =
    String
-> (Object -> Parser DomainConfig) -> Value -> Parser DomainConfig
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"DomainConfig"
      ( \Object
x ->
          Maybe EBSOptionsStatus
-> Maybe VersionStatus
-> Maybe NodeToNodeEncryptionOptionsStatus
-> Maybe AccessPoliciesStatus
-> Maybe AutoTuneOptionsStatus
-> Maybe LogPublishingOptionsStatus
-> Maybe ClusterConfigStatus
-> Maybe AdvancedSecurityOptionsStatus
-> Maybe SnapshotOptionsStatus
-> Maybe CognitoOptionsStatus
-> Maybe EncryptionAtRestOptionsStatus
-> Maybe VPCDerivedInfoStatus
-> Maybe DomainEndpointOptionsStatus
-> Maybe AdvancedOptionsStatus
-> DomainConfig
DomainConfig'
            (Maybe EBSOptionsStatus
 -> Maybe VersionStatus
 -> Maybe NodeToNodeEncryptionOptionsStatus
 -> Maybe AccessPoliciesStatus
 -> Maybe AutoTuneOptionsStatus
 -> Maybe LogPublishingOptionsStatus
 -> Maybe ClusterConfigStatus
 -> Maybe AdvancedSecurityOptionsStatus
 -> Maybe SnapshotOptionsStatus
 -> Maybe CognitoOptionsStatus
 -> Maybe EncryptionAtRestOptionsStatus
 -> Maybe VPCDerivedInfoStatus
 -> Maybe DomainEndpointOptionsStatus
 -> Maybe AdvancedOptionsStatus
 -> DomainConfig)
-> Parser (Maybe EBSOptionsStatus)
-> Parser
     (Maybe VersionStatus
      -> Maybe NodeToNodeEncryptionOptionsStatus
      -> Maybe AccessPoliciesStatus
      -> Maybe AutoTuneOptionsStatus
      -> Maybe LogPublishingOptionsStatus
      -> Maybe ClusterConfigStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe EBSOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EBSOptions")
            Parser
  (Maybe VersionStatus
   -> Maybe NodeToNodeEncryptionOptionsStatus
   -> Maybe AccessPoliciesStatus
   -> Maybe AutoTuneOptionsStatus
   -> Maybe LogPublishingOptionsStatus
   -> Maybe ClusterConfigStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe VersionStatus)
-> Parser
     (Maybe NodeToNodeEncryptionOptionsStatus
      -> Maybe AccessPoliciesStatus
      -> Maybe AutoTuneOptionsStatus
      -> Maybe LogPublishingOptionsStatus
      -> Maybe ClusterConfigStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe VersionStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EngineVersion")
            Parser
  (Maybe NodeToNodeEncryptionOptionsStatus
   -> Maybe AccessPoliciesStatus
   -> Maybe AutoTuneOptionsStatus
   -> Maybe LogPublishingOptionsStatus
   -> Maybe ClusterConfigStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe NodeToNodeEncryptionOptionsStatus)
-> Parser
     (Maybe AccessPoliciesStatus
      -> Maybe AutoTuneOptionsStatus
      -> Maybe LogPublishingOptionsStatus
      -> Maybe ClusterConfigStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NodeToNodeEncryptionOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NodeToNodeEncryptionOptions")
            Parser
  (Maybe AccessPoliciesStatus
   -> Maybe AutoTuneOptionsStatus
   -> Maybe LogPublishingOptionsStatus
   -> Maybe ClusterConfigStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe AccessPoliciesStatus)
-> Parser
     (Maybe AutoTuneOptionsStatus
      -> Maybe LogPublishingOptionsStatus
      -> Maybe ClusterConfigStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AccessPoliciesStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AccessPolicies")
            Parser
  (Maybe AutoTuneOptionsStatus
   -> Maybe LogPublishingOptionsStatus
   -> Maybe ClusterConfigStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe AutoTuneOptionsStatus)
-> Parser
     (Maybe LogPublishingOptionsStatus
      -> Maybe ClusterConfigStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AutoTuneOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AutoTuneOptions")
            Parser
  (Maybe LogPublishingOptionsStatus
   -> Maybe ClusterConfigStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe LogPublishingOptionsStatus)
-> Parser
     (Maybe ClusterConfigStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LogPublishingOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LogPublishingOptions")
            Parser
  (Maybe ClusterConfigStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe ClusterConfigStatus)
-> Parser
     (Maybe AdvancedSecurityOptionsStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ClusterConfigStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterConfig")
            Parser
  (Maybe AdvancedSecurityOptionsStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe AdvancedSecurityOptionsStatus)
-> Parser
     (Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AdvancedSecurityOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AdvancedSecurityOptions")
            Parser
  (Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe SnapshotOptionsStatus)
-> Parser
     (Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SnapshotOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SnapshotOptions")
            Parser
  (Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe CognitoOptionsStatus)
-> Parser
     (Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CognitoOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CognitoOptions")
            Parser
  (Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe EncryptionAtRestOptionsStatus)
-> Parser
     (Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EncryptionAtRestOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EncryptionAtRestOptions")
            Parser
  (Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> DomainConfig)
-> Parser (Maybe VPCDerivedInfoStatus)
-> Parser
     (Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe VPCDerivedInfoStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VPCOptions")
            Parser
  (Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus -> DomainConfig)
-> Parser (Maybe DomainEndpointOptionsStatus)
-> Parser (Maybe AdvancedOptionsStatus -> DomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DomainEndpointOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DomainEndpointOptions")
            Parser (Maybe AdvancedOptionsStatus -> DomainConfig)
-> Parser (Maybe AdvancedOptionsStatus) -> Parser DomainConfig
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AdvancedOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AdvancedOptions")
      )

instance Prelude.Hashable DomainConfig

instance Prelude.NFData DomainConfig