amazonka-opensearchserverless-2.0: gen/Amazonka/OpenSearchServerless/Types/SamlConfigOptions.hs
{-# 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.OpenSearchServerless.Types.SamlConfigOptions
-- 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.OpenSearchServerless.Types.SamlConfigOptions where
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
-- | Describes SAML options for an OpenSearch Serverless security
-- configuration in the form of a key-value map.
--
-- /See:/ 'newSamlConfigOptions' smart constructor.
data SamlConfigOptions = SamlConfigOptions'
{ -- | The group attribute for this SAML integration.
groupAttribute :: Prelude.Maybe Prelude.Text,
-- | The session timeout, in minutes. Minimum is 15 minutes and maximum is
-- 1440 minutes (24 hours or 1 day). Default is 60 minutes.
sessionTimeout :: Prelude.Maybe Prelude.Natural,
-- | A user attribute for this SAML integration.
userAttribute :: Prelude.Maybe Prelude.Text,
-- | The XML IdP metadata file generated from your identity provider.
metadata :: Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'SamlConfigOptions' 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:
--
-- 'groupAttribute', 'samlConfigOptions_groupAttribute' - The group attribute for this SAML integration.
--
-- 'sessionTimeout', 'samlConfigOptions_sessionTimeout' - The session timeout, in minutes. Minimum is 15 minutes and maximum is
-- 1440 minutes (24 hours or 1 day). Default is 60 minutes.
--
-- 'userAttribute', 'samlConfigOptions_userAttribute' - A user attribute for this SAML integration.
--
-- 'metadata', 'samlConfigOptions_metadata' - The XML IdP metadata file generated from your identity provider.
newSamlConfigOptions ::
-- | 'metadata'
Prelude.Text ->
SamlConfigOptions
newSamlConfigOptions pMetadata_ =
SamlConfigOptions'
{ groupAttribute =
Prelude.Nothing,
sessionTimeout = Prelude.Nothing,
userAttribute = Prelude.Nothing,
metadata = pMetadata_
}
-- | The group attribute for this SAML integration.
samlConfigOptions_groupAttribute :: Lens.Lens' SamlConfigOptions (Prelude.Maybe Prelude.Text)
samlConfigOptions_groupAttribute = Lens.lens (\SamlConfigOptions' {groupAttribute} -> groupAttribute) (\s@SamlConfigOptions' {} a -> s {groupAttribute = a} :: SamlConfigOptions)
-- | The session timeout, in minutes. Minimum is 15 minutes and maximum is
-- 1440 minutes (24 hours or 1 day). Default is 60 minutes.
samlConfigOptions_sessionTimeout :: Lens.Lens' SamlConfigOptions (Prelude.Maybe Prelude.Natural)
samlConfigOptions_sessionTimeout = Lens.lens (\SamlConfigOptions' {sessionTimeout} -> sessionTimeout) (\s@SamlConfigOptions' {} a -> s {sessionTimeout = a} :: SamlConfigOptions)
-- | A user attribute for this SAML integration.
samlConfigOptions_userAttribute :: Lens.Lens' SamlConfigOptions (Prelude.Maybe Prelude.Text)
samlConfigOptions_userAttribute = Lens.lens (\SamlConfigOptions' {userAttribute} -> userAttribute) (\s@SamlConfigOptions' {} a -> s {userAttribute = a} :: SamlConfigOptions)
-- | The XML IdP metadata file generated from your identity provider.
samlConfigOptions_metadata :: Lens.Lens' SamlConfigOptions Prelude.Text
samlConfigOptions_metadata = Lens.lens (\SamlConfigOptions' {metadata} -> metadata) (\s@SamlConfigOptions' {} a -> s {metadata = a} :: SamlConfigOptions)
instance Data.FromJSON SamlConfigOptions where
parseJSON =
Data.withObject
"SamlConfigOptions"
( \x ->
SamlConfigOptions'
Prelude.<$> (x Data..:? "groupAttribute")
Prelude.<*> (x Data..:? "sessionTimeout")
Prelude.<*> (x Data..:? "userAttribute")
Prelude.<*> (x Data..: "metadata")
)
instance Prelude.Hashable SamlConfigOptions where
hashWithSalt _salt SamlConfigOptions' {..} =
_salt
`Prelude.hashWithSalt` groupAttribute
`Prelude.hashWithSalt` sessionTimeout
`Prelude.hashWithSalt` userAttribute
`Prelude.hashWithSalt` metadata
instance Prelude.NFData SamlConfigOptions where
rnf SamlConfigOptions' {..} =
Prelude.rnf groupAttribute
`Prelude.seq` Prelude.rnf sessionTimeout
`Prelude.seq` Prelude.rnf userAttribute
`Prelude.seq` Prelude.rnf metadata
instance Data.ToJSON SamlConfigOptions where
toJSON SamlConfigOptions' {..} =
Data.object
( Prelude.catMaybes
[ ("groupAttribute" Data..=)
Prelude.<$> groupAttribute,
("sessionTimeout" Data..=)
Prelude.<$> sessionTimeout,
("userAttribute" Data..=) Prelude.<$> userAttribute,
Prelude.Just ("metadata" Data..= metadata)
]
)