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

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

-- |
-- Module      : Amazonka.EC2.CreateVerifiedAccessTrustProvider
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- A trust provider is a third-party entity that creates, maintains, and
-- manages identity information for users and devices. When an application
-- request is made, the identity information sent by the trust provider
-- will be evaluated by Amazon Web Services Verified Access, before
-- allowing or denying the application request.
module Amazonka.EC2.CreateVerifiedAccessTrustProvider
  ( -- * Creating a Request
    CreateVerifiedAccessTrustProvider (..),
    newCreateVerifiedAccessTrustProvider,

    -- * Request Lenses
    createVerifiedAccessTrustProvider_clientToken,
    createVerifiedAccessTrustProvider_description,
    createVerifiedAccessTrustProvider_deviceOptions,
    createVerifiedAccessTrustProvider_deviceTrustProviderType,
    createVerifiedAccessTrustProvider_dryRun,
    createVerifiedAccessTrustProvider_oidcOptions,
    createVerifiedAccessTrustProvider_tagSpecifications,
    createVerifiedAccessTrustProvider_userTrustProviderType,
    createVerifiedAccessTrustProvider_trustProviderType,
    createVerifiedAccessTrustProvider_policyReferenceName,

    -- * Destructuring the Response
    CreateVerifiedAccessTrustProviderResponse (..),
    newCreateVerifiedAccessTrustProviderResponse,

    -- * Response Lenses
    createVerifiedAccessTrustProviderResponse_verifiedAccessTrustProvider,
    createVerifiedAccessTrustProviderResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateVerifiedAccessTrustProvider' smart constructor.
data CreateVerifiedAccessTrustProvider = CreateVerifiedAccessTrustProvider'
  { -- | A unique, case-sensitive token that you provide to ensure idempotency of
    -- your modification request. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
    CreateVerifiedAccessTrustProvider -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | A description for the Amazon Web Services Verified Access trust
    -- provider.
    CreateVerifiedAccessTrustProvider -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The options for device identity based trust providers.
    CreateVerifiedAccessTrustProvider
-> Maybe CreateVerifiedAccessTrustProviderDeviceOptions
deviceOptions :: Prelude.Maybe CreateVerifiedAccessTrustProviderDeviceOptions,
    -- | The type of device-based trust provider.
    CreateVerifiedAccessTrustProvider -> Maybe DeviceTrustProviderType
deviceTrustProviderType :: Prelude.Maybe DeviceTrustProviderType,
    -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    CreateVerifiedAccessTrustProvider -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The OpenID Connect details for an @oidc@-type, user-identity based trust
    -- provider.
    CreateVerifiedAccessTrustProvider
-> Maybe CreateVerifiedAccessTrustProviderOidcOptions
oidcOptions :: Prelude.Maybe CreateVerifiedAccessTrustProviderOidcOptions,
    -- | The tags to assign to the Amazon Web Services Verified Access trust
    -- provider.
    CreateVerifiedAccessTrustProvider -> Maybe [TagSpecification]
tagSpecifications :: Prelude.Maybe [TagSpecification],
    -- | The type of user-based trust provider.
    CreateVerifiedAccessTrustProvider -> Maybe UserTrustProviderType
userTrustProviderType :: Prelude.Maybe UserTrustProviderType,
    -- | The type of trust provider can be either user or device-based.
    CreateVerifiedAccessTrustProvider -> TrustProviderType
trustProviderType :: TrustProviderType,
    -- | The identifier to be used when working with policy rules.
    CreateVerifiedAccessTrustProvider -> Text
policyReferenceName :: Prelude.Text
  }
  deriving (CreateVerifiedAccessTrustProvider
-> CreateVerifiedAccessTrustProvider -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateVerifiedAccessTrustProvider
-> CreateVerifiedAccessTrustProvider -> Bool
$c/= :: CreateVerifiedAccessTrustProvider
-> CreateVerifiedAccessTrustProvider -> Bool
== :: CreateVerifiedAccessTrustProvider
-> CreateVerifiedAccessTrustProvider -> Bool
$c== :: CreateVerifiedAccessTrustProvider
-> CreateVerifiedAccessTrustProvider -> Bool
Prelude.Eq, ReadPrec [CreateVerifiedAccessTrustProvider]
ReadPrec CreateVerifiedAccessTrustProvider
Int -> ReadS CreateVerifiedAccessTrustProvider
ReadS [CreateVerifiedAccessTrustProvider]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateVerifiedAccessTrustProvider]
$creadListPrec :: ReadPrec [CreateVerifiedAccessTrustProvider]
readPrec :: ReadPrec CreateVerifiedAccessTrustProvider
$creadPrec :: ReadPrec CreateVerifiedAccessTrustProvider
readList :: ReadS [CreateVerifiedAccessTrustProvider]
$creadList :: ReadS [CreateVerifiedAccessTrustProvider]
readsPrec :: Int -> ReadS CreateVerifiedAccessTrustProvider
$creadsPrec :: Int -> ReadS CreateVerifiedAccessTrustProvider
Prelude.Read, Int -> CreateVerifiedAccessTrustProvider -> ShowS
[CreateVerifiedAccessTrustProvider] -> ShowS
CreateVerifiedAccessTrustProvider -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateVerifiedAccessTrustProvider] -> ShowS
$cshowList :: [CreateVerifiedAccessTrustProvider] -> ShowS
show :: CreateVerifiedAccessTrustProvider -> String
$cshow :: CreateVerifiedAccessTrustProvider -> String
showsPrec :: Int -> CreateVerifiedAccessTrustProvider -> ShowS
$cshowsPrec :: Int -> CreateVerifiedAccessTrustProvider -> ShowS
Prelude.Show, forall x.
Rep CreateVerifiedAccessTrustProvider x
-> CreateVerifiedAccessTrustProvider
forall x.
CreateVerifiedAccessTrustProvider
-> Rep CreateVerifiedAccessTrustProvider x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateVerifiedAccessTrustProvider x
-> CreateVerifiedAccessTrustProvider
$cfrom :: forall x.
CreateVerifiedAccessTrustProvider
-> Rep CreateVerifiedAccessTrustProvider x
Prelude.Generic)

-- |
-- Create a value of 'CreateVerifiedAccessTrustProvider' 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:
--
-- 'clientToken', 'createVerifiedAccessTrustProvider_clientToken' - A unique, case-sensitive token that you provide to ensure idempotency of
-- your modification request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
--
-- 'description', 'createVerifiedAccessTrustProvider_description' - A description for the Amazon Web Services Verified Access trust
-- provider.
--
-- 'deviceOptions', 'createVerifiedAccessTrustProvider_deviceOptions' - The options for device identity based trust providers.
--
-- 'deviceTrustProviderType', 'createVerifiedAccessTrustProvider_deviceTrustProviderType' - The type of device-based trust provider.
--
-- 'dryRun', 'createVerifiedAccessTrustProvider_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'oidcOptions', 'createVerifiedAccessTrustProvider_oidcOptions' - The OpenID Connect details for an @oidc@-type, user-identity based trust
-- provider.
--
-- 'tagSpecifications', 'createVerifiedAccessTrustProvider_tagSpecifications' - The tags to assign to the Amazon Web Services Verified Access trust
-- provider.
--
-- 'userTrustProviderType', 'createVerifiedAccessTrustProvider_userTrustProviderType' - The type of user-based trust provider.
--
-- 'trustProviderType', 'createVerifiedAccessTrustProvider_trustProviderType' - The type of trust provider can be either user or device-based.
--
-- 'policyReferenceName', 'createVerifiedAccessTrustProvider_policyReferenceName' - The identifier to be used when working with policy rules.
newCreateVerifiedAccessTrustProvider ::
  -- | 'trustProviderType'
  TrustProviderType ->
  -- | 'policyReferenceName'
  Prelude.Text ->
  CreateVerifiedAccessTrustProvider
newCreateVerifiedAccessTrustProvider :: TrustProviderType -> Text -> CreateVerifiedAccessTrustProvider
newCreateVerifiedAccessTrustProvider
  TrustProviderType
pTrustProviderType_
  Text
pPolicyReferenceName_ =
    CreateVerifiedAccessTrustProvider'
      { $sel:clientToken:CreateVerifiedAccessTrustProvider' :: Maybe Text
clientToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:description:CreateVerifiedAccessTrustProvider' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
        $sel:deviceOptions:CreateVerifiedAccessTrustProvider' :: Maybe CreateVerifiedAccessTrustProviderDeviceOptions
deviceOptions = forall a. Maybe a
Prelude.Nothing,
        $sel:deviceTrustProviderType:CreateVerifiedAccessTrustProvider' :: Maybe DeviceTrustProviderType
deviceTrustProviderType =
          forall a. Maybe a
Prelude.Nothing,
        $sel:dryRun:CreateVerifiedAccessTrustProvider' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
        $sel:oidcOptions:CreateVerifiedAccessTrustProvider' :: Maybe CreateVerifiedAccessTrustProviderOidcOptions
oidcOptions = forall a. Maybe a
Prelude.Nothing,
        $sel:tagSpecifications:CreateVerifiedAccessTrustProvider' :: Maybe [TagSpecification]
tagSpecifications = forall a. Maybe a
Prelude.Nothing,
        $sel:userTrustProviderType:CreateVerifiedAccessTrustProvider' :: Maybe UserTrustProviderType
userTrustProviderType = forall a. Maybe a
Prelude.Nothing,
        $sel:trustProviderType:CreateVerifiedAccessTrustProvider' :: TrustProviderType
trustProviderType = TrustProviderType
pTrustProviderType_,
        $sel:policyReferenceName:CreateVerifiedAccessTrustProvider' :: Text
policyReferenceName =
          Text
pPolicyReferenceName_
      }

-- | A unique, case-sensitive token that you provide to ensure idempotency of
-- your modification request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
createVerifiedAccessTrustProvider_clientToken :: Lens.Lens' CreateVerifiedAccessTrustProvider (Prelude.Maybe Prelude.Text)
createVerifiedAccessTrustProvider_clientToken :: Lens' CreateVerifiedAccessTrustProvider (Maybe Text)
createVerifiedAccessTrustProvider_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateVerifiedAccessTrustProvider' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateVerifiedAccessTrustProvider
s@CreateVerifiedAccessTrustProvider' {} Maybe Text
a -> CreateVerifiedAccessTrustProvider
s {$sel:clientToken:CreateVerifiedAccessTrustProvider' :: Maybe Text
clientToken = Maybe Text
a} :: CreateVerifiedAccessTrustProvider)

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

-- | The options for device identity based trust providers.
createVerifiedAccessTrustProvider_deviceOptions :: Lens.Lens' CreateVerifiedAccessTrustProvider (Prelude.Maybe CreateVerifiedAccessTrustProviderDeviceOptions)
createVerifiedAccessTrustProvider_deviceOptions :: Lens'
  CreateVerifiedAccessTrustProvider
  (Maybe CreateVerifiedAccessTrustProviderDeviceOptions)
createVerifiedAccessTrustProvider_deviceOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateVerifiedAccessTrustProvider' {Maybe CreateVerifiedAccessTrustProviderDeviceOptions
deviceOptions :: Maybe CreateVerifiedAccessTrustProviderDeviceOptions
$sel:deviceOptions:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider
-> Maybe CreateVerifiedAccessTrustProviderDeviceOptions
deviceOptions} -> Maybe CreateVerifiedAccessTrustProviderDeviceOptions
deviceOptions) (\s :: CreateVerifiedAccessTrustProvider
s@CreateVerifiedAccessTrustProvider' {} Maybe CreateVerifiedAccessTrustProviderDeviceOptions
a -> CreateVerifiedAccessTrustProvider
s {$sel:deviceOptions:CreateVerifiedAccessTrustProvider' :: Maybe CreateVerifiedAccessTrustProviderDeviceOptions
deviceOptions = Maybe CreateVerifiedAccessTrustProviderDeviceOptions
a} :: CreateVerifiedAccessTrustProvider)

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

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
createVerifiedAccessTrustProvider_dryRun :: Lens.Lens' CreateVerifiedAccessTrustProvider (Prelude.Maybe Prelude.Bool)
createVerifiedAccessTrustProvider_dryRun :: Lens' CreateVerifiedAccessTrustProvider (Maybe Bool)
createVerifiedAccessTrustProvider_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateVerifiedAccessTrustProvider' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: CreateVerifiedAccessTrustProvider
s@CreateVerifiedAccessTrustProvider' {} Maybe Bool
a -> CreateVerifiedAccessTrustProvider
s {$sel:dryRun:CreateVerifiedAccessTrustProvider' :: Maybe Bool
dryRun = Maybe Bool
a} :: CreateVerifiedAccessTrustProvider)

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

-- | The tags to assign to the Amazon Web Services Verified Access trust
-- provider.
createVerifiedAccessTrustProvider_tagSpecifications :: Lens.Lens' CreateVerifiedAccessTrustProvider (Prelude.Maybe [TagSpecification])
createVerifiedAccessTrustProvider_tagSpecifications :: Lens' CreateVerifiedAccessTrustProvider (Maybe [TagSpecification])
createVerifiedAccessTrustProvider_tagSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateVerifiedAccessTrustProvider' {Maybe [TagSpecification]
tagSpecifications :: Maybe [TagSpecification]
$sel:tagSpecifications:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe [TagSpecification]
tagSpecifications} -> Maybe [TagSpecification]
tagSpecifications) (\s :: CreateVerifiedAccessTrustProvider
s@CreateVerifiedAccessTrustProvider' {} Maybe [TagSpecification]
a -> CreateVerifiedAccessTrustProvider
s {$sel:tagSpecifications:CreateVerifiedAccessTrustProvider' :: Maybe [TagSpecification]
tagSpecifications = Maybe [TagSpecification]
a} :: CreateVerifiedAccessTrustProvider) 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 user-based trust provider.
createVerifiedAccessTrustProvider_userTrustProviderType :: Lens.Lens' CreateVerifiedAccessTrustProvider (Prelude.Maybe UserTrustProviderType)
createVerifiedAccessTrustProvider_userTrustProviderType :: Lens'
  CreateVerifiedAccessTrustProvider (Maybe UserTrustProviderType)
createVerifiedAccessTrustProvider_userTrustProviderType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateVerifiedAccessTrustProvider' {Maybe UserTrustProviderType
userTrustProviderType :: Maybe UserTrustProviderType
$sel:userTrustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe UserTrustProviderType
userTrustProviderType} -> Maybe UserTrustProviderType
userTrustProviderType) (\s :: CreateVerifiedAccessTrustProvider
s@CreateVerifiedAccessTrustProvider' {} Maybe UserTrustProviderType
a -> CreateVerifiedAccessTrustProvider
s {$sel:userTrustProviderType:CreateVerifiedAccessTrustProvider' :: Maybe UserTrustProviderType
userTrustProviderType = Maybe UserTrustProviderType
a} :: CreateVerifiedAccessTrustProvider)

-- | The type of trust provider can be either user or device-based.
createVerifiedAccessTrustProvider_trustProviderType :: Lens.Lens' CreateVerifiedAccessTrustProvider TrustProviderType
createVerifiedAccessTrustProvider_trustProviderType :: Lens' CreateVerifiedAccessTrustProvider TrustProviderType
createVerifiedAccessTrustProvider_trustProviderType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateVerifiedAccessTrustProvider' {TrustProviderType
trustProviderType :: TrustProviderType
$sel:trustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> TrustProviderType
trustProviderType} -> TrustProviderType
trustProviderType) (\s :: CreateVerifiedAccessTrustProvider
s@CreateVerifiedAccessTrustProvider' {} TrustProviderType
a -> CreateVerifiedAccessTrustProvider
s {$sel:trustProviderType:CreateVerifiedAccessTrustProvider' :: TrustProviderType
trustProviderType = TrustProviderType
a} :: CreateVerifiedAccessTrustProvider)

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

instance
  Core.AWSRequest
    CreateVerifiedAccessTrustProvider
  where
  type
    AWSResponse CreateVerifiedAccessTrustProvider =
      CreateVerifiedAccessTrustProviderResponse
  request :: (Service -> Service)
-> CreateVerifiedAccessTrustProvider
-> Request CreateVerifiedAccessTrustProvider
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateVerifiedAccessTrustProvider
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse CreateVerifiedAccessTrustProvider)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe VerifiedAccessTrustProvider
-> Int -> CreateVerifiedAccessTrustProviderResponse
CreateVerifiedAccessTrustProviderResponse'
            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
"verifiedAccessTrustProvider")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    CreateVerifiedAccessTrustProvider
  where
  hashWithSalt :: Int -> CreateVerifiedAccessTrustProvider -> Int
hashWithSalt
    Int
_salt
    CreateVerifiedAccessTrustProvider' {Maybe Bool
Maybe [TagSpecification]
Maybe Text
Maybe CreateVerifiedAccessTrustProviderDeviceOptions
Maybe CreateVerifiedAccessTrustProviderOidcOptions
Maybe DeviceTrustProviderType
Maybe UserTrustProviderType
Text
TrustProviderType
policyReferenceName :: Text
trustProviderType :: TrustProviderType
userTrustProviderType :: Maybe UserTrustProviderType
tagSpecifications :: Maybe [TagSpecification]
oidcOptions :: Maybe CreateVerifiedAccessTrustProviderOidcOptions
dryRun :: Maybe Bool
deviceTrustProviderType :: Maybe DeviceTrustProviderType
deviceOptions :: Maybe CreateVerifiedAccessTrustProviderDeviceOptions
description :: Maybe Text
clientToken :: Maybe Text
$sel:policyReferenceName:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Text
$sel:trustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> TrustProviderType
$sel:userTrustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe UserTrustProviderType
$sel:tagSpecifications:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe [TagSpecification]
$sel:oidcOptions:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider
-> Maybe CreateVerifiedAccessTrustProviderOidcOptions
$sel:dryRun:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Bool
$sel:deviceTrustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe DeviceTrustProviderType
$sel:deviceOptions:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider
-> Maybe CreateVerifiedAccessTrustProviderDeviceOptions
$sel:description:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Text
$sel:clientToken:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CreateVerifiedAccessTrustProviderDeviceOptions
deviceOptions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeviceTrustProviderType
deviceTrustProviderType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CreateVerifiedAccessTrustProviderOidcOptions
oidcOptions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [TagSpecification]
tagSpecifications
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UserTrustProviderType
userTrustProviderType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` TrustProviderType
trustProviderType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
policyReferenceName

instance
  Prelude.NFData
    CreateVerifiedAccessTrustProvider
  where
  rnf :: CreateVerifiedAccessTrustProvider -> ()
rnf CreateVerifiedAccessTrustProvider' {Maybe Bool
Maybe [TagSpecification]
Maybe Text
Maybe CreateVerifiedAccessTrustProviderDeviceOptions
Maybe CreateVerifiedAccessTrustProviderOidcOptions
Maybe DeviceTrustProviderType
Maybe UserTrustProviderType
Text
TrustProviderType
policyReferenceName :: Text
trustProviderType :: TrustProviderType
userTrustProviderType :: Maybe UserTrustProviderType
tagSpecifications :: Maybe [TagSpecification]
oidcOptions :: Maybe CreateVerifiedAccessTrustProviderOidcOptions
dryRun :: Maybe Bool
deviceTrustProviderType :: Maybe DeviceTrustProviderType
deviceOptions :: Maybe CreateVerifiedAccessTrustProviderDeviceOptions
description :: Maybe Text
clientToken :: Maybe Text
$sel:policyReferenceName:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Text
$sel:trustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> TrustProviderType
$sel:userTrustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe UserTrustProviderType
$sel:tagSpecifications:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe [TagSpecification]
$sel:oidcOptions:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider
-> Maybe CreateVerifiedAccessTrustProviderOidcOptions
$sel:dryRun:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Bool
$sel:deviceTrustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe DeviceTrustProviderType
$sel:deviceOptions:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider
-> Maybe CreateVerifiedAccessTrustProviderDeviceOptions
$sel:description:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Text
$sel:clientToken:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      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 CreateVerifiedAccessTrustProviderDeviceOptions
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 Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CreateVerifiedAccessTrustProviderOidcOptions
oidcOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [TagSpecification]
tagSpecifications
      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 TrustProviderType
trustProviderType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
policyReferenceName

instance
  Data.ToHeaders
    CreateVerifiedAccessTrustProvider
  where
  toHeaders :: CreateVerifiedAccessTrustProvider -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

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

instance
  Data.ToQuery
    CreateVerifiedAccessTrustProvider
  where
  toQuery :: CreateVerifiedAccessTrustProvider -> QueryString
toQuery CreateVerifiedAccessTrustProvider' {Maybe Bool
Maybe [TagSpecification]
Maybe Text
Maybe CreateVerifiedAccessTrustProviderDeviceOptions
Maybe CreateVerifiedAccessTrustProviderOidcOptions
Maybe DeviceTrustProviderType
Maybe UserTrustProviderType
Text
TrustProviderType
policyReferenceName :: Text
trustProviderType :: TrustProviderType
userTrustProviderType :: Maybe UserTrustProviderType
tagSpecifications :: Maybe [TagSpecification]
oidcOptions :: Maybe CreateVerifiedAccessTrustProviderOidcOptions
dryRun :: Maybe Bool
deviceTrustProviderType :: Maybe DeviceTrustProviderType
deviceOptions :: Maybe CreateVerifiedAccessTrustProviderDeviceOptions
description :: Maybe Text
clientToken :: Maybe Text
$sel:policyReferenceName:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Text
$sel:trustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> TrustProviderType
$sel:userTrustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe UserTrustProviderType
$sel:tagSpecifications:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe [TagSpecification]
$sel:oidcOptions:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider
-> Maybe CreateVerifiedAccessTrustProviderOidcOptions
$sel:dryRun:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Bool
$sel:deviceTrustProviderType:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe DeviceTrustProviderType
$sel:deviceOptions:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider
-> Maybe CreateVerifiedAccessTrustProviderDeviceOptions
$sel:description:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Text
$sel:clientToken:CreateVerifiedAccessTrustProvider' :: CreateVerifiedAccessTrustProvider -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"CreateVerifiedAccessTrustProvider" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"ClientToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
clientToken,
        ByteString
"Description" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
description,
        ByteString
"DeviceOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe CreateVerifiedAccessTrustProviderDeviceOptions
deviceOptions,
        ByteString
"DeviceTrustProviderType"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DeviceTrustProviderType
deviceTrustProviderType,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        ByteString
"OidcOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe CreateVerifiedAccessTrustProviderOidcOptions
oidcOptions,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"TagSpecification"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [TagSpecification]
tagSpecifications
          ),
        ByteString
"UserTrustProviderType"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe UserTrustProviderType
userTrustProviderType,
        ByteString
"TrustProviderType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: TrustProviderType
trustProviderType,
        ByteString
"PolicyReferenceName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
policyReferenceName
      ]

-- | /See:/ 'newCreateVerifiedAccessTrustProviderResponse' smart constructor.
data CreateVerifiedAccessTrustProviderResponse = CreateVerifiedAccessTrustProviderResponse'
  { -- | The ID of the Amazon Web Services Verified Access trust provider.
    CreateVerifiedAccessTrustProviderResponse
-> Maybe VerifiedAccessTrustProvider
verifiedAccessTrustProvider :: Prelude.Maybe VerifiedAccessTrustProvider,
    -- | The response's http status code.
    CreateVerifiedAccessTrustProviderResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateVerifiedAccessTrustProviderResponse
-> CreateVerifiedAccessTrustProviderResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateVerifiedAccessTrustProviderResponse
-> CreateVerifiedAccessTrustProviderResponse -> Bool
$c/= :: CreateVerifiedAccessTrustProviderResponse
-> CreateVerifiedAccessTrustProviderResponse -> Bool
== :: CreateVerifiedAccessTrustProviderResponse
-> CreateVerifiedAccessTrustProviderResponse -> Bool
$c== :: CreateVerifiedAccessTrustProviderResponse
-> CreateVerifiedAccessTrustProviderResponse -> Bool
Prelude.Eq, ReadPrec [CreateVerifiedAccessTrustProviderResponse]
ReadPrec CreateVerifiedAccessTrustProviderResponse
Int -> ReadS CreateVerifiedAccessTrustProviderResponse
ReadS [CreateVerifiedAccessTrustProviderResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateVerifiedAccessTrustProviderResponse]
$creadListPrec :: ReadPrec [CreateVerifiedAccessTrustProviderResponse]
readPrec :: ReadPrec CreateVerifiedAccessTrustProviderResponse
$creadPrec :: ReadPrec CreateVerifiedAccessTrustProviderResponse
readList :: ReadS [CreateVerifiedAccessTrustProviderResponse]
$creadList :: ReadS [CreateVerifiedAccessTrustProviderResponse]
readsPrec :: Int -> ReadS CreateVerifiedAccessTrustProviderResponse
$creadsPrec :: Int -> ReadS CreateVerifiedAccessTrustProviderResponse
Prelude.Read, Int -> CreateVerifiedAccessTrustProviderResponse -> ShowS
[CreateVerifiedAccessTrustProviderResponse] -> ShowS
CreateVerifiedAccessTrustProviderResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateVerifiedAccessTrustProviderResponse] -> ShowS
$cshowList :: [CreateVerifiedAccessTrustProviderResponse] -> ShowS
show :: CreateVerifiedAccessTrustProviderResponse -> String
$cshow :: CreateVerifiedAccessTrustProviderResponse -> String
showsPrec :: Int -> CreateVerifiedAccessTrustProviderResponse -> ShowS
$cshowsPrec :: Int -> CreateVerifiedAccessTrustProviderResponse -> ShowS
Prelude.Show, forall x.
Rep CreateVerifiedAccessTrustProviderResponse x
-> CreateVerifiedAccessTrustProviderResponse
forall x.
CreateVerifiedAccessTrustProviderResponse
-> Rep CreateVerifiedAccessTrustProviderResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateVerifiedAccessTrustProviderResponse x
-> CreateVerifiedAccessTrustProviderResponse
$cfrom :: forall x.
CreateVerifiedAccessTrustProviderResponse
-> Rep CreateVerifiedAccessTrustProviderResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateVerifiedAccessTrustProviderResponse' 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:
--
-- 'verifiedAccessTrustProvider', 'createVerifiedAccessTrustProviderResponse_verifiedAccessTrustProvider' - The ID of the Amazon Web Services Verified Access trust provider.
--
-- 'httpStatus', 'createVerifiedAccessTrustProviderResponse_httpStatus' - The response's http status code.
newCreateVerifiedAccessTrustProviderResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateVerifiedAccessTrustProviderResponse
newCreateVerifiedAccessTrustProviderResponse :: Int -> CreateVerifiedAccessTrustProviderResponse
newCreateVerifiedAccessTrustProviderResponse
  Int
pHttpStatus_ =
    CreateVerifiedAccessTrustProviderResponse'
      { $sel:verifiedAccessTrustProvider:CreateVerifiedAccessTrustProviderResponse' :: Maybe VerifiedAccessTrustProvider
verifiedAccessTrustProvider =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:CreateVerifiedAccessTrustProviderResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

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

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

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