{-# 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.EC2.Types.VerifiedAccessTrustProvider
-- 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.EC2.Types.VerifiedAccessTrustProvider where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.DeviceOptions
import Amazonka.EC2.Types.DeviceTrustProviderType
import Amazonka.EC2.Types.OidcOptions
import Amazonka.EC2.Types.Tag
import Amazonka.EC2.Types.TrustProviderType
import Amazonka.EC2.Types.UserTrustProviderType
import qualified Amazonka.Prelude as Prelude

-- | Describes a Verified Access trust provider.
--
-- /See:/ 'newVerifiedAccessTrustProvider' smart constructor.
data VerifiedAccessTrustProvider = VerifiedAccessTrustProvider'
  { -- | The creation time.
    VerifiedAccessTrustProvider -> Maybe Text
creationTime :: Prelude.Maybe Prelude.Text,
    -- | A description for the Amazon Web Services Verified Access trust
    -- provider.
    VerifiedAccessTrustProvider -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The options for device-identity type trust provider.
    VerifiedAccessTrustProvider -> Maybe DeviceOptions
deviceOptions :: Prelude.Maybe DeviceOptions,
    -- | The type of device-based trust provider.
    VerifiedAccessTrustProvider -> Maybe DeviceTrustProviderType
deviceTrustProviderType :: Prelude.Maybe DeviceTrustProviderType,
    -- | The last updated time.
    VerifiedAccessTrustProvider -> Maybe Text
lastUpdatedTime :: Prelude.Maybe Prelude.Text,
    -- | The OpenID Connect details for an @oidc@-type, user-identity based trust
    -- provider.
    VerifiedAccessTrustProvider -> Maybe OidcOptions
oidcOptions :: Prelude.Maybe OidcOptions,
    -- | The identifier to be used when working with policy rules.
    VerifiedAccessTrustProvider -> Maybe Text
policyReferenceName :: Prelude.Maybe Prelude.Text,
    -- | The tags.
    VerifiedAccessTrustProvider -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The type of Verified Access trust provider.
    VerifiedAccessTrustProvider -> Maybe TrustProviderType
trustProviderType :: Prelude.Maybe TrustProviderType,
    -- | The type of user-based trust provider.
    VerifiedAccessTrustProvider -> Maybe UserTrustProviderType
userTrustProviderType :: Prelude.Maybe UserTrustProviderType,
    -- | The ID of the Amazon Web Services Verified Access trust provider.
    VerifiedAccessTrustProvider -> Maybe Text
verifiedAccessTrustProviderId :: Prelude.Maybe Prelude.Text
  }
  deriving (VerifiedAccessTrustProvider -> VerifiedAccessTrustProvider -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VerifiedAccessTrustProvider -> VerifiedAccessTrustProvider -> Bool
$c/= :: VerifiedAccessTrustProvider -> VerifiedAccessTrustProvider -> Bool
== :: VerifiedAccessTrustProvider -> VerifiedAccessTrustProvider -> Bool
$c== :: VerifiedAccessTrustProvider -> VerifiedAccessTrustProvider -> Bool
Prelude.Eq, ReadPrec [VerifiedAccessTrustProvider]
ReadPrec VerifiedAccessTrustProvider
Int -> ReadS VerifiedAccessTrustProvider
ReadS [VerifiedAccessTrustProvider]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [VerifiedAccessTrustProvider]
$creadListPrec :: ReadPrec [VerifiedAccessTrustProvider]
readPrec :: ReadPrec VerifiedAccessTrustProvider
$creadPrec :: ReadPrec VerifiedAccessTrustProvider
readList :: ReadS [VerifiedAccessTrustProvider]
$creadList :: ReadS [VerifiedAccessTrustProvider]
readsPrec :: Int -> ReadS VerifiedAccessTrustProvider
$creadsPrec :: Int -> ReadS VerifiedAccessTrustProvider
Prelude.Read, Int -> VerifiedAccessTrustProvider -> ShowS
[VerifiedAccessTrustProvider] -> ShowS
VerifiedAccessTrustProvider -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VerifiedAccessTrustProvider] -> ShowS
$cshowList :: [VerifiedAccessTrustProvider] -> ShowS
show :: VerifiedAccessTrustProvider -> String
$cshow :: VerifiedAccessTrustProvider -> String
showsPrec :: Int -> VerifiedAccessTrustProvider -> ShowS
$cshowsPrec :: Int -> VerifiedAccessTrustProvider -> ShowS
Prelude.Show, forall x.
Rep VerifiedAccessTrustProvider x -> VerifiedAccessTrustProvider
forall x.
VerifiedAccessTrustProvider -> Rep VerifiedAccessTrustProvider x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep VerifiedAccessTrustProvider x -> VerifiedAccessTrustProvider
$cfrom :: forall x.
VerifiedAccessTrustProvider -> Rep VerifiedAccessTrustProvider x
Prelude.Generic)

-- |
-- Create a value of 'VerifiedAccessTrustProvider' 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:
--
-- 'creationTime', 'verifiedAccessTrustProvider_creationTime' - The creation time.
--
-- 'description', 'verifiedAccessTrustProvider_description' - A description for the Amazon Web Services Verified Access trust
-- provider.
--
-- 'deviceOptions', 'verifiedAccessTrustProvider_deviceOptions' - The options for device-identity type trust provider.
--
-- 'deviceTrustProviderType', 'verifiedAccessTrustProvider_deviceTrustProviderType' - The type of device-based trust provider.
--
-- 'lastUpdatedTime', 'verifiedAccessTrustProvider_lastUpdatedTime' - The last updated time.
--
-- 'oidcOptions', 'verifiedAccessTrustProvider_oidcOptions' - The OpenID Connect details for an @oidc@-type, user-identity based trust
-- provider.
--
-- 'policyReferenceName', 'verifiedAccessTrustProvider_policyReferenceName' - The identifier to be used when working with policy rules.
--
-- 'tags', 'verifiedAccessTrustProvider_tags' - The tags.
--
-- 'trustProviderType', 'verifiedAccessTrustProvider_trustProviderType' - The type of Verified Access trust provider.
--
-- 'userTrustProviderType', 'verifiedAccessTrustProvider_userTrustProviderType' - The type of user-based trust provider.
--
-- 'verifiedAccessTrustProviderId', 'verifiedAccessTrustProvider_verifiedAccessTrustProviderId' - The ID of the Amazon Web Services Verified Access trust provider.
newVerifiedAccessTrustProvider ::
  VerifiedAccessTrustProvider
newVerifiedAccessTrustProvider :: VerifiedAccessTrustProvider
newVerifiedAccessTrustProvider =
  VerifiedAccessTrustProvider'
    { $sel:creationTime:VerifiedAccessTrustProvider' :: Maybe Text
creationTime =
        forall a. Maybe a
Prelude.Nothing,
      $sel:description:VerifiedAccessTrustProvider' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceOptions:VerifiedAccessTrustProvider' :: Maybe DeviceOptions
deviceOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceTrustProviderType:VerifiedAccessTrustProvider' :: Maybe DeviceTrustProviderType
deviceTrustProviderType = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedTime:VerifiedAccessTrustProvider' :: Maybe Text
lastUpdatedTime = forall a. Maybe a
Prelude.Nothing,
      $sel:oidcOptions:VerifiedAccessTrustProvider' :: Maybe OidcOptions
oidcOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:policyReferenceName:VerifiedAccessTrustProvider' :: Maybe Text
policyReferenceName = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:VerifiedAccessTrustProvider' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:trustProviderType:VerifiedAccessTrustProvider' :: Maybe TrustProviderType
trustProviderType = forall a. Maybe a
Prelude.Nothing,
      $sel:userTrustProviderType:VerifiedAccessTrustProvider' :: Maybe UserTrustProviderType
userTrustProviderType = forall a. Maybe a
Prelude.Nothing,
      $sel:verifiedAccessTrustProviderId:VerifiedAccessTrustProvider' :: Maybe Text
verifiedAccessTrustProviderId =
        forall a. Maybe a
Prelude.Nothing
    }

-- | The creation time.
verifiedAccessTrustProvider_creationTime :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe Prelude.Text)
verifiedAccessTrustProvider_creationTime :: Lens' VerifiedAccessTrustProvider (Maybe Text)
verifiedAccessTrustProvider_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe Text
creationTime :: Maybe Text
$sel:creationTime:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
creationTime} -> Maybe Text
creationTime) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe Text
a -> VerifiedAccessTrustProvider
s {$sel:creationTime:VerifiedAccessTrustProvider' :: Maybe Text
creationTime = Maybe Text
a} :: VerifiedAccessTrustProvider)

-- | A description for the Amazon Web Services Verified Access trust
-- provider.
verifiedAccessTrustProvider_description :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe Prelude.Text)
verifiedAccessTrustProvider_description :: Lens' VerifiedAccessTrustProvider (Maybe Text)
verifiedAccessTrustProvider_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe Text
description :: Maybe Text
$sel:description:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
description} -> Maybe Text
description) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe Text
a -> VerifiedAccessTrustProvider
s {$sel:description:VerifiedAccessTrustProvider' :: Maybe Text
description = Maybe Text
a} :: VerifiedAccessTrustProvider)

-- | The options for device-identity type trust provider.
verifiedAccessTrustProvider_deviceOptions :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe DeviceOptions)
verifiedAccessTrustProvider_deviceOptions :: Lens' VerifiedAccessTrustProvider (Maybe DeviceOptions)
verifiedAccessTrustProvider_deviceOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe DeviceOptions
deviceOptions :: Maybe DeviceOptions
$sel:deviceOptions:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe DeviceOptions
deviceOptions} -> Maybe DeviceOptions
deviceOptions) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe DeviceOptions
a -> VerifiedAccessTrustProvider
s {$sel:deviceOptions:VerifiedAccessTrustProvider' :: Maybe DeviceOptions
deviceOptions = Maybe DeviceOptions
a} :: VerifiedAccessTrustProvider)

-- | The type of device-based trust provider.
verifiedAccessTrustProvider_deviceTrustProviderType :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe DeviceTrustProviderType)
verifiedAccessTrustProvider_deviceTrustProviderType :: Lens' VerifiedAccessTrustProvider (Maybe DeviceTrustProviderType)
verifiedAccessTrustProvider_deviceTrustProviderType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe DeviceTrustProviderType
deviceTrustProviderType :: Maybe DeviceTrustProviderType
$sel:deviceTrustProviderType:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe DeviceTrustProviderType
deviceTrustProviderType} -> Maybe DeviceTrustProviderType
deviceTrustProviderType) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe DeviceTrustProviderType
a -> VerifiedAccessTrustProvider
s {$sel:deviceTrustProviderType:VerifiedAccessTrustProvider' :: Maybe DeviceTrustProviderType
deviceTrustProviderType = Maybe DeviceTrustProviderType
a} :: VerifiedAccessTrustProvider)

-- | The last updated time.
verifiedAccessTrustProvider_lastUpdatedTime :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe Prelude.Text)
verifiedAccessTrustProvider_lastUpdatedTime :: Lens' VerifiedAccessTrustProvider (Maybe Text)
verifiedAccessTrustProvider_lastUpdatedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe Text
lastUpdatedTime :: Maybe Text
$sel:lastUpdatedTime:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
lastUpdatedTime} -> Maybe Text
lastUpdatedTime) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe Text
a -> VerifiedAccessTrustProvider
s {$sel:lastUpdatedTime:VerifiedAccessTrustProvider' :: Maybe Text
lastUpdatedTime = Maybe Text
a} :: VerifiedAccessTrustProvider)

-- | The OpenID Connect details for an @oidc@-type, user-identity based trust
-- provider.
verifiedAccessTrustProvider_oidcOptions :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe OidcOptions)
verifiedAccessTrustProvider_oidcOptions :: Lens' VerifiedAccessTrustProvider (Maybe OidcOptions)
verifiedAccessTrustProvider_oidcOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe OidcOptions
oidcOptions :: Maybe OidcOptions
$sel:oidcOptions:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe OidcOptions
oidcOptions} -> Maybe OidcOptions
oidcOptions) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe OidcOptions
a -> VerifiedAccessTrustProvider
s {$sel:oidcOptions:VerifiedAccessTrustProvider' :: Maybe OidcOptions
oidcOptions = Maybe OidcOptions
a} :: VerifiedAccessTrustProvider)

-- | The identifier to be used when working with policy rules.
verifiedAccessTrustProvider_policyReferenceName :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe Prelude.Text)
verifiedAccessTrustProvider_policyReferenceName :: Lens' VerifiedAccessTrustProvider (Maybe Text)
verifiedAccessTrustProvider_policyReferenceName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe Text
policyReferenceName :: Maybe Text
$sel:policyReferenceName:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
policyReferenceName} -> Maybe Text
policyReferenceName) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe Text
a -> VerifiedAccessTrustProvider
s {$sel:policyReferenceName:VerifiedAccessTrustProvider' :: Maybe Text
policyReferenceName = Maybe Text
a} :: VerifiedAccessTrustProvider)

-- | The tags.
verifiedAccessTrustProvider_tags :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe [Tag])
verifiedAccessTrustProvider_tags :: Lens' VerifiedAccessTrustProvider (Maybe [Tag])
verifiedAccessTrustProvider_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe [Tag]
a -> VerifiedAccessTrustProvider
s {$sel:tags:VerifiedAccessTrustProvider' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: VerifiedAccessTrustProvider) 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 type of Verified Access trust provider.
verifiedAccessTrustProvider_trustProviderType :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe TrustProviderType)
verifiedAccessTrustProvider_trustProviderType :: Lens' VerifiedAccessTrustProvider (Maybe TrustProviderType)
verifiedAccessTrustProvider_trustProviderType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe TrustProviderType
trustProviderType :: Maybe TrustProviderType
$sel:trustProviderType:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe TrustProviderType
trustProviderType} -> Maybe TrustProviderType
trustProviderType) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe TrustProviderType
a -> VerifiedAccessTrustProvider
s {$sel:trustProviderType:VerifiedAccessTrustProvider' :: Maybe TrustProviderType
trustProviderType = Maybe TrustProviderType
a} :: VerifiedAccessTrustProvider)

-- | The type of user-based trust provider.
verifiedAccessTrustProvider_userTrustProviderType :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe UserTrustProviderType)
verifiedAccessTrustProvider_userTrustProviderType :: Lens' VerifiedAccessTrustProvider (Maybe UserTrustProviderType)
verifiedAccessTrustProvider_userTrustProviderType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe UserTrustProviderType
userTrustProviderType :: Maybe UserTrustProviderType
$sel:userTrustProviderType:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe UserTrustProviderType
userTrustProviderType} -> Maybe UserTrustProviderType
userTrustProviderType) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe UserTrustProviderType
a -> VerifiedAccessTrustProvider
s {$sel:userTrustProviderType:VerifiedAccessTrustProvider' :: Maybe UserTrustProviderType
userTrustProviderType = Maybe UserTrustProviderType
a} :: VerifiedAccessTrustProvider)

-- | The ID of the Amazon Web Services Verified Access trust provider.
verifiedAccessTrustProvider_verifiedAccessTrustProviderId :: Lens.Lens' VerifiedAccessTrustProvider (Prelude.Maybe Prelude.Text)
verifiedAccessTrustProvider_verifiedAccessTrustProviderId :: Lens' VerifiedAccessTrustProvider (Maybe Text)
verifiedAccessTrustProvider_verifiedAccessTrustProviderId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VerifiedAccessTrustProvider' {Maybe Text
verifiedAccessTrustProviderId :: Maybe Text
$sel:verifiedAccessTrustProviderId:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
verifiedAccessTrustProviderId} -> Maybe Text
verifiedAccessTrustProviderId) (\s :: VerifiedAccessTrustProvider
s@VerifiedAccessTrustProvider' {} Maybe Text
a -> VerifiedAccessTrustProvider
s {$sel:verifiedAccessTrustProviderId:VerifiedAccessTrustProvider' :: Maybe Text
verifiedAccessTrustProviderId = Maybe Text
a} :: VerifiedAccessTrustProvider)

instance Data.FromXML VerifiedAccessTrustProvider where
  parseXML :: [Node] -> Either String VerifiedAccessTrustProvider
parseXML [Node]
x =
    Maybe Text
-> Maybe Text
-> Maybe DeviceOptions
-> Maybe DeviceTrustProviderType
-> Maybe Text
-> Maybe OidcOptions
-> Maybe Text
-> Maybe [Tag]
-> Maybe TrustProviderType
-> Maybe UserTrustProviderType
-> Maybe Text
-> VerifiedAccessTrustProvider
VerifiedAccessTrustProvider'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"creationTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"description")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"deviceOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"deviceTrustProviderType")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"lastUpdatedTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"oidcOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"policyReferenceName")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"tagSet"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"trustProviderType")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"userTrustProviderType")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"verifiedAccessTrustProviderId")

instance Prelude.Hashable VerifiedAccessTrustProvider where
  hashWithSalt :: Int -> VerifiedAccessTrustProvider -> Int
hashWithSalt Int
_salt VerifiedAccessTrustProvider' {Maybe [Tag]
Maybe Text
Maybe DeviceOptions
Maybe DeviceTrustProviderType
Maybe OidcOptions
Maybe TrustProviderType
Maybe UserTrustProviderType
verifiedAccessTrustProviderId :: Maybe Text
userTrustProviderType :: Maybe UserTrustProviderType
trustProviderType :: Maybe TrustProviderType
tags :: Maybe [Tag]
policyReferenceName :: Maybe Text
oidcOptions :: Maybe OidcOptions
lastUpdatedTime :: Maybe Text
deviceTrustProviderType :: Maybe DeviceTrustProviderType
deviceOptions :: Maybe DeviceOptions
description :: Maybe Text
creationTime :: Maybe Text
$sel:verifiedAccessTrustProviderId:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
$sel:userTrustProviderType:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe UserTrustProviderType
$sel:trustProviderType:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe TrustProviderType
$sel:tags:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe [Tag]
$sel:policyReferenceName:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
$sel:oidcOptions:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe OidcOptions
$sel:lastUpdatedTime:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
$sel:deviceTrustProviderType:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe DeviceTrustProviderType
$sel:deviceOptions:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe DeviceOptions
$sel:description:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
$sel:creationTime:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
creationTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeviceOptions
deviceOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeviceTrustProviderType
deviceTrustProviderType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastUpdatedTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OidcOptions
oidcOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
policyReferenceName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TrustProviderType
trustProviderType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UserTrustProviderType
userTrustProviderType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
verifiedAccessTrustProviderId

instance Prelude.NFData VerifiedAccessTrustProvider where
  rnf :: VerifiedAccessTrustProvider -> ()
rnf VerifiedAccessTrustProvider' {Maybe [Tag]
Maybe Text
Maybe DeviceOptions
Maybe DeviceTrustProviderType
Maybe OidcOptions
Maybe TrustProviderType
Maybe UserTrustProviderType
verifiedAccessTrustProviderId :: Maybe Text
userTrustProviderType :: Maybe UserTrustProviderType
trustProviderType :: Maybe TrustProviderType
tags :: Maybe [Tag]
policyReferenceName :: Maybe Text
oidcOptions :: Maybe OidcOptions
lastUpdatedTime :: Maybe Text
deviceTrustProviderType :: Maybe DeviceTrustProviderType
deviceOptions :: Maybe DeviceOptions
description :: Maybe Text
creationTime :: Maybe Text
$sel:verifiedAccessTrustProviderId:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
$sel:userTrustProviderType:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe UserTrustProviderType
$sel:trustProviderType:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe TrustProviderType
$sel:tags:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe [Tag]
$sel:policyReferenceName:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
$sel:oidcOptions:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe OidcOptions
$sel:lastUpdatedTime:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
$sel:deviceTrustProviderType:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe DeviceTrustProviderType
$sel:deviceOptions:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe DeviceOptions
$sel:description:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
$sel:creationTime:VerifiedAccessTrustProvider' :: VerifiedAccessTrustProvider -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeviceOptions
deviceOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeviceTrustProviderType
deviceTrustProviderType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastUpdatedTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OidcOptions
oidcOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
policyReferenceName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TrustProviderType
trustProviderType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UserTrustProviderType
userTrustProviderType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
verifiedAccessTrustProviderId