{-# 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.ModifyClientVpnEndpoint
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Modifies the specified Client VPN endpoint. Modifying the DNS server
-- resets existing client connections.
module Amazonka.EC2.ModifyClientVpnEndpoint
  ( -- * Creating a Request
    ModifyClientVpnEndpoint (..),
    newModifyClientVpnEndpoint,

    -- * Request Lenses
    modifyClientVpnEndpoint_clientConnectOptions,
    modifyClientVpnEndpoint_clientLoginBannerOptions,
    modifyClientVpnEndpoint_connectionLogOptions,
    modifyClientVpnEndpoint_description,
    modifyClientVpnEndpoint_dnsServers,
    modifyClientVpnEndpoint_dryRun,
    modifyClientVpnEndpoint_securityGroupIds,
    modifyClientVpnEndpoint_selfServicePortal,
    modifyClientVpnEndpoint_serverCertificateArn,
    modifyClientVpnEndpoint_sessionTimeoutHours,
    modifyClientVpnEndpoint_splitTunnel,
    modifyClientVpnEndpoint_vpcId,
    modifyClientVpnEndpoint_vpnPort,
    modifyClientVpnEndpoint_clientVpnEndpointId,

    -- * Destructuring the Response
    ModifyClientVpnEndpointResponse (..),
    newModifyClientVpnEndpointResponse,

    -- * Response Lenses
    modifyClientVpnEndpointResponse_return,
    modifyClientVpnEndpointResponse_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:/ 'newModifyClientVpnEndpoint' smart constructor.
data ModifyClientVpnEndpoint = ModifyClientVpnEndpoint'
  { -- | The options for managing connection authorization for new client
    -- connections.
    ModifyClientVpnEndpoint -> Maybe ClientConnectOptions
clientConnectOptions :: Prelude.Maybe ClientConnectOptions,
    -- | Options for enabling a customizable text banner that will be displayed
    -- on Amazon Web Services provided clients when a VPN session is
    -- established.
    ModifyClientVpnEndpoint -> Maybe ClientLoginBannerOptions
clientLoginBannerOptions :: Prelude.Maybe ClientLoginBannerOptions,
    -- | Information about the client connection logging options.
    --
    -- If you enable client connection logging, data about client connections
    -- is sent to a Cloudwatch Logs log stream. The following information is
    -- logged:
    --
    -- -   Client connection requests
    --
    -- -   Client connection results (successful and unsuccessful)
    --
    -- -   Reasons for unsuccessful client connection requests
    --
    -- -   Client connection termination time
    ModifyClientVpnEndpoint -> Maybe ConnectionLogOptions
connectionLogOptions :: Prelude.Maybe ConnectionLogOptions,
    -- | A brief description of the Client VPN endpoint.
    ModifyClientVpnEndpoint -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Information about the DNS servers to be used by Client VPN connections.
    -- A Client VPN endpoint can have up to two DNS servers.
    ModifyClientVpnEndpoint -> Maybe DnsServersOptionsModifyStructure
dnsServers :: Prelude.Maybe DnsServersOptionsModifyStructure,
    -- | 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@.
    ModifyClientVpnEndpoint -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The IDs of one or more security groups to apply to the target network.
    ModifyClientVpnEndpoint -> Maybe [Text]
securityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | Specify whether to enable the self-service portal for the Client VPN
    -- endpoint.
    ModifyClientVpnEndpoint -> Maybe SelfServicePortal
selfServicePortal :: Prelude.Maybe SelfServicePortal,
    -- | The ARN of the server certificate to be used. The server certificate
    -- must be provisioned in Certificate Manager (ACM).
    ModifyClientVpnEndpoint -> Maybe Text
serverCertificateArn :: Prelude.Maybe Prelude.Text,
    -- | The maximum VPN session duration time in hours.
    --
    -- Valid values: @8 | 10 | 12 | 24@
    --
    -- Default value: @24@
    ModifyClientVpnEndpoint -> Maybe Int
sessionTimeoutHours :: Prelude.Maybe Prelude.Int,
    -- | Indicates whether the VPN is split-tunnel.
    --
    -- For information about split-tunnel VPN endpoints, see
    -- <https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/split-tunnel-vpn.html Split-tunnel Client VPN endpoint>
    -- in the /Client VPN Administrator Guide/.
    ModifyClientVpnEndpoint -> Maybe Bool
splitTunnel :: Prelude.Maybe Prelude.Bool,
    -- | The ID of the VPC to associate with the Client VPN endpoint.
    ModifyClientVpnEndpoint -> Maybe Text
vpcId :: Prelude.Maybe Prelude.Text,
    -- | The port number to assign to the Client VPN endpoint for TCP and UDP
    -- traffic.
    --
    -- Valid Values: @443@ | @1194@
    --
    -- Default Value: @443@
    ModifyClientVpnEndpoint -> Maybe Int
vpnPort :: Prelude.Maybe Prelude.Int,
    -- | The ID of the Client VPN endpoint to modify.
    ModifyClientVpnEndpoint -> Text
clientVpnEndpointId :: Prelude.Text
  }
  deriving (ModifyClientVpnEndpoint -> ModifyClientVpnEndpoint -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyClientVpnEndpoint -> ModifyClientVpnEndpoint -> Bool
$c/= :: ModifyClientVpnEndpoint -> ModifyClientVpnEndpoint -> Bool
== :: ModifyClientVpnEndpoint -> ModifyClientVpnEndpoint -> Bool
$c== :: ModifyClientVpnEndpoint -> ModifyClientVpnEndpoint -> Bool
Prelude.Eq, ReadPrec [ModifyClientVpnEndpoint]
ReadPrec ModifyClientVpnEndpoint
Int -> ReadS ModifyClientVpnEndpoint
ReadS [ModifyClientVpnEndpoint]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyClientVpnEndpoint]
$creadListPrec :: ReadPrec [ModifyClientVpnEndpoint]
readPrec :: ReadPrec ModifyClientVpnEndpoint
$creadPrec :: ReadPrec ModifyClientVpnEndpoint
readList :: ReadS [ModifyClientVpnEndpoint]
$creadList :: ReadS [ModifyClientVpnEndpoint]
readsPrec :: Int -> ReadS ModifyClientVpnEndpoint
$creadsPrec :: Int -> ReadS ModifyClientVpnEndpoint
Prelude.Read, Int -> ModifyClientVpnEndpoint -> ShowS
[ModifyClientVpnEndpoint] -> ShowS
ModifyClientVpnEndpoint -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyClientVpnEndpoint] -> ShowS
$cshowList :: [ModifyClientVpnEndpoint] -> ShowS
show :: ModifyClientVpnEndpoint -> String
$cshow :: ModifyClientVpnEndpoint -> String
showsPrec :: Int -> ModifyClientVpnEndpoint -> ShowS
$cshowsPrec :: Int -> ModifyClientVpnEndpoint -> ShowS
Prelude.Show, forall x. Rep ModifyClientVpnEndpoint x -> ModifyClientVpnEndpoint
forall x. ModifyClientVpnEndpoint -> Rep ModifyClientVpnEndpoint x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ModifyClientVpnEndpoint x -> ModifyClientVpnEndpoint
$cfrom :: forall x. ModifyClientVpnEndpoint -> Rep ModifyClientVpnEndpoint x
Prelude.Generic)

-- |
-- Create a value of 'ModifyClientVpnEndpoint' 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:
--
-- 'clientConnectOptions', 'modifyClientVpnEndpoint_clientConnectOptions' - The options for managing connection authorization for new client
-- connections.
--
-- 'clientLoginBannerOptions', 'modifyClientVpnEndpoint_clientLoginBannerOptions' - Options for enabling a customizable text banner that will be displayed
-- on Amazon Web Services provided clients when a VPN session is
-- established.
--
-- 'connectionLogOptions', 'modifyClientVpnEndpoint_connectionLogOptions' - Information about the client connection logging options.
--
-- If you enable client connection logging, data about client connections
-- is sent to a Cloudwatch Logs log stream. The following information is
-- logged:
--
-- -   Client connection requests
--
-- -   Client connection results (successful and unsuccessful)
--
-- -   Reasons for unsuccessful client connection requests
--
-- -   Client connection termination time
--
-- 'description', 'modifyClientVpnEndpoint_description' - A brief description of the Client VPN endpoint.
--
-- 'dnsServers', 'modifyClientVpnEndpoint_dnsServers' - Information about the DNS servers to be used by Client VPN connections.
-- A Client VPN endpoint can have up to two DNS servers.
--
-- 'dryRun', 'modifyClientVpnEndpoint_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@.
--
-- 'securityGroupIds', 'modifyClientVpnEndpoint_securityGroupIds' - The IDs of one or more security groups to apply to the target network.
--
-- 'selfServicePortal', 'modifyClientVpnEndpoint_selfServicePortal' - Specify whether to enable the self-service portal for the Client VPN
-- endpoint.
--
-- 'serverCertificateArn', 'modifyClientVpnEndpoint_serverCertificateArn' - The ARN of the server certificate to be used. The server certificate
-- must be provisioned in Certificate Manager (ACM).
--
-- 'sessionTimeoutHours', 'modifyClientVpnEndpoint_sessionTimeoutHours' - The maximum VPN session duration time in hours.
--
-- Valid values: @8 | 10 | 12 | 24@
--
-- Default value: @24@
--
-- 'splitTunnel', 'modifyClientVpnEndpoint_splitTunnel' - Indicates whether the VPN is split-tunnel.
--
-- For information about split-tunnel VPN endpoints, see
-- <https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/split-tunnel-vpn.html Split-tunnel Client VPN endpoint>
-- in the /Client VPN Administrator Guide/.
--
-- 'vpcId', 'modifyClientVpnEndpoint_vpcId' - The ID of the VPC to associate with the Client VPN endpoint.
--
-- 'vpnPort', 'modifyClientVpnEndpoint_vpnPort' - The port number to assign to the Client VPN endpoint for TCP and UDP
-- traffic.
--
-- Valid Values: @443@ | @1194@
--
-- Default Value: @443@
--
-- 'clientVpnEndpointId', 'modifyClientVpnEndpoint_clientVpnEndpointId' - The ID of the Client VPN endpoint to modify.
newModifyClientVpnEndpoint ::
  -- | 'clientVpnEndpointId'
  Prelude.Text ->
  ModifyClientVpnEndpoint
newModifyClientVpnEndpoint :: Text -> ModifyClientVpnEndpoint
newModifyClientVpnEndpoint Text
pClientVpnEndpointId_ =
  ModifyClientVpnEndpoint'
    { $sel:clientConnectOptions:ModifyClientVpnEndpoint' :: Maybe ClientConnectOptions
clientConnectOptions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:clientLoginBannerOptions:ModifyClientVpnEndpoint' :: Maybe ClientLoginBannerOptions
clientLoginBannerOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:connectionLogOptions:ModifyClientVpnEndpoint' :: Maybe ConnectionLogOptions
connectionLogOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:description:ModifyClientVpnEndpoint' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:dnsServers:ModifyClientVpnEndpoint' :: Maybe DnsServersOptionsModifyStructure
dnsServers = forall a. Maybe a
Prelude.Nothing,
      $sel:dryRun:ModifyClientVpnEndpoint' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:securityGroupIds:ModifyClientVpnEndpoint' :: Maybe [Text]
securityGroupIds = forall a. Maybe a
Prelude.Nothing,
      $sel:selfServicePortal:ModifyClientVpnEndpoint' :: Maybe SelfServicePortal
selfServicePortal = forall a. Maybe a
Prelude.Nothing,
      $sel:serverCertificateArn:ModifyClientVpnEndpoint' :: Maybe Text
serverCertificateArn = forall a. Maybe a
Prelude.Nothing,
      $sel:sessionTimeoutHours:ModifyClientVpnEndpoint' :: Maybe Int
sessionTimeoutHours = forall a. Maybe a
Prelude.Nothing,
      $sel:splitTunnel:ModifyClientVpnEndpoint' :: Maybe Bool
splitTunnel = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcId:ModifyClientVpnEndpoint' :: Maybe Text
vpcId = forall a. Maybe a
Prelude.Nothing,
      $sel:vpnPort:ModifyClientVpnEndpoint' :: Maybe Int
vpnPort = forall a. Maybe a
Prelude.Nothing,
      $sel:clientVpnEndpointId:ModifyClientVpnEndpoint' :: Text
clientVpnEndpointId = Text
pClientVpnEndpointId_
    }

-- | The options for managing connection authorization for new client
-- connections.
modifyClientVpnEndpoint_clientConnectOptions :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe ClientConnectOptions)
modifyClientVpnEndpoint_clientConnectOptions :: Lens' ModifyClientVpnEndpoint (Maybe ClientConnectOptions)
modifyClientVpnEndpoint_clientConnectOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe ClientConnectOptions
clientConnectOptions :: Maybe ClientConnectOptions
$sel:clientConnectOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ClientConnectOptions
clientConnectOptions} -> Maybe ClientConnectOptions
clientConnectOptions) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe ClientConnectOptions
a -> ModifyClientVpnEndpoint
s {$sel:clientConnectOptions:ModifyClientVpnEndpoint' :: Maybe ClientConnectOptions
clientConnectOptions = Maybe ClientConnectOptions
a} :: ModifyClientVpnEndpoint)

-- | Options for enabling a customizable text banner that will be displayed
-- on Amazon Web Services provided clients when a VPN session is
-- established.
modifyClientVpnEndpoint_clientLoginBannerOptions :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe ClientLoginBannerOptions)
modifyClientVpnEndpoint_clientLoginBannerOptions :: Lens' ModifyClientVpnEndpoint (Maybe ClientLoginBannerOptions)
modifyClientVpnEndpoint_clientLoginBannerOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe ClientLoginBannerOptions
clientLoginBannerOptions :: Maybe ClientLoginBannerOptions
$sel:clientLoginBannerOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ClientLoginBannerOptions
clientLoginBannerOptions} -> Maybe ClientLoginBannerOptions
clientLoginBannerOptions) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe ClientLoginBannerOptions
a -> ModifyClientVpnEndpoint
s {$sel:clientLoginBannerOptions:ModifyClientVpnEndpoint' :: Maybe ClientLoginBannerOptions
clientLoginBannerOptions = Maybe ClientLoginBannerOptions
a} :: ModifyClientVpnEndpoint)

-- | Information about the client connection logging options.
--
-- If you enable client connection logging, data about client connections
-- is sent to a Cloudwatch Logs log stream. The following information is
-- logged:
--
-- -   Client connection requests
--
-- -   Client connection results (successful and unsuccessful)
--
-- -   Reasons for unsuccessful client connection requests
--
-- -   Client connection termination time
modifyClientVpnEndpoint_connectionLogOptions :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe ConnectionLogOptions)
modifyClientVpnEndpoint_connectionLogOptions :: Lens' ModifyClientVpnEndpoint (Maybe ConnectionLogOptions)
modifyClientVpnEndpoint_connectionLogOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe ConnectionLogOptions
connectionLogOptions :: Maybe ConnectionLogOptions
$sel:connectionLogOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ConnectionLogOptions
connectionLogOptions} -> Maybe ConnectionLogOptions
connectionLogOptions) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe ConnectionLogOptions
a -> ModifyClientVpnEndpoint
s {$sel:connectionLogOptions:ModifyClientVpnEndpoint' :: Maybe ConnectionLogOptions
connectionLogOptions = Maybe ConnectionLogOptions
a} :: ModifyClientVpnEndpoint)

-- | A brief description of the Client VPN endpoint.
modifyClientVpnEndpoint_description :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe Prelude.Text)
modifyClientVpnEndpoint_description :: Lens' ModifyClientVpnEndpoint (Maybe Text)
modifyClientVpnEndpoint_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe Text
description :: Maybe Text
$sel:description:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
description} -> Maybe Text
description) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe Text
a -> ModifyClientVpnEndpoint
s {$sel:description:ModifyClientVpnEndpoint' :: Maybe Text
description = Maybe Text
a} :: ModifyClientVpnEndpoint)

-- | Information about the DNS servers to be used by Client VPN connections.
-- A Client VPN endpoint can have up to two DNS servers.
modifyClientVpnEndpoint_dnsServers :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe DnsServersOptionsModifyStructure)
modifyClientVpnEndpoint_dnsServers :: Lens'
  ModifyClientVpnEndpoint (Maybe DnsServersOptionsModifyStructure)
modifyClientVpnEndpoint_dnsServers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe DnsServersOptionsModifyStructure
dnsServers :: Maybe DnsServersOptionsModifyStructure
$sel:dnsServers:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe DnsServersOptionsModifyStructure
dnsServers} -> Maybe DnsServersOptionsModifyStructure
dnsServers) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe DnsServersOptionsModifyStructure
a -> ModifyClientVpnEndpoint
s {$sel:dnsServers:ModifyClientVpnEndpoint' :: Maybe DnsServersOptionsModifyStructure
dnsServers = Maybe DnsServersOptionsModifyStructure
a} :: ModifyClientVpnEndpoint)

-- | 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@.
modifyClientVpnEndpoint_dryRun :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe Prelude.Bool)
modifyClientVpnEndpoint_dryRun :: Lens' ModifyClientVpnEndpoint (Maybe Bool)
modifyClientVpnEndpoint_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe Bool
a -> ModifyClientVpnEndpoint
s {$sel:dryRun:ModifyClientVpnEndpoint' :: Maybe Bool
dryRun = Maybe Bool
a} :: ModifyClientVpnEndpoint)

-- | The IDs of one or more security groups to apply to the target network.
modifyClientVpnEndpoint_securityGroupIds :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe [Prelude.Text])
modifyClientVpnEndpoint_securityGroupIds :: Lens' ModifyClientVpnEndpoint (Maybe [Text])
modifyClientVpnEndpoint_securityGroupIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe [Text]
securityGroupIds :: Maybe [Text]
$sel:securityGroupIds:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe [Text]
securityGroupIds} -> Maybe [Text]
securityGroupIds) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe [Text]
a -> ModifyClientVpnEndpoint
s {$sel:securityGroupIds:ModifyClientVpnEndpoint' :: Maybe [Text]
securityGroupIds = Maybe [Text]
a} :: ModifyClientVpnEndpoint) 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

-- | Specify whether to enable the self-service portal for the Client VPN
-- endpoint.
modifyClientVpnEndpoint_selfServicePortal :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe SelfServicePortal)
modifyClientVpnEndpoint_selfServicePortal :: Lens' ModifyClientVpnEndpoint (Maybe SelfServicePortal)
modifyClientVpnEndpoint_selfServicePortal = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe SelfServicePortal
selfServicePortal :: Maybe SelfServicePortal
$sel:selfServicePortal:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe SelfServicePortal
selfServicePortal} -> Maybe SelfServicePortal
selfServicePortal) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe SelfServicePortal
a -> ModifyClientVpnEndpoint
s {$sel:selfServicePortal:ModifyClientVpnEndpoint' :: Maybe SelfServicePortal
selfServicePortal = Maybe SelfServicePortal
a} :: ModifyClientVpnEndpoint)

-- | The ARN of the server certificate to be used. The server certificate
-- must be provisioned in Certificate Manager (ACM).
modifyClientVpnEndpoint_serverCertificateArn :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe Prelude.Text)
modifyClientVpnEndpoint_serverCertificateArn :: Lens' ModifyClientVpnEndpoint (Maybe Text)
modifyClientVpnEndpoint_serverCertificateArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe Text
serverCertificateArn :: Maybe Text
$sel:serverCertificateArn:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
serverCertificateArn} -> Maybe Text
serverCertificateArn) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe Text
a -> ModifyClientVpnEndpoint
s {$sel:serverCertificateArn:ModifyClientVpnEndpoint' :: Maybe Text
serverCertificateArn = Maybe Text
a} :: ModifyClientVpnEndpoint)

-- | The maximum VPN session duration time in hours.
--
-- Valid values: @8 | 10 | 12 | 24@
--
-- Default value: @24@
modifyClientVpnEndpoint_sessionTimeoutHours :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe Prelude.Int)
modifyClientVpnEndpoint_sessionTimeoutHours :: Lens' ModifyClientVpnEndpoint (Maybe Int)
modifyClientVpnEndpoint_sessionTimeoutHours = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe Int
sessionTimeoutHours :: Maybe Int
$sel:sessionTimeoutHours:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Int
sessionTimeoutHours} -> Maybe Int
sessionTimeoutHours) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe Int
a -> ModifyClientVpnEndpoint
s {$sel:sessionTimeoutHours:ModifyClientVpnEndpoint' :: Maybe Int
sessionTimeoutHours = Maybe Int
a} :: ModifyClientVpnEndpoint)

-- | Indicates whether the VPN is split-tunnel.
--
-- For information about split-tunnel VPN endpoints, see
-- <https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/split-tunnel-vpn.html Split-tunnel Client VPN endpoint>
-- in the /Client VPN Administrator Guide/.
modifyClientVpnEndpoint_splitTunnel :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe Prelude.Bool)
modifyClientVpnEndpoint_splitTunnel :: Lens' ModifyClientVpnEndpoint (Maybe Bool)
modifyClientVpnEndpoint_splitTunnel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe Bool
splitTunnel :: Maybe Bool
$sel:splitTunnel:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Bool
splitTunnel} -> Maybe Bool
splitTunnel) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe Bool
a -> ModifyClientVpnEndpoint
s {$sel:splitTunnel:ModifyClientVpnEndpoint' :: Maybe Bool
splitTunnel = Maybe Bool
a} :: ModifyClientVpnEndpoint)

-- | The ID of the VPC to associate with the Client VPN endpoint.
modifyClientVpnEndpoint_vpcId :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe Prelude.Text)
modifyClientVpnEndpoint_vpcId :: Lens' ModifyClientVpnEndpoint (Maybe Text)
modifyClientVpnEndpoint_vpcId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe Text
vpcId :: Maybe Text
$sel:vpcId:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
vpcId} -> Maybe Text
vpcId) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe Text
a -> ModifyClientVpnEndpoint
s {$sel:vpcId:ModifyClientVpnEndpoint' :: Maybe Text
vpcId = Maybe Text
a} :: ModifyClientVpnEndpoint)

-- | The port number to assign to the Client VPN endpoint for TCP and UDP
-- traffic.
--
-- Valid Values: @443@ | @1194@
--
-- Default Value: @443@
modifyClientVpnEndpoint_vpnPort :: Lens.Lens' ModifyClientVpnEndpoint (Prelude.Maybe Prelude.Int)
modifyClientVpnEndpoint_vpnPort :: Lens' ModifyClientVpnEndpoint (Maybe Int)
modifyClientVpnEndpoint_vpnPort = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Maybe Int
vpnPort :: Maybe Int
$sel:vpnPort:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Int
vpnPort} -> Maybe Int
vpnPort) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Maybe Int
a -> ModifyClientVpnEndpoint
s {$sel:vpnPort:ModifyClientVpnEndpoint' :: Maybe Int
vpnPort = Maybe Int
a} :: ModifyClientVpnEndpoint)

-- | The ID of the Client VPN endpoint to modify.
modifyClientVpnEndpoint_clientVpnEndpointId :: Lens.Lens' ModifyClientVpnEndpoint Prelude.Text
modifyClientVpnEndpoint_clientVpnEndpointId :: Lens' ModifyClientVpnEndpoint Text
modifyClientVpnEndpoint_clientVpnEndpointId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpoint' {Text
clientVpnEndpointId :: Text
$sel:clientVpnEndpointId:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Text
clientVpnEndpointId} -> Text
clientVpnEndpointId) (\s :: ModifyClientVpnEndpoint
s@ModifyClientVpnEndpoint' {} Text
a -> ModifyClientVpnEndpoint
s {$sel:clientVpnEndpointId:ModifyClientVpnEndpoint' :: Text
clientVpnEndpointId = Text
a} :: ModifyClientVpnEndpoint)

instance Core.AWSRequest ModifyClientVpnEndpoint where
  type
    AWSResponse ModifyClientVpnEndpoint =
      ModifyClientVpnEndpointResponse
  request :: (Service -> Service)
-> ModifyClientVpnEndpoint -> Request ModifyClientVpnEndpoint
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 ModifyClientVpnEndpoint
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ModifyClientVpnEndpoint)))
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 Bool -> Int -> ModifyClientVpnEndpointResponse
ModifyClientVpnEndpointResponse'
            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
"return")
            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 ModifyClientVpnEndpoint where
  hashWithSalt :: Int -> ModifyClientVpnEndpoint -> Int
hashWithSalt Int
_salt ModifyClientVpnEndpoint' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe Text
Maybe ClientConnectOptions
Maybe ClientLoginBannerOptions
Maybe ConnectionLogOptions
Maybe DnsServersOptionsModifyStructure
Maybe SelfServicePortal
Text
clientVpnEndpointId :: Text
vpnPort :: Maybe Int
vpcId :: Maybe Text
splitTunnel :: Maybe Bool
sessionTimeoutHours :: Maybe Int
serverCertificateArn :: Maybe Text
selfServicePortal :: Maybe SelfServicePortal
securityGroupIds :: Maybe [Text]
dryRun :: Maybe Bool
dnsServers :: Maybe DnsServersOptionsModifyStructure
description :: Maybe Text
connectionLogOptions :: Maybe ConnectionLogOptions
clientLoginBannerOptions :: Maybe ClientLoginBannerOptions
clientConnectOptions :: Maybe ClientConnectOptions
$sel:clientVpnEndpointId:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Text
$sel:vpnPort:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Int
$sel:vpcId:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
$sel:splitTunnel:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Bool
$sel:sessionTimeoutHours:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Int
$sel:serverCertificateArn:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
$sel:selfServicePortal:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe SelfServicePortal
$sel:securityGroupIds:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe [Text]
$sel:dryRun:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Bool
$sel:dnsServers:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe DnsServersOptionsModifyStructure
$sel:description:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
$sel:connectionLogOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ConnectionLogOptions
$sel:clientLoginBannerOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ClientLoginBannerOptions
$sel:clientConnectOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ClientConnectOptions
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ClientConnectOptions
clientConnectOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ClientLoginBannerOptions
clientLoginBannerOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ConnectionLogOptions
connectionLogOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DnsServersOptionsModifyStructure
dnsServers
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
securityGroupIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SelfServicePortal
selfServicePortal
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
serverCertificateArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
sessionTimeoutHours
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
splitTunnel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
vpcId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
vpnPort
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientVpnEndpointId

instance Prelude.NFData ModifyClientVpnEndpoint where
  rnf :: ModifyClientVpnEndpoint -> ()
rnf ModifyClientVpnEndpoint' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe Text
Maybe ClientConnectOptions
Maybe ClientLoginBannerOptions
Maybe ConnectionLogOptions
Maybe DnsServersOptionsModifyStructure
Maybe SelfServicePortal
Text
clientVpnEndpointId :: Text
vpnPort :: Maybe Int
vpcId :: Maybe Text
splitTunnel :: Maybe Bool
sessionTimeoutHours :: Maybe Int
serverCertificateArn :: Maybe Text
selfServicePortal :: Maybe SelfServicePortal
securityGroupIds :: Maybe [Text]
dryRun :: Maybe Bool
dnsServers :: Maybe DnsServersOptionsModifyStructure
description :: Maybe Text
connectionLogOptions :: Maybe ConnectionLogOptions
clientLoginBannerOptions :: Maybe ClientLoginBannerOptions
clientConnectOptions :: Maybe ClientConnectOptions
$sel:clientVpnEndpointId:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Text
$sel:vpnPort:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Int
$sel:vpcId:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
$sel:splitTunnel:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Bool
$sel:sessionTimeoutHours:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Int
$sel:serverCertificateArn:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
$sel:selfServicePortal:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe SelfServicePortal
$sel:securityGroupIds:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe [Text]
$sel:dryRun:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Bool
$sel:dnsServers:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe DnsServersOptionsModifyStructure
$sel:description:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
$sel:connectionLogOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ConnectionLogOptions
$sel:clientLoginBannerOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ClientLoginBannerOptions
$sel:clientConnectOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ClientConnectOptions
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ClientConnectOptions
clientConnectOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ClientLoginBannerOptions
clientLoginBannerOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ConnectionLogOptions
connectionLogOptions
      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 DnsServersOptionsModifyStructure
dnsServers
      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 [Text]
securityGroupIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SelfServicePortal
selfServicePortal
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
serverCertificateArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
sessionTimeoutHours
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
splitTunnel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
vpcId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
vpnPort
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
clientVpnEndpointId

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

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

instance Data.ToQuery ModifyClientVpnEndpoint where
  toQuery :: ModifyClientVpnEndpoint -> QueryString
toQuery ModifyClientVpnEndpoint' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe Text
Maybe ClientConnectOptions
Maybe ClientLoginBannerOptions
Maybe ConnectionLogOptions
Maybe DnsServersOptionsModifyStructure
Maybe SelfServicePortal
Text
clientVpnEndpointId :: Text
vpnPort :: Maybe Int
vpcId :: Maybe Text
splitTunnel :: Maybe Bool
sessionTimeoutHours :: Maybe Int
serverCertificateArn :: Maybe Text
selfServicePortal :: Maybe SelfServicePortal
securityGroupIds :: Maybe [Text]
dryRun :: Maybe Bool
dnsServers :: Maybe DnsServersOptionsModifyStructure
description :: Maybe Text
connectionLogOptions :: Maybe ConnectionLogOptions
clientLoginBannerOptions :: Maybe ClientLoginBannerOptions
clientConnectOptions :: Maybe ClientConnectOptions
$sel:clientVpnEndpointId:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Text
$sel:vpnPort:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Int
$sel:vpcId:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
$sel:splitTunnel:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Bool
$sel:sessionTimeoutHours:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Int
$sel:serverCertificateArn:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
$sel:selfServicePortal:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe SelfServicePortal
$sel:securityGroupIds:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe [Text]
$sel:dryRun:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Bool
$sel:dnsServers:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe DnsServersOptionsModifyStructure
$sel:description:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe Text
$sel:connectionLogOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ConnectionLogOptions
$sel:clientLoginBannerOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ClientLoginBannerOptions
$sel:clientConnectOptions:ModifyClientVpnEndpoint' :: ModifyClientVpnEndpoint -> Maybe ClientConnectOptions
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"ModifyClientVpnEndpoint" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"ClientConnectOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ClientConnectOptions
clientConnectOptions,
        ByteString
"ClientLoginBannerOptions"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ClientLoginBannerOptions
clientLoginBannerOptions,
        ByteString
"ConnectionLogOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ConnectionLogOptions
connectionLogOptions,
        ByteString
"Description" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
description,
        ByteString
"DnsServers" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DnsServersOptionsModifyStructure
dnsServers,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"SecurityGroupId"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
securityGroupIds
          ),
        ByteString
"SelfServicePortal" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe SelfServicePortal
selfServicePortal,
        ByteString
"ServerCertificateArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
serverCertificateArn,
        ByteString
"SessionTimeoutHours" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
sessionTimeoutHours,
        ByteString
"SplitTunnel" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
splitTunnel,
        ByteString
"VpcId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
vpcId,
        ByteString
"VpnPort" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
vpnPort,
        ByteString
"ClientVpnEndpointId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
clientVpnEndpointId
      ]

-- | /See:/ 'newModifyClientVpnEndpointResponse' smart constructor.
data ModifyClientVpnEndpointResponse = ModifyClientVpnEndpointResponse'
  { -- | Returns @true@ if the request succeeds; otherwise, it returns an error.
    ModifyClientVpnEndpointResponse -> Maybe Bool
return' :: Prelude.Maybe Prelude.Bool,
    -- | The response's http status code.
    ModifyClientVpnEndpointResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ModifyClientVpnEndpointResponse
-> ModifyClientVpnEndpointResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyClientVpnEndpointResponse
-> ModifyClientVpnEndpointResponse -> Bool
$c/= :: ModifyClientVpnEndpointResponse
-> ModifyClientVpnEndpointResponse -> Bool
== :: ModifyClientVpnEndpointResponse
-> ModifyClientVpnEndpointResponse -> Bool
$c== :: ModifyClientVpnEndpointResponse
-> ModifyClientVpnEndpointResponse -> Bool
Prelude.Eq, ReadPrec [ModifyClientVpnEndpointResponse]
ReadPrec ModifyClientVpnEndpointResponse
Int -> ReadS ModifyClientVpnEndpointResponse
ReadS [ModifyClientVpnEndpointResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyClientVpnEndpointResponse]
$creadListPrec :: ReadPrec [ModifyClientVpnEndpointResponse]
readPrec :: ReadPrec ModifyClientVpnEndpointResponse
$creadPrec :: ReadPrec ModifyClientVpnEndpointResponse
readList :: ReadS [ModifyClientVpnEndpointResponse]
$creadList :: ReadS [ModifyClientVpnEndpointResponse]
readsPrec :: Int -> ReadS ModifyClientVpnEndpointResponse
$creadsPrec :: Int -> ReadS ModifyClientVpnEndpointResponse
Prelude.Read, Int -> ModifyClientVpnEndpointResponse -> ShowS
[ModifyClientVpnEndpointResponse] -> ShowS
ModifyClientVpnEndpointResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyClientVpnEndpointResponse] -> ShowS
$cshowList :: [ModifyClientVpnEndpointResponse] -> ShowS
show :: ModifyClientVpnEndpointResponse -> String
$cshow :: ModifyClientVpnEndpointResponse -> String
showsPrec :: Int -> ModifyClientVpnEndpointResponse -> ShowS
$cshowsPrec :: Int -> ModifyClientVpnEndpointResponse -> ShowS
Prelude.Show, forall x.
Rep ModifyClientVpnEndpointResponse x
-> ModifyClientVpnEndpointResponse
forall x.
ModifyClientVpnEndpointResponse
-> Rep ModifyClientVpnEndpointResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyClientVpnEndpointResponse x
-> ModifyClientVpnEndpointResponse
$cfrom :: forall x.
ModifyClientVpnEndpointResponse
-> Rep ModifyClientVpnEndpointResponse x
Prelude.Generic)

-- |
-- Create a value of 'ModifyClientVpnEndpointResponse' 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:
--
-- 'return'', 'modifyClientVpnEndpointResponse_return' - Returns @true@ if the request succeeds; otherwise, it returns an error.
--
-- 'httpStatus', 'modifyClientVpnEndpointResponse_httpStatus' - The response's http status code.
newModifyClientVpnEndpointResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ModifyClientVpnEndpointResponse
newModifyClientVpnEndpointResponse :: Int -> ModifyClientVpnEndpointResponse
newModifyClientVpnEndpointResponse Int
pHttpStatus_ =
  ModifyClientVpnEndpointResponse'
    { $sel:return':ModifyClientVpnEndpointResponse' :: Maybe Bool
return' =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ModifyClientVpnEndpointResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Returns @true@ if the request succeeds; otherwise, it returns an error.
modifyClientVpnEndpointResponse_return :: Lens.Lens' ModifyClientVpnEndpointResponse (Prelude.Maybe Prelude.Bool)
modifyClientVpnEndpointResponse_return :: Lens' ModifyClientVpnEndpointResponse (Maybe Bool)
modifyClientVpnEndpointResponse_return = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyClientVpnEndpointResponse' {Maybe Bool
return' :: Maybe Bool
$sel:return':ModifyClientVpnEndpointResponse' :: ModifyClientVpnEndpointResponse -> Maybe Bool
return'} -> Maybe Bool
return') (\s :: ModifyClientVpnEndpointResponse
s@ModifyClientVpnEndpointResponse' {} Maybe Bool
a -> ModifyClientVpnEndpointResponse
s {$sel:return':ModifyClientVpnEndpointResponse' :: Maybe Bool
return' = Maybe Bool
a} :: ModifyClientVpnEndpointResponse)

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

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