{-# 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.AlexaBusiness.Types.NetworkProfile
-- 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.AlexaBusiness.Types.NetworkProfile where

import Amazonka.AlexaBusiness.Types.NetworkEapMethod
import Amazonka.AlexaBusiness.Types.NetworkSecurityType
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | The network profile associated with a device.
--
-- /See:/ 'newNetworkProfile' smart constructor.
data NetworkProfile = NetworkProfile'
  { -- | The name of the network profile associated with a device.
    NetworkProfile -> Maybe Text
networkProfileName :: Prelude.Maybe Prelude.Text,
    -- | The SSID of the Wi-Fi network.
    NetworkProfile -> Maybe Text
ssid :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the network profile associated with a device.
    NetworkProfile -> Maybe Text
networkProfileArn :: Prelude.Maybe Prelude.Text,
    -- | The security type of the Wi-Fi network. This can be WPA2_ENTERPRISE,
    -- WPA2_PSK, WPA_PSK, WEP, or OPEN.
    NetworkProfile -> Maybe NetworkSecurityType
securityType :: Prelude.Maybe NetworkSecurityType,
    -- | The current password of the Wi-Fi network.
    NetworkProfile -> Maybe (Sensitive Text)
currentPassword :: Prelude.Maybe (Core.Sensitive Prelude.Text),
    -- | The next, or subsequent, password of the Wi-Fi network. This password is
    -- asynchronously transmitted to the device and is used when the password
    -- of the network changes to NextPassword.
    NetworkProfile -> Maybe (Sensitive Text)
nextPassword :: Prelude.Maybe (Core.Sensitive Prelude.Text),
    -- | The authentication standard that is used in the EAP framework.
    -- Currently, EAP_TLS is supported.
    NetworkProfile -> Maybe NetworkEapMethod
eapMethod :: Prelude.Maybe NetworkEapMethod,
    -- | Detailed information about a device\'s network profile.
    NetworkProfile -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The root certificates of your authentication server, which is installed
    -- on your devices and used to trust your authentication server during EAP
    -- negotiation.
    NetworkProfile -> Maybe (NonEmpty Text)
trustAnchors :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | The ARN of the Private Certificate Authority (PCA) created in AWS
    -- Certificate Manager (ACM). This is used to issue certificates to the
    -- devices.
    NetworkProfile -> Maybe Text
certificateAuthorityArn :: Prelude.Maybe Prelude.Text
  }
  deriving (NetworkProfile -> NetworkProfile -> Bool
(NetworkProfile -> NetworkProfile -> Bool)
-> (NetworkProfile -> NetworkProfile -> Bool) -> Eq NetworkProfile
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NetworkProfile -> NetworkProfile -> Bool
$c/= :: NetworkProfile -> NetworkProfile -> Bool
== :: NetworkProfile -> NetworkProfile -> Bool
$c== :: NetworkProfile -> NetworkProfile -> Bool
Prelude.Eq, Int -> NetworkProfile -> ShowS
[NetworkProfile] -> ShowS
NetworkProfile -> String
(Int -> NetworkProfile -> ShowS)
-> (NetworkProfile -> String)
-> ([NetworkProfile] -> ShowS)
-> Show NetworkProfile
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NetworkProfile] -> ShowS
$cshowList :: [NetworkProfile] -> ShowS
show :: NetworkProfile -> String
$cshow :: NetworkProfile -> String
showsPrec :: Int -> NetworkProfile -> ShowS
$cshowsPrec :: Int -> NetworkProfile -> ShowS
Prelude.Show, (forall x. NetworkProfile -> Rep NetworkProfile x)
-> (forall x. Rep NetworkProfile x -> NetworkProfile)
-> Generic NetworkProfile
forall x. Rep NetworkProfile x -> NetworkProfile
forall x. NetworkProfile -> Rep NetworkProfile x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NetworkProfile x -> NetworkProfile
$cfrom :: forall x. NetworkProfile -> Rep NetworkProfile x
Prelude.Generic)

-- |
-- Create a value of 'NetworkProfile' 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:
--
-- 'networkProfileName', 'networkProfile_networkProfileName' - The name of the network profile associated with a device.
--
-- 'ssid', 'networkProfile_ssid' - The SSID of the Wi-Fi network.
--
-- 'networkProfileArn', 'networkProfile_networkProfileArn' - The ARN of the network profile associated with a device.
--
-- 'securityType', 'networkProfile_securityType' - The security type of the Wi-Fi network. This can be WPA2_ENTERPRISE,
-- WPA2_PSK, WPA_PSK, WEP, or OPEN.
--
-- 'currentPassword', 'networkProfile_currentPassword' - The current password of the Wi-Fi network.
--
-- 'nextPassword', 'networkProfile_nextPassword' - The next, or subsequent, password of the Wi-Fi network. This password is
-- asynchronously transmitted to the device and is used when the password
-- of the network changes to NextPassword.
--
-- 'eapMethod', 'networkProfile_eapMethod' - The authentication standard that is used in the EAP framework.
-- Currently, EAP_TLS is supported.
--
-- 'description', 'networkProfile_description' - Detailed information about a device\'s network profile.
--
-- 'trustAnchors', 'networkProfile_trustAnchors' - The root certificates of your authentication server, which is installed
-- on your devices and used to trust your authentication server during EAP
-- negotiation.
--
-- 'certificateAuthorityArn', 'networkProfile_certificateAuthorityArn' - The ARN of the Private Certificate Authority (PCA) created in AWS
-- Certificate Manager (ACM). This is used to issue certificates to the
-- devices.
newNetworkProfile ::
  NetworkProfile
newNetworkProfile :: NetworkProfile
newNetworkProfile =
  NetworkProfile' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe NetworkSecurityType
-> Maybe (Sensitive Text)
-> Maybe (Sensitive Text)
-> Maybe NetworkEapMethod
-> Maybe Text
-> Maybe (NonEmpty Text)
-> Maybe Text
-> NetworkProfile
NetworkProfile'
    { $sel:networkProfileName:NetworkProfile' :: Maybe Text
networkProfileName =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ssid:NetworkProfile' :: Maybe Text
ssid = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:networkProfileArn:NetworkProfile' :: Maybe Text
networkProfileArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:securityType:NetworkProfile' :: Maybe NetworkSecurityType
securityType = Maybe NetworkSecurityType
forall a. Maybe a
Prelude.Nothing,
      $sel:currentPassword:NetworkProfile' :: Maybe (Sensitive Text)
currentPassword = Maybe (Sensitive Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:nextPassword:NetworkProfile' :: Maybe (Sensitive Text)
nextPassword = Maybe (Sensitive Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:eapMethod:NetworkProfile' :: Maybe NetworkEapMethod
eapMethod = Maybe NetworkEapMethod
forall a. Maybe a
Prelude.Nothing,
      $sel:description:NetworkProfile' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:trustAnchors:NetworkProfile' :: Maybe (NonEmpty Text)
trustAnchors = Maybe (NonEmpty Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:certificateAuthorityArn:NetworkProfile' :: Maybe Text
certificateAuthorityArn = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The name of the network profile associated with a device.
networkProfile_networkProfileName :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_networkProfileName :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_networkProfileName = (NetworkProfile -> Maybe Text)
-> (NetworkProfile -> Maybe Text -> NetworkProfile)
-> Lens NetworkProfile NetworkProfile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Text
networkProfileName :: Maybe Text
$sel:networkProfileName:NetworkProfile' :: NetworkProfile -> Maybe Text
networkProfileName} -> Maybe Text
networkProfileName) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Text
a -> NetworkProfile
s {$sel:networkProfileName:NetworkProfile' :: Maybe Text
networkProfileName = Maybe Text
a} :: NetworkProfile)

-- | The SSID of the Wi-Fi network.
networkProfile_ssid :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_ssid :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_ssid = (NetworkProfile -> Maybe Text)
-> (NetworkProfile -> Maybe Text -> NetworkProfile)
-> Lens NetworkProfile NetworkProfile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Text
ssid :: Maybe Text
$sel:ssid:NetworkProfile' :: NetworkProfile -> Maybe Text
ssid} -> Maybe Text
ssid) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Text
a -> NetworkProfile
s {$sel:ssid:NetworkProfile' :: Maybe Text
ssid = Maybe Text
a} :: NetworkProfile)

-- | The ARN of the network profile associated with a device.
networkProfile_networkProfileArn :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_networkProfileArn :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_networkProfileArn = (NetworkProfile -> Maybe Text)
-> (NetworkProfile -> Maybe Text -> NetworkProfile)
-> Lens NetworkProfile NetworkProfile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Text
networkProfileArn :: Maybe Text
$sel:networkProfileArn:NetworkProfile' :: NetworkProfile -> Maybe Text
networkProfileArn} -> Maybe Text
networkProfileArn) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Text
a -> NetworkProfile
s {$sel:networkProfileArn:NetworkProfile' :: Maybe Text
networkProfileArn = Maybe Text
a} :: NetworkProfile)

-- | The security type of the Wi-Fi network. This can be WPA2_ENTERPRISE,
-- WPA2_PSK, WPA_PSK, WEP, or OPEN.
networkProfile_securityType :: Lens.Lens' NetworkProfile (Prelude.Maybe NetworkSecurityType)
networkProfile_securityType :: (Maybe NetworkSecurityType -> f (Maybe NetworkSecurityType))
-> NetworkProfile -> f NetworkProfile
networkProfile_securityType = (NetworkProfile -> Maybe NetworkSecurityType)
-> (NetworkProfile -> Maybe NetworkSecurityType -> NetworkProfile)
-> Lens
     NetworkProfile
     NetworkProfile
     (Maybe NetworkSecurityType)
     (Maybe NetworkSecurityType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe NetworkSecurityType
securityType :: Maybe NetworkSecurityType
$sel:securityType:NetworkProfile' :: NetworkProfile -> Maybe NetworkSecurityType
securityType} -> Maybe NetworkSecurityType
securityType) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe NetworkSecurityType
a -> NetworkProfile
s {$sel:securityType:NetworkProfile' :: Maybe NetworkSecurityType
securityType = Maybe NetworkSecurityType
a} :: NetworkProfile)

-- | The current password of the Wi-Fi network.
networkProfile_currentPassword :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_currentPassword :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_currentPassword = (NetworkProfile -> Maybe (Sensitive Text))
-> (NetworkProfile -> Maybe (Sensitive Text) -> NetworkProfile)
-> Lens
     NetworkProfile
     NetworkProfile
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe (Sensitive Text)
currentPassword :: Maybe (Sensitive Text)
$sel:currentPassword:NetworkProfile' :: NetworkProfile -> Maybe (Sensitive Text)
currentPassword} -> Maybe (Sensitive Text)
currentPassword) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe (Sensitive Text)
a -> NetworkProfile
s {$sel:currentPassword:NetworkProfile' :: Maybe (Sensitive Text)
currentPassword = Maybe (Sensitive Text)
a} :: NetworkProfile) ((Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
 -> NetworkProfile -> f NetworkProfile)
-> ((Maybe Text -> f (Maybe Text))
    -> Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
-> (Maybe Text -> f (Maybe Text))
-> NetworkProfile
-> f NetworkProfile
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso (Sensitive Text) (Sensitive Text) Text Text
-> Iso
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
     (Maybe Text)
     (Maybe Text)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso (Sensitive Text) (Sensitive Text) Text Text
forall a. Iso' (Sensitive a) a
Core._Sensitive

-- | The next, or subsequent, password of the Wi-Fi network. This password is
-- asynchronously transmitted to the device and is used when the password
-- of the network changes to NextPassword.
networkProfile_nextPassword :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_nextPassword :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_nextPassword = (NetworkProfile -> Maybe (Sensitive Text))
-> (NetworkProfile -> Maybe (Sensitive Text) -> NetworkProfile)
-> Lens
     NetworkProfile
     NetworkProfile
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe (Sensitive Text)
nextPassword :: Maybe (Sensitive Text)
$sel:nextPassword:NetworkProfile' :: NetworkProfile -> Maybe (Sensitive Text)
nextPassword} -> Maybe (Sensitive Text)
nextPassword) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe (Sensitive Text)
a -> NetworkProfile
s {$sel:nextPassword:NetworkProfile' :: Maybe (Sensitive Text)
nextPassword = Maybe (Sensitive Text)
a} :: NetworkProfile) ((Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
 -> NetworkProfile -> f NetworkProfile)
-> ((Maybe Text -> f (Maybe Text))
    -> Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
-> (Maybe Text -> f (Maybe Text))
-> NetworkProfile
-> f NetworkProfile
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso (Sensitive Text) (Sensitive Text) Text Text
-> Iso
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
     (Maybe Text)
     (Maybe Text)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso (Sensitive Text) (Sensitive Text) Text Text
forall a. Iso' (Sensitive a) a
Core._Sensitive

-- | The authentication standard that is used in the EAP framework.
-- Currently, EAP_TLS is supported.
networkProfile_eapMethod :: Lens.Lens' NetworkProfile (Prelude.Maybe NetworkEapMethod)
networkProfile_eapMethod :: (Maybe NetworkEapMethod -> f (Maybe NetworkEapMethod))
-> NetworkProfile -> f NetworkProfile
networkProfile_eapMethod = (NetworkProfile -> Maybe NetworkEapMethod)
-> (NetworkProfile -> Maybe NetworkEapMethod -> NetworkProfile)
-> Lens
     NetworkProfile
     NetworkProfile
     (Maybe NetworkEapMethod)
     (Maybe NetworkEapMethod)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe NetworkEapMethod
eapMethod :: Maybe NetworkEapMethod
$sel:eapMethod:NetworkProfile' :: NetworkProfile -> Maybe NetworkEapMethod
eapMethod} -> Maybe NetworkEapMethod
eapMethod) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe NetworkEapMethod
a -> NetworkProfile
s {$sel:eapMethod:NetworkProfile' :: Maybe NetworkEapMethod
eapMethod = Maybe NetworkEapMethod
a} :: NetworkProfile)

-- | Detailed information about a device\'s network profile.
networkProfile_description :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_description :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_description = (NetworkProfile -> Maybe Text)
-> (NetworkProfile -> Maybe Text -> NetworkProfile)
-> Lens NetworkProfile NetworkProfile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Text
description :: Maybe Text
$sel:description:NetworkProfile' :: NetworkProfile -> Maybe Text
description} -> Maybe Text
description) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Text
a -> NetworkProfile
s {$sel:description:NetworkProfile' :: Maybe Text
description = Maybe Text
a} :: NetworkProfile)

-- | The root certificates of your authentication server, which is installed
-- on your devices and used to trust your authentication server during EAP
-- negotiation.
networkProfile_trustAnchors :: Lens.Lens' NetworkProfile (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
networkProfile_trustAnchors :: (Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
-> NetworkProfile -> f NetworkProfile
networkProfile_trustAnchors = (NetworkProfile -> Maybe (NonEmpty Text))
-> (NetworkProfile -> Maybe (NonEmpty Text) -> NetworkProfile)
-> Lens
     NetworkProfile
     NetworkProfile
     (Maybe (NonEmpty Text))
     (Maybe (NonEmpty Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe (NonEmpty Text)
trustAnchors :: Maybe (NonEmpty Text)
$sel:trustAnchors:NetworkProfile' :: NetworkProfile -> Maybe (NonEmpty Text)
trustAnchors} -> Maybe (NonEmpty Text)
trustAnchors) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe (NonEmpty Text)
a -> NetworkProfile
s {$sel:trustAnchors:NetworkProfile' :: Maybe (NonEmpty Text)
trustAnchors = Maybe (NonEmpty Text)
a} :: NetworkProfile) ((Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
 -> NetworkProfile -> f NetworkProfile)
-> ((Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
    -> Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
-> (Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
-> NetworkProfile
-> f NetworkProfile
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty Text) (NonEmpty Text) (NonEmpty Text) (NonEmpty Text)
-> Iso
     (Maybe (NonEmpty Text))
     (Maybe (NonEmpty Text))
     (Maybe (NonEmpty Text))
     (Maybe (NonEmpty Text))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (NonEmpty Text) (NonEmpty Text) (NonEmpty Text) (NonEmpty Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ARN of the Private Certificate Authority (PCA) created in AWS
-- Certificate Manager (ACM). This is used to issue certificates to the
-- devices.
networkProfile_certificateAuthorityArn :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_certificateAuthorityArn :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_certificateAuthorityArn = (NetworkProfile -> Maybe Text)
-> (NetworkProfile -> Maybe Text -> NetworkProfile)
-> Lens NetworkProfile NetworkProfile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Text
certificateAuthorityArn :: Maybe Text
$sel:certificateAuthorityArn:NetworkProfile' :: NetworkProfile -> Maybe Text
certificateAuthorityArn} -> Maybe Text
certificateAuthorityArn) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Text
a -> NetworkProfile
s {$sel:certificateAuthorityArn:NetworkProfile' :: Maybe Text
certificateAuthorityArn = Maybe Text
a} :: NetworkProfile)

instance Core.FromJSON NetworkProfile where
  parseJSON :: Value -> Parser NetworkProfile
parseJSON =
    String
-> (Object -> Parser NetworkProfile)
-> Value
-> Parser NetworkProfile
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"NetworkProfile"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe NetworkSecurityType
-> Maybe (Sensitive Text)
-> Maybe (Sensitive Text)
-> Maybe NetworkEapMethod
-> Maybe Text
-> Maybe (NonEmpty Text)
-> Maybe Text
-> NetworkProfile
NetworkProfile'
            (Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe NetworkSecurityType
 -> Maybe (Sensitive Text)
 -> Maybe (Sensitive Text)
 -> Maybe NetworkEapMethod
 -> Maybe Text
 -> Maybe (NonEmpty Text)
 -> Maybe Text
 -> NetworkProfile)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe NetworkSecurityType
      -> Maybe (Sensitive Text)
      -> Maybe (Sensitive Text)
      -> Maybe NetworkEapMethod
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> NetworkProfile)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkProfileName")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe NetworkSecurityType
   -> Maybe (Sensitive Text)
   -> Maybe (Sensitive Text)
   -> Maybe NetworkEapMethod
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> NetworkProfile)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe NetworkSecurityType
      -> Maybe (Sensitive Text)
      -> Maybe (Sensitive Text)
      -> Maybe NetworkEapMethod
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Ssid")
            Parser
  (Maybe Text
   -> Maybe NetworkSecurityType
   -> Maybe (Sensitive Text)
   -> Maybe (Sensitive Text)
   -> Maybe NetworkEapMethod
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> NetworkProfile)
-> Parser (Maybe Text)
-> Parser
     (Maybe NetworkSecurityType
      -> Maybe (Sensitive Text)
      -> Maybe (Sensitive Text)
      -> Maybe NetworkEapMethod
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkProfileArn")
            Parser
  (Maybe NetworkSecurityType
   -> Maybe (Sensitive Text)
   -> Maybe (Sensitive Text)
   -> Maybe NetworkEapMethod
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> NetworkProfile)
-> Parser (Maybe NetworkSecurityType)
-> Parser
     (Maybe (Sensitive Text)
      -> Maybe (Sensitive Text)
      -> Maybe NetworkEapMethod
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NetworkSecurityType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SecurityType")
            Parser
  (Maybe (Sensitive Text)
   -> Maybe (Sensitive Text)
   -> Maybe NetworkEapMethod
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> NetworkProfile)
-> Parser (Maybe (Sensitive Text))
-> Parser
     (Maybe (Sensitive Text)
      -> Maybe NetworkEapMethod
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Sensitive Text))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CurrentPassword")
            Parser
  (Maybe (Sensitive Text)
   -> Maybe NetworkEapMethod
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> NetworkProfile)
-> Parser (Maybe (Sensitive Text))
-> Parser
     (Maybe NetworkEapMethod
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Sensitive Text))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NextPassword")
            Parser
  (Maybe NetworkEapMethod
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> NetworkProfile)
-> Parser (Maybe NetworkEapMethod)
-> Parser
     (Maybe Text
      -> Maybe (NonEmpty Text) -> Maybe Text -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NetworkEapMethod)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EapMethod")
            Parser
  (Maybe Text
   -> Maybe (NonEmpty Text) -> Maybe Text -> NetworkProfile)
-> Parser (Maybe Text)
-> Parser (Maybe (NonEmpty Text) -> Maybe Text -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Description")
            Parser (Maybe (NonEmpty Text) -> Maybe Text -> NetworkProfile)
-> Parser (Maybe (NonEmpty Text))
-> Parser (Maybe Text -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (NonEmpty Text))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrustAnchors")
            Parser (Maybe Text -> NetworkProfile)
-> Parser (Maybe Text) -> Parser NetworkProfile
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CertificateAuthorityArn")
      )

instance Prelude.Hashable NetworkProfile

instance Prelude.NFData NetworkProfile