{-# 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.DMS.ModifyEndpoint
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Modifies the specified endpoint.
--
-- For a MySQL source or target endpoint, don\'t explicitly specify the
-- database using the @DatabaseName@ request parameter on the
-- @ModifyEndpoint@ API call. Specifying @DatabaseName@ when you modify a
-- MySQL endpoint replicates all the task tables to this single database.
-- For MySQL endpoints, you specify the database only when you specify the
-- schema in the table-mapping rules of the DMS task.
module Amazonka.DMS.ModifyEndpoint
  ( -- * Creating a Request
    ModifyEndpoint (..),
    newModifyEndpoint,

    -- * Request Lenses
    modifyEndpoint_dmsTransferSettings,
    modifyEndpoint_mySQLSettings,
    modifyEndpoint_serverName,
    modifyEndpoint_microsoftSQLServerSettings,
    modifyEndpoint_certificateArn,
    modifyEndpoint_serviceAccessRoleArn,
    modifyEndpoint_docDbSettings,
    modifyEndpoint_postgreSQLSettings,
    modifyEndpoint_extraConnectionAttributes,
    modifyEndpoint_kafkaSettings,
    modifyEndpoint_oracleSettings,
    modifyEndpoint_endpointType,
    modifyEndpoint_redshiftSettings,
    modifyEndpoint_elasticsearchSettings,
    modifyEndpoint_exactSettings,
    modifyEndpoint_username,
    modifyEndpoint_externalTableDefinition,
    modifyEndpoint_engineName,
    modifyEndpoint_redisSettings,
    modifyEndpoint_neptuneSettings,
    modifyEndpoint_iBMDb2Settings,
    modifyEndpoint_mongoDbSettings,
    modifyEndpoint_sslMode,
    modifyEndpoint_password,
    modifyEndpoint_sybaseSettings,
    modifyEndpoint_databaseName,
    modifyEndpoint_s3Settings,
    modifyEndpoint_kinesisSettings,
    modifyEndpoint_endpointIdentifier,
    modifyEndpoint_dynamoDbSettings,
    modifyEndpoint_port,
    modifyEndpoint_endpointArn,

    -- * Destructuring the Response
    ModifyEndpointResponse (..),
    newModifyEndpointResponse,

    -- * Response Lenses
    modifyEndpointResponse_endpoint,
    modifyEndpointResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import Amazonka.DMS.Types
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- |
--
-- /See:/ 'newModifyEndpoint' smart constructor.
data ModifyEndpoint = ModifyEndpoint'
  { -- | The settings in JSON format for the DMS transfer type of source
    -- endpoint.
    --
    -- Attributes include the following:
    --
    -- -   serviceAccessRoleArn - The Amazon Resource Name (ARN) used by the
    --     service access IAM role. The role must allow the @iam:PassRole@
    --     action.
    --
    -- -   BucketName - The name of the S3 bucket to use.
    --
    -- Shorthand syntax for these settings is as follows:
    -- @ServiceAccessRoleArn=string ,BucketName=string@
    --
    -- JSON syntax for these settings is as follows:
    -- @{ \"ServiceAccessRoleArn\": \"string\", \"BucketName\": \"string\"} @
    ModifyEndpoint -> Maybe DmsTransferSettings
dmsTransferSettings :: Prelude.Maybe DmsTransferSettings,
    -- | Settings in JSON format for the source and target MySQL endpoint. For
    -- information about other available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.ConnectionAttrib Extra connection attributes when using MySQL as a source for DMS>
    -- and
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html#CHAP_Target.MySQL.ConnectionAttrib Extra connection attributes when using a MySQL-compatible database as a target for DMS>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe MySQLSettings
mySQLSettings :: Prelude.Maybe MySQLSettings,
    -- | The name of the server where the endpoint database resides.
    ModifyEndpoint -> Maybe Text
serverName :: Prelude.Maybe Prelude.Text,
    -- | Settings in JSON format for the source and target Microsoft SQL Server
    -- endpoint. For information about other available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html#CHAP_Source.SQLServer.ConnectionAttrib Extra connection attributes when using SQL Server as a source for DMS>
    -- and
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SQLServer.html#CHAP_Target.SQLServer.ConnectionAttrib Extra connection attributes when using SQL Server as a target for DMS>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings :: Prelude.Maybe MicrosoftSQLServerSettings,
    -- | The Amazon Resource Name (ARN) of the certificate used for SSL
    -- connection.
    ModifyEndpoint -> Maybe Text
certificateArn :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) for the IAM role you want to use to
    -- modify the endpoint. The role must allow the @iam:PassRole@ action.
    ModifyEndpoint -> Maybe Text
serviceAccessRoleArn :: Prelude.Maybe Prelude.Text,
    -- | Settings in JSON format for the source DocumentDB endpoint. For more
    -- information about the available settings, see the configuration
    -- properties section in
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.DocumentDB.html Using DocumentDB as a Target for Database Migration Service>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe DocDbSettings
docDbSettings :: Prelude.Maybe DocDbSettings,
    -- | Settings in JSON format for the source and target PostgreSQL endpoint.
    -- For information about other available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib Extra connection attributes when using PostgreSQL as a source for DMS>
    -- and
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html#CHAP_Target.PostgreSQL.ConnectionAttrib Extra connection attributes when using PostgreSQL as a target for DMS>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe PostgreSQLSettings
postgreSQLSettings :: Prelude.Maybe PostgreSQLSettings,
    -- | Additional attributes associated with the connection. To reset this
    -- parameter, pass the empty string (\"\") as an argument.
    ModifyEndpoint -> Maybe Text
extraConnectionAttributes :: Prelude.Maybe Prelude.Text,
    -- | Settings in JSON format for the target Apache Kafka endpoint. For more
    -- information about the available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kafka.html#CHAP_Target.Kafka.ObjectMapping Using object mapping to migrate data to a Kafka topic>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe KafkaSettings
kafkaSettings :: Prelude.Maybe KafkaSettings,
    -- | Settings in JSON format for the source and target Oracle endpoint. For
    -- information about other available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.ConnectionAttrib Extra connection attributes when using Oracle as a source for DMS>
    -- and
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html#CHAP_Target.Oracle.ConnectionAttrib Extra connection attributes when using Oracle as a target for DMS>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe OracleSettings
oracleSettings :: Prelude.Maybe OracleSettings,
    -- | The type of endpoint. Valid values are @source@ and @target@.
    ModifyEndpoint -> Maybe ReplicationEndpointTypeValue
endpointType :: Prelude.Maybe ReplicationEndpointTypeValue,
    ModifyEndpoint -> Maybe RedshiftSettings
redshiftSettings :: Prelude.Maybe RedshiftSettings,
    -- | Settings in JSON format for the target Elasticsearch endpoint. For more
    -- information about the available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Elasticsearch.html#CHAP_Target.Elasticsearch.Configuration Extra Connection Attributes When Using Elasticsearch as a Target for DMS>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe ElasticsearchSettings
elasticsearchSettings :: Prelude.Maybe ElasticsearchSettings,
    -- | If this attribute is Y, the current call to @ModifyEndpoint@ replaces
    -- all existing endpoint settings with the exact settings that you specify
    -- in this call. If this attribute is N, the current call to
    -- @ModifyEndpoint@ does two things:
    --
    -- -   It replaces any endpoint settings that already exist with new
    --     values, for settings with the same names.
    --
    -- -   It creates new endpoint settings that you specify in the call, for
    --     settings with different names.
    --
    -- For example, if you call
    -- @create-endpoint ... --endpoint-settings \'{\"a\":1}\' ...@, the
    -- endpoint has the following endpoint settings: @\'{\"a\":1}\'@. If you
    -- then call @modify-endpoint ... --endpoint-settings \'{\"b\":2}\' ...@
    -- for the same endpoint, the endpoint has the following settings:
    -- @\'{\"a\":1,\"b\":2}\'@.
    --
    -- However, suppose that you follow this with a call to
    -- @modify-endpoint ... --endpoint-settings \'{\"b\":2}\' --exact-settings ...@
    -- for that same endpoint again. Then the endpoint has the following
    -- settings: @\'{\"b\":2}\'@. All existing settings are replaced with the
    -- exact settings that you specify.
    ModifyEndpoint -> Maybe Bool
exactSettings :: Prelude.Maybe Prelude.Bool,
    -- | The user name to be used to login to the endpoint database.
    ModifyEndpoint -> Maybe Text
username :: Prelude.Maybe Prelude.Text,
    -- | The external table definition.
    ModifyEndpoint -> Maybe Text
externalTableDefinition :: Prelude.Maybe Prelude.Text,
    -- | The type of engine for the endpoint. Valid values, depending on the
    -- EndpointType, include @\"mysql\"@, @\"oracle\"@, @\"postgres\"@,
    -- @\"mariadb\"@, @\"aurora\"@, @\"aurora-postgresql\"@, @\"redshift\"@,
    -- @\"s3\"@, @\"db2\"@, @\"azuredb\"@, @\"sybase\"@, @\"dynamodb\"@,
    -- @\"mongodb\"@, @\"kinesis\"@, @\"kafka\"@, @\"elasticsearch\"@,
    -- @\"documentdb\"@, @\"sqlserver\"@, and @\"neptune\"@.
    ModifyEndpoint -> Maybe Text
engineName :: Prelude.Maybe Prelude.Text,
    -- | Settings in JSON format for the Redis target endpoint.
    ModifyEndpoint -> Maybe RedisSettings
redisSettings :: Prelude.Maybe RedisSettings,
    -- | Settings in JSON format for the target Amazon Neptune endpoint. For more
    -- information about the available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Neptune.html#CHAP_Target.Neptune.EndpointSettings Specifying graph-mapping rules using Gremlin and R2RML for Amazon Neptune as a target>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe NeptuneSettings
neptuneSettings :: Prelude.Maybe NeptuneSettings,
    -- | Settings in JSON format for the source IBM Db2 LUW endpoint. For
    -- information about other available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.DB2.html#CHAP_Source.DB2.ConnectionAttrib Extra connection attributes when using Db2 LUW as a source for DMS>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe IBMDb2Settings
iBMDb2Settings :: Prelude.Maybe IBMDb2Settings,
    -- | Settings in JSON format for the source MongoDB endpoint. For more
    -- information about the available settings, see the configuration
    -- properties section in
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MongoDB.html#CHAP_Source.MongoDB.Configuration Endpoint configuration settings when using MongoDB as a source for Database Migration Service>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe MongoDbSettings
mongoDbSettings :: Prelude.Maybe MongoDbSettings,
    -- | The SSL mode used to connect to the endpoint. The default value is
    -- @none@.
    ModifyEndpoint -> Maybe DmsSslModeValue
sslMode :: Prelude.Maybe DmsSslModeValue,
    -- | The password to be used to login to the endpoint database.
    ModifyEndpoint -> Maybe (Sensitive Text)
password :: Prelude.Maybe (Core.Sensitive Prelude.Text),
    -- | Settings in JSON format for the source and target SAP ASE endpoint. For
    -- information about other available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html#CHAP_Source.SAP.ConnectionAttrib Extra connection attributes when using SAP ASE as a source for DMS>
    -- and
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SAP.html#CHAP_Target.SAP.ConnectionAttrib Extra connection attributes when using SAP ASE as a target for DMS>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe SybaseSettings
sybaseSettings :: Prelude.Maybe SybaseSettings,
    -- | The name of the endpoint database. For a MySQL source or target
    -- endpoint, do not specify DatabaseName.
    ModifyEndpoint -> Maybe Text
databaseName :: Prelude.Maybe Prelude.Text,
    -- | Settings in JSON format for the target Amazon S3 endpoint. For more
    -- information about the available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html#CHAP_Target.S3.Configuring Extra Connection Attributes When Using Amazon S3 as a Target for DMS>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe S3Settings
s3Settings :: Prelude.Maybe S3Settings,
    -- | Settings in JSON format for the target endpoint for Amazon Kinesis Data
    -- Streams. For more information about the available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kinesis.html#CHAP_Target.Kinesis.ObjectMapping Using object mapping to migrate data to a Kinesis data stream>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe KinesisSettings
kinesisSettings :: Prelude.Maybe KinesisSettings,
    -- | The database endpoint identifier. Identifiers must begin with a letter
    -- and must contain only ASCII letters, digits, and hyphens. They can\'t
    -- end with a hyphen or contain two consecutive hyphens.
    ModifyEndpoint -> Maybe Text
endpointIdentifier :: Prelude.Maybe Prelude.Text,
    -- | Settings in JSON format for the target Amazon DynamoDB endpoint. For
    -- information about other available settings, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.DynamoDB.html#CHAP_Target.DynamoDB.ObjectMapping Using Object Mapping to Migrate Data to DynamoDB>
    -- in the /Database Migration Service User Guide./
    ModifyEndpoint -> Maybe DynamoDbSettings
dynamoDbSettings :: Prelude.Maybe DynamoDbSettings,
    -- | The port used by the endpoint database.
    ModifyEndpoint -> Maybe Int
port :: Prelude.Maybe Prelude.Int,
    -- | The Amazon Resource Name (ARN) string that uniquely identifies the
    -- endpoint.
    ModifyEndpoint -> Text
endpointArn :: Prelude.Text
  }
  deriving (ModifyEndpoint -> ModifyEndpoint -> Bool
(ModifyEndpoint -> ModifyEndpoint -> Bool)
-> (ModifyEndpoint -> ModifyEndpoint -> Bool) -> Eq ModifyEndpoint
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyEndpoint -> ModifyEndpoint -> Bool
$c/= :: ModifyEndpoint -> ModifyEndpoint -> Bool
== :: ModifyEndpoint -> ModifyEndpoint -> Bool
$c== :: ModifyEndpoint -> ModifyEndpoint -> Bool
Prelude.Eq, Int -> ModifyEndpoint -> ShowS
[ModifyEndpoint] -> ShowS
ModifyEndpoint -> String
(Int -> ModifyEndpoint -> ShowS)
-> (ModifyEndpoint -> String)
-> ([ModifyEndpoint] -> ShowS)
-> Show ModifyEndpoint
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyEndpoint] -> ShowS
$cshowList :: [ModifyEndpoint] -> ShowS
show :: ModifyEndpoint -> String
$cshow :: ModifyEndpoint -> String
showsPrec :: Int -> ModifyEndpoint -> ShowS
$cshowsPrec :: Int -> ModifyEndpoint -> ShowS
Prelude.Show, (forall x. ModifyEndpoint -> Rep ModifyEndpoint x)
-> (forall x. Rep ModifyEndpoint x -> ModifyEndpoint)
-> Generic ModifyEndpoint
forall x. Rep ModifyEndpoint x -> ModifyEndpoint
forall x. ModifyEndpoint -> Rep ModifyEndpoint x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ModifyEndpoint x -> ModifyEndpoint
$cfrom :: forall x. ModifyEndpoint -> Rep ModifyEndpoint x
Prelude.Generic)

-- |
-- Create a value of 'ModifyEndpoint' 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:
--
-- 'dmsTransferSettings', 'modifyEndpoint_dmsTransferSettings' - The settings in JSON format for the DMS transfer type of source
-- endpoint.
--
-- Attributes include the following:
--
-- -   serviceAccessRoleArn - The Amazon Resource Name (ARN) used by the
--     service access IAM role. The role must allow the @iam:PassRole@
--     action.
--
-- -   BucketName - The name of the S3 bucket to use.
--
-- Shorthand syntax for these settings is as follows:
-- @ServiceAccessRoleArn=string ,BucketName=string@
--
-- JSON syntax for these settings is as follows:
-- @{ \"ServiceAccessRoleArn\": \"string\", \"BucketName\": \"string\"} @
--
-- 'mySQLSettings', 'modifyEndpoint_mySQLSettings' - Settings in JSON format for the source and target MySQL endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.ConnectionAttrib Extra connection attributes when using MySQL as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html#CHAP_Target.MySQL.ConnectionAttrib Extra connection attributes when using a MySQL-compatible database as a target for DMS>
-- in the /Database Migration Service User Guide./
--
-- 'serverName', 'modifyEndpoint_serverName' - The name of the server where the endpoint database resides.
--
-- 'microsoftSQLServerSettings', 'modifyEndpoint_microsoftSQLServerSettings' - Settings in JSON format for the source and target Microsoft SQL Server
-- endpoint. For information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html#CHAP_Source.SQLServer.ConnectionAttrib Extra connection attributes when using SQL Server as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SQLServer.html#CHAP_Target.SQLServer.ConnectionAttrib Extra connection attributes when using SQL Server as a target for DMS>
-- in the /Database Migration Service User Guide./
--
-- 'certificateArn', 'modifyEndpoint_certificateArn' - The Amazon Resource Name (ARN) of the certificate used for SSL
-- connection.
--
-- 'serviceAccessRoleArn', 'modifyEndpoint_serviceAccessRoleArn' - The Amazon Resource Name (ARN) for the IAM role you want to use to
-- modify the endpoint. The role must allow the @iam:PassRole@ action.
--
-- 'docDbSettings', 'modifyEndpoint_docDbSettings' - Settings in JSON format for the source DocumentDB endpoint. For more
-- information about the available settings, see the configuration
-- properties section in
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.DocumentDB.html Using DocumentDB as a Target for Database Migration Service>
-- in the /Database Migration Service User Guide./
--
-- 'postgreSQLSettings', 'modifyEndpoint_postgreSQLSettings' - Settings in JSON format for the source and target PostgreSQL endpoint.
-- For information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib Extra connection attributes when using PostgreSQL as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html#CHAP_Target.PostgreSQL.ConnectionAttrib Extra connection attributes when using PostgreSQL as a target for DMS>
-- in the /Database Migration Service User Guide./
--
-- 'extraConnectionAttributes', 'modifyEndpoint_extraConnectionAttributes' - Additional attributes associated with the connection. To reset this
-- parameter, pass the empty string (\"\") as an argument.
--
-- 'kafkaSettings', 'modifyEndpoint_kafkaSettings' - Settings in JSON format for the target Apache Kafka endpoint. For more
-- information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kafka.html#CHAP_Target.Kafka.ObjectMapping Using object mapping to migrate data to a Kafka topic>
-- in the /Database Migration Service User Guide./
--
-- 'oracleSettings', 'modifyEndpoint_oracleSettings' - Settings in JSON format for the source and target Oracle endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.ConnectionAttrib Extra connection attributes when using Oracle as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html#CHAP_Target.Oracle.ConnectionAttrib Extra connection attributes when using Oracle as a target for DMS>
-- in the /Database Migration Service User Guide./
--
-- 'endpointType', 'modifyEndpoint_endpointType' - The type of endpoint. Valid values are @source@ and @target@.
--
-- 'redshiftSettings', 'modifyEndpoint_redshiftSettings' - Undocumented member.
--
-- 'elasticsearchSettings', 'modifyEndpoint_elasticsearchSettings' - Settings in JSON format for the target Elasticsearch endpoint. For more
-- information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Elasticsearch.html#CHAP_Target.Elasticsearch.Configuration Extra Connection Attributes When Using Elasticsearch as a Target for DMS>
-- in the /Database Migration Service User Guide./
--
-- 'exactSettings', 'modifyEndpoint_exactSettings' - If this attribute is Y, the current call to @ModifyEndpoint@ replaces
-- all existing endpoint settings with the exact settings that you specify
-- in this call. If this attribute is N, the current call to
-- @ModifyEndpoint@ does two things:
--
-- -   It replaces any endpoint settings that already exist with new
--     values, for settings with the same names.
--
-- -   It creates new endpoint settings that you specify in the call, for
--     settings with different names.
--
-- For example, if you call
-- @create-endpoint ... --endpoint-settings \'{\"a\":1}\' ...@, the
-- endpoint has the following endpoint settings: @\'{\"a\":1}\'@. If you
-- then call @modify-endpoint ... --endpoint-settings \'{\"b\":2}\' ...@
-- for the same endpoint, the endpoint has the following settings:
-- @\'{\"a\":1,\"b\":2}\'@.
--
-- However, suppose that you follow this with a call to
-- @modify-endpoint ... --endpoint-settings \'{\"b\":2}\' --exact-settings ...@
-- for that same endpoint again. Then the endpoint has the following
-- settings: @\'{\"b\":2}\'@. All existing settings are replaced with the
-- exact settings that you specify.
--
-- 'username', 'modifyEndpoint_username' - The user name to be used to login to the endpoint database.
--
-- 'externalTableDefinition', 'modifyEndpoint_externalTableDefinition' - The external table definition.
--
-- 'engineName', 'modifyEndpoint_engineName' - The type of engine for the endpoint. Valid values, depending on the
-- EndpointType, include @\"mysql\"@, @\"oracle\"@, @\"postgres\"@,
-- @\"mariadb\"@, @\"aurora\"@, @\"aurora-postgresql\"@, @\"redshift\"@,
-- @\"s3\"@, @\"db2\"@, @\"azuredb\"@, @\"sybase\"@, @\"dynamodb\"@,
-- @\"mongodb\"@, @\"kinesis\"@, @\"kafka\"@, @\"elasticsearch\"@,
-- @\"documentdb\"@, @\"sqlserver\"@, and @\"neptune\"@.
--
-- 'redisSettings', 'modifyEndpoint_redisSettings' - Settings in JSON format for the Redis target endpoint.
--
-- 'neptuneSettings', 'modifyEndpoint_neptuneSettings' - Settings in JSON format for the target Amazon Neptune endpoint. For more
-- information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Neptune.html#CHAP_Target.Neptune.EndpointSettings Specifying graph-mapping rules using Gremlin and R2RML for Amazon Neptune as a target>
-- in the /Database Migration Service User Guide./
--
-- 'iBMDb2Settings', 'modifyEndpoint_iBMDb2Settings' - Settings in JSON format for the source IBM Db2 LUW endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.DB2.html#CHAP_Source.DB2.ConnectionAttrib Extra connection attributes when using Db2 LUW as a source for DMS>
-- in the /Database Migration Service User Guide./
--
-- 'mongoDbSettings', 'modifyEndpoint_mongoDbSettings' - Settings in JSON format for the source MongoDB endpoint. For more
-- information about the available settings, see the configuration
-- properties section in
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MongoDB.html#CHAP_Source.MongoDB.Configuration Endpoint configuration settings when using MongoDB as a source for Database Migration Service>
-- in the /Database Migration Service User Guide./
--
-- 'sslMode', 'modifyEndpoint_sslMode' - The SSL mode used to connect to the endpoint. The default value is
-- @none@.
--
-- 'password', 'modifyEndpoint_password' - The password to be used to login to the endpoint database.
--
-- 'sybaseSettings', 'modifyEndpoint_sybaseSettings' - Settings in JSON format for the source and target SAP ASE endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html#CHAP_Source.SAP.ConnectionAttrib Extra connection attributes when using SAP ASE as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SAP.html#CHAP_Target.SAP.ConnectionAttrib Extra connection attributes when using SAP ASE as a target for DMS>
-- in the /Database Migration Service User Guide./
--
-- 'databaseName', 'modifyEndpoint_databaseName' - The name of the endpoint database. For a MySQL source or target
-- endpoint, do not specify DatabaseName.
--
-- 's3Settings', 'modifyEndpoint_s3Settings' - Settings in JSON format for the target Amazon S3 endpoint. For more
-- information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html#CHAP_Target.S3.Configuring Extra Connection Attributes When Using Amazon S3 as a Target for DMS>
-- in the /Database Migration Service User Guide./
--
-- 'kinesisSettings', 'modifyEndpoint_kinesisSettings' - Settings in JSON format for the target endpoint for Amazon Kinesis Data
-- Streams. For more information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kinesis.html#CHAP_Target.Kinesis.ObjectMapping Using object mapping to migrate data to a Kinesis data stream>
-- in the /Database Migration Service User Guide./
--
-- 'endpointIdentifier', 'modifyEndpoint_endpointIdentifier' - The database endpoint identifier. Identifiers must begin with a letter
-- and must contain only ASCII letters, digits, and hyphens. They can\'t
-- end with a hyphen or contain two consecutive hyphens.
--
-- 'dynamoDbSettings', 'modifyEndpoint_dynamoDbSettings' - Settings in JSON format for the target Amazon DynamoDB endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.DynamoDB.html#CHAP_Target.DynamoDB.ObjectMapping Using Object Mapping to Migrate Data to DynamoDB>
-- in the /Database Migration Service User Guide./
--
-- 'port', 'modifyEndpoint_port' - The port used by the endpoint database.
--
-- 'endpointArn', 'modifyEndpoint_endpointArn' - The Amazon Resource Name (ARN) string that uniquely identifies the
-- endpoint.
newModifyEndpoint ::
  -- | 'endpointArn'
  Prelude.Text ->
  ModifyEndpoint
newModifyEndpoint :: Text -> ModifyEndpoint
newModifyEndpoint Text
pEndpointArn_ =
  ModifyEndpoint' :: Maybe DmsTransferSettings
-> Maybe MySQLSettings
-> Maybe Text
-> Maybe MicrosoftSQLServerSettings
-> Maybe Text
-> Maybe Text
-> Maybe DocDbSettings
-> Maybe PostgreSQLSettings
-> Maybe Text
-> Maybe KafkaSettings
-> Maybe OracleSettings
-> Maybe ReplicationEndpointTypeValue
-> Maybe RedshiftSettings
-> Maybe ElasticsearchSettings
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe RedisSettings
-> Maybe NeptuneSettings
-> Maybe IBMDb2Settings
-> Maybe MongoDbSettings
-> Maybe DmsSslModeValue
-> Maybe (Sensitive Text)
-> Maybe SybaseSettings
-> Maybe Text
-> Maybe S3Settings
-> Maybe KinesisSettings
-> Maybe Text
-> Maybe DynamoDbSettings
-> Maybe Int
-> Text
-> ModifyEndpoint
ModifyEndpoint'
    { $sel:dmsTransferSettings:ModifyEndpoint' :: Maybe DmsTransferSettings
dmsTransferSettings =
        Maybe DmsTransferSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:mySQLSettings:ModifyEndpoint' :: Maybe MySQLSettings
mySQLSettings = Maybe MySQLSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:serverName:ModifyEndpoint' :: Maybe Text
serverName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:microsoftSQLServerSettings:ModifyEndpoint' :: Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings = Maybe MicrosoftSQLServerSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:certificateArn:ModifyEndpoint' :: Maybe Text
certificateArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:serviceAccessRoleArn:ModifyEndpoint' :: Maybe Text
serviceAccessRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:docDbSettings:ModifyEndpoint' :: Maybe DocDbSettings
docDbSettings = Maybe DocDbSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:postgreSQLSettings:ModifyEndpoint' :: Maybe PostgreSQLSettings
postgreSQLSettings = Maybe PostgreSQLSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:extraConnectionAttributes:ModifyEndpoint' :: Maybe Text
extraConnectionAttributes = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:kafkaSettings:ModifyEndpoint' :: Maybe KafkaSettings
kafkaSettings = Maybe KafkaSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:oracleSettings:ModifyEndpoint' :: Maybe OracleSettings
oracleSettings = Maybe OracleSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:endpointType:ModifyEndpoint' :: Maybe ReplicationEndpointTypeValue
endpointType = Maybe ReplicationEndpointTypeValue
forall a. Maybe a
Prelude.Nothing,
      $sel:redshiftSettings:ModifyEndpoint' :: Maybe RedshiftSettings
redshiftSettings = Maybe RedshiftSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:elasticsearchSettings:ModifyEndpoint' :: Maybe ElasticsearchSettings
elasticsearchSettings = Maybe ElasticsearchSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:exactSettings:ModifyEndpoint' :: Maybe Bool
exactSettings = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:username:ModifyEndpoint' :: Maybe Text
username = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:externalTableDefinition:ModifyEndpoint' :: Maybe Text
externalTableDefinition = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:engineName:ModifyEndpoint' :: Maybe Text
engineName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:redisSettings:ModifyEndpoint' :: Maybe RedisSettings
redisSettings = Maybe RedisSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:neptuneSettings:ModifyEndpoint' :: Maybe NeptuneSettings
neptuneSettings = Maybe NeptuneSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:iBMDb2Settings:ModifyEndpoint' :: Maybe IBMDb2Settings
iBMDb2Settings = Maybe IBMDb2Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:mongoDbSettings:ModifyEndpoint' :: Maybe MongoDbSettings
mongoDbSettings = Maybe MongoDbSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:sslMode:ModifyEndpoint' :: Maybe DmsSslModeValue
sslMode = Maybe DmsSslModeValue
forall a. Maybe a
Prelude.Nothing,
      $sel:password:ModifyEndpoint' :: Maybe (Sensitive Text)
password = Maybe (Sensitive Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:sybaseSettings:ModifyEndpoint' :: Maybe SybaseSettings
sybaseSettings = Maybe SybaseSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:databaseName:ModifyEndpoint' :: Maybe Text
databaseName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:s3Settings:ModifyEndpoint' :: Maybe S3Settings
s3Settings = Maybe S3Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:kinesisSettings:ModifyEndpoint' :: Maybe KinesisSettings
kinesisSettings = Maybe KinesisSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:endpointIdentifier:ModifyEndpoint' :: Maybe Text
endpointIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dynamoDbSettings:ModifyEndpoint' :: Maybe DynamoDbSettings
dynamoDbSettings = Maybe DynamoDbSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:port:ModifyEndpoint' :: Maybe Int
port = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:endpointArn:ModifyEndpoint' :: Text
endpointArn = Text
pEndpointArn_
    }

-- | The settings in JSON format for the DMS transfer type of source
-- endpoint.
--
-- Attributes include the following:
--
-- -   serviceAccessRoleArn - The Amazon Resource Name (ARN) used by the
--     service access IAM role. The role must allow the @iam:PassRole@
--     action.
--
-- -   BucketName - The name of the S3 bucket to use.
--
-- Shorthand syntax for these settings is as follows:
-- @ServiceAccessRoleArn=string ,BucketName=string@
--
-- JSON syntax for these settings is as follows:
-- @{ \"ServiceAccessRoleArn\": \"string\", \"BucketName\": \"string\"} @
modifyEndpoint_dmsTransferSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe DmsTransferSettings)
modifyEndpoint_dmsTransferSettings :: (Maybe DmsTransferSettings -> f (Maybe DmsTransferSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_dmsTransferSettings = (ModifyEndpoint -> Maybe DmsTransferSettings)
-> (ModifyEndpoint -> Maybe DmsTransferSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe DmsTransferSettings)
     (Maybe DmsTransferSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe DmsTransferSettings
dmsTransferSettings :: Maybe DmsTransferSettings
$sel:dmsTransferSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe DmsTransferSettings
dmsTransferSettings} -> Maybe DmsTransferSettings
dmsTransferSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe DmsTransferSettings
a -> ModifyEndpoint
s {$sel:dmsTransferSettings:ModifyEndpoint' :: Maybe DmsTransferSettings
dmsTransferSettings = Maybe DmsTransferSettings
a} :: ModifyEndpoint)

-- | Settings in JSON format for the source and target MySQL endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.ConnectionAttrib Extra connection attributes when using MySQL as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html#CHAP_Target.MySQL.ConnectionAttrib Extra connection attributes when using a MySQL-compatible database as a target for DMS>
-- in the /Database Migration Service User Guide./
modifyEndpoint_mySQLSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe MySQLSettings)
modifyEndpoint_mySQLSettings :: (Maybe MySQLSettings -> f (Maybe MySQLSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_mySQLSettings = (ModifyEndpoint -> Maybe MySQLSettings)
-> (ModifyEndpoint -> Maybe MySQLSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe MySQLSettings)
     (Maybe MySQLSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe MySQLSettings
mySQLSettings :: Maybe MySQLSettings
$sel:mySQLSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe MySQLSettings
mySQLSettings} -> Maybe MySQLSettings
mySQLSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe MySQLSettings
a -> ModifyEndpoint
s {$sel:mySQLSettings:ModifyEndpoint' :: Maybe MySQLSettings
mySQLSettings = Maybe MySQLSettings
a} :: ModifyEndpoint)

-- | The name of the server where the endpoint database resides.
modifyEndpoint_serverName :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_serverName :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_serverName = (ModifyEndpoint -> Maybe Text)
-> (ModifyEndpoint -> Maybe Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Text
serverName :: Maybe Text
$sel:serverName:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
serverName} -> Maybe Text
serverName) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Text
a -> ModifyEndpoint
s {$sel:serverName:ModifyEndpoint' :: Maybe Text
serverName = Maybe Text
a} :: ModifyEndpoint)

-- | Settings in JSON format for the source and target Microsoft SQL Server
-- endpoint. For information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html#CHAP_Source.SQLServer.ConnectionAttrib Extra connection attributes when using SQL Server as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SQLServer.html#CHAP_Target.SQLServer.ConnectionAttrib Extra connection attributes when using SQL Server as a target for DMS>
-- in the /Database Migration Service User Guide./
modifyEndpoint_microsoftSQLServerSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe MicrosoftSQLServerSettings)
modifyEndpoint_microsoftSQLServerSettings :: (Maybe MicrosoftSQLServerSettings
 -> f (Maybe MicrosoftSQLServerSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_microsoftSQLServerSettings = (ModifyEndpoint -> Maybe MicrosoftSQLServerSettings)
-> (ModifyEndpoint
    -> Maybe MicrosoftSQLServerSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe MicrosoftSQLServerSettings)
     (Maybe MicrosoftSQLServerSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings :: Maybe MicrosoftSQLServerSettings
$sel:microsoftSQLServerSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings} -> Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe MicrosoftSQLServerSettings
a -> ModifyEndpoint
s {$sel:microsoftSQLServerSettings:ModifyEndpoint' :: Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings = Maybe MicrosoftSQLServerSettings
a} :: ModifyEndpoint)

-- | The Amazon Resource Name (ARN) of the certificate used for SSL
-- connection.
modifyEndpoint_certificateArn :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_certificateArn :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_certificateArn = (ModifyEndpoint -> Maybe Text)
-> (ModifyEndpoint -> Maybe Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Text
certificateArn :: Maybe Text
$sel:certificateArn:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
certificateArn} -> Maybe Text
certificateArn) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Text
a -> ModifyEndpoint
s {$sel:certificateArn:ModifyEndpoint' :: Maybe Text
certificateArn = Maybe Text
a} :: ModifyEndpoint)

-- | The Amazon Resource Name (ARN) for the IAM role you want to use to
-- modify the endpoint. The role must allow the @iam:PassRole@ action.
modifyEndpoint_serviceAccessRoleArn :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_serviceAccessRoleArn :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_serviceAccessRoleArn = (ModifyEndpoint -> Maybe Text)
-> (ModifyEndpoint -> Maybe Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Text
serviceAccessRoleArn :: Maybe Text
$sel:serviceAccessRoleArn:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
serviceAccessRoleArn} -> Maybe Text
serviceAccessRoleArn) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Text
a -> ModifyEndpoint
s {$sel:serviceAccessRoleArn:ModifyEndpoint' :: Maybe Text
serviceAccessRoleArn = Maybe Text
a} :: ModifyEndpoint)

-- | Settings in JSON format for the source DocumentDB endpoint. For more
-- information about the available settings, see the configuration
-- properties section in
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.DocumentDB.html Using DocumentDB as a Target for Database Migration Service>
-- in the /Database Migration Service User Guide./
modifyEndpoint_docDbSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe DocDbSettings)
modifyEndpoint_docDbSettings :: (Maybe DocDbSettings -> f (Maybe DocDbSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_docDbSettings = (ModifyEndpoint -> Maybe DocDbSettings)
-> (ModifyEndpoint -> Maybe DocDbSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe DocDbSettings)
     (Maybe DocDbSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe DocDbSettings
docDbSettings :: Maybe DocDbSettings
$sel:docDbSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe DocDbSettings
docDbSettings} -> Maybe DocDbSettings
docDbSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe DocDbSettings
a -> ModifyEndpoint
s {$sel:docDbSettings:ModifyEndpoint' :: Maybe DocDbSettings
docDbSettings = Maybe DocDbSettings
a} :: ModifyEndpoint)

-- | Settings in JSON format for the source and target PostgreSQL endpoint.
-- For information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib Extra connection attributes when using PostgreSQL as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html#CHAP_Target.PostgreSQL.ConnectionAttrib Extra connection attributes when using PostgreSQL as a target for DMS>
-- in the /Database Migration Service User Guide./
modifyEndpoint_postgreSQLSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe PostgreSQLSettings)
modifyEndpoint_postgreSQLSettings :: (Maybe PostgreSQLSettings -> f (Maybe PostgreSQLSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_postgreSQLSettings = (ModifyEndpoint -> Maybe PostgreSQLSettings)
-> (ModifyEndpoint -> Maybe PostgreSQLSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe PostgreSQLSettings)
     (Maybe PostgreSQLSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe PostgreSQLSettings
postgreSQLSettings :: Maybe PostgreSQLSettings
$sel:postgreSQLSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe PostgreSQLSettings
postgreSQLSettings} -> Maybe PostgreSQLSettings
postgreSQLSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe PostgreSQLSettings
a -> ModifyEndpoint
s {$sel:postgreSQLSettings:ModifyEndpoint' :: Maybe PostgreSQLSettings
postgreSQLSettings = Maybe PostgreSQLSettings
a} :: ModifyEndpoint)

-- | Additional attributes associated with the connection. To reset this
-- parameter, pass the empty string (\"\") as an argument.
modifyEndpoint_extraConnectionAttributes :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_extraConnectionAttributes :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_extraConnectionAttributes = (ModifyEndpoint -> Maybe Text)
-> (ModifyEndpoint -> Maybe Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Text
extraConnectionAttributes :: Maybe Text
$sel:extraConnectionAttributes:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
extraConnectionAttributes} -> Maybe Text
extraConnectionAttributes) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Text
a -> ModifyEndpoint
s {$sel:extraConnectionAttributes:ModifyEndpoint' :: Maybe Text
extraConnectionAttributes = Maybe Text
a} :: ModifyEndpoint)

-- | Settings in JSON format for the target Apache Kafka endpoint. For more
-- information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kafka.html#CHAP_Target.Kafka.ObjectMapping Using object mapping to migrate data to a Kafka topic>
-- in the /Database Migration Service User Guide./
modifyEndpoint_kafkaSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe KafkaSettings)
modifyEndpoint_kafkaSettings :: (Maybe KafkaSettings -> f (Maybe KafkaSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_kafkaSettings = (ModifyEndpoint -> Maybe KafkaSettings)
-> (ModifyEndpoint -> Maybe KafkaSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe KafkaSettings)
     (Maybe KafkaSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe KafkaSettings
kafkaSettings :: Maybe KafkaSettings
$sel:kafkaSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe KafkaSettings
kafkaSettings} -> Maybe KafkaSettings
kafkaSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe KafkaSettings
a -> ModifyEndpoint
s {$sel:kafkaSettings:ModifyEndpoint' :: Maybe KafkaSettings
kafkaSettings = Maybe KafkaSettings
a} :: ModifyEndpoint)

-- | Settings in JSON format for the source and target Oracle endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.ConnectionAttrib Extra connection attributes when using Oracle as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html#CHAP_Target.Oracle.ConnectionAttrib Extra connection attributes when using Oracle as a target for DMS>
-- in the /Database Migration Service User Guide./
modifyEndpoint_oracleSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe OracleSettings)
modifyEndpoint_oracleSettings :: (Maybe OracleSettings -> f (Maybe OracleSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_oracleSettings = (ModifyEndpoint -> Maybe OracleSettings)
-> (ModifyEndpoint -> Maybe OracleSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe OracleSettings)
     (Maybe OracleSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe OracleSettings
oracleSettings :: Maybe OracleSettings
$sel:oracleSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe OracleSettings
oracleSettings} -> Maybe OracleSettings
oracleSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe OracleSettings
a -> ModifyEndpoint
s {$sel:oracleSettings:ModifyEndpoint' :: Maybe OracleSettings
oracleSettings = Maybe OracleSettings
a} :: ModifyEndpoint)

-- | The type of endpoint. Valid values are @source@ and @target@.
modifyEndpoint_endpointType :: Lens.Lens' ModifyEndpoint (Prelude.Maybe ReplicationEndpointTypeValue)
modifyEndpoint_endpointType :: (Maybe ReplicationEndpointTypeValue
 -> f (Maybe ReplicationEndpointTypeValue))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_endpointType = (ModifyEndpoint -> Maybe ReplicationEndpointTypeValue)
-> (ModifyEndpoint
    -> Maybe ReplicationEndpointTypeValue -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe ReplicationEndpointTypeValue)
     (Maybe ReplicationEndpointTypeValue)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe ReplicationEndpointTypeValue
endpointType :: Maybe ReplicationEndpointTypeValue
$sel:endpointType:ModifyEndpoint' :: ModifyEndpoint -> Maybe ReplicationEndpointTypeValue
endpointType} -> Maybe ReplicationEndpointTypeValue
endpointType) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe ReplicationEndpointTypeValue
a -> ModifyEndpoint
s {$sel:endpointType:ModifyEndpoint' :: Maybe ReplicationEndpointTypeValue
endpointType = Maybe ReplicationEndpointTypeValue
a} :: ModifyEndpoint)

-- | Undocumented member.
modifyEndpoint_redshiftSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe RedshiftSettings)
modifyEndpoint_redshiftSettings :: (Maybe RedshiftSettings -> f (Maybe RedshiftSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_redshiftSettings = (ModifyEndpoint -> Maybe RedshiftSettings)
-> (ModifyEndpoint -> Maybe RedshiftSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe RedshiftSettings)
     (Maybe RedshiftSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe RedshiftSettings
redshiftSettings :: Maybe RedshiftSettings
$sel:redshiftSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe RedshiftSettings
redshiftSettings} -> Maybe RedshiftSettings
redshiftSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe RedshiftSettings
a -> ModifyEndpoint
s {$sel:redshiftSettings:ModifyEndpoint' :: Maybe RedshiftSettings
redshiftSettings = Maybe RedshiftSettings
a} :: ModifyEndpoint)

-- | Settings in JSON format for the target Elasticsearch endpoint. For more
-- information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Elasticsearch.html#CHAP_Target.Elasticsearch.Configuration Extra Connection Attributes When Using Elasticsearch as a Target for DMS>
-- in the /Database Migration Service User Guide./
modifyEndpoint_elasticsearchSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe ElasticsearchSettings)
modifyEndpoint_elasticsearchSettings :: (Maybe ElasticsearchSettings -> f (Maybe ElasticsearchSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_elasticsearchSettings = (ModifyEndpoint -> Maybe ElasticsearchSettings)
-> (ModifyEndpoint
    -> Maybe ElasticsearchSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe ElasticsearchSettings)
     (Maybe ElasticsearchSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe ElasticsearchSettings
elasticsearchSettings :: Maybe ElasticsearchSettings
$sel:elasticsearchSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe ElasticsearchSettings
elasticsearchSettings} -> Maybe ElasticsearchSettings
elasticsearchSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe ElasticsearchSettings
a -> ModifyEndpoint
s {$sel:elasticsearchSettings:ModifyEndpoint' :: Maybe ElasticsearchSettings
elasticsearchSettings = Maybe ElasticsearchSettings
a} :: ModifyEndpoint)

-- | If this attribute is Y, the current call to @ModifyEndpoint@ replaces
-- all existing endpoint settings with the exact settings that you specify
-- in this call. If this attribute is N, the current call to
-- @ModifyEndpoint@ does two things:
--
-- -   It replaces any endpoint settings that already exist with new
--     values, for settings with the same names.
--
-- -   It creates new endpoint settings that you specify in the call, for
--     settings with different names.
--
-- For example, if you call
-- @create-endpoint ... --endpoint-settings \'{\"a\":1}\' ...@, the
-- endpoint has the following endpoint settings: @\'{\"a\":1}\'@. If you
-- then call @modify-endpoint ... --endpoint-settings \'{\"b\":2}\' ...@
-- for the same endpoint, the endpoint has the following settings:
-- @\'{\"a\":1,\"b\":2}\'@.
--
-- However, suppose that you follow this with a call to
-- @modify-endpoint ... --endpoint-settings \'{\"b\":2}\' --exact-settings ...@
-- for that same endpoint again. Then the endpoint has the following
-- settings: @\'{\"b\":2}\'@. All existing settings are replaced with the
-- exact settings that you specify.
modifyEndpoint_exactSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Bool)
modifyEndpoint_exactSettings :: (Maybe Bool -> f (Maybe Bool))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_exactSettings = (ModifyEndpoint -> Maybe Bool)
-> (ModifyEndpoint -> Maybe Bool -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Bool
exactSettings :: Maybe Bool
$sel:exactSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe Bool
exactSettings} -> Maybe Bool
exactSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Bool
a -> ModifyEndpoint
s {$sel:exactSettings:ModifyEndpoint' :: Maybe Bool
exactSettings = Maybe Bool
a} :: ModifyEndpoint)

-- | The user name to be used to login to the endpoint database.
modifyEndpoint_username :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_username :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_username = (ModifyEndpoint -> Maybe Text)
-> (ModifyEndpoint -> Maybe Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Text
username :: Maybe Text
$sel:username:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
username} -> Maybe Text
username) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Text
a -> ModifyEndpoint
s {$sel:username:ModifyEndpoint' :: Maybe Text
username = Maybe Text
a} :: ModifyEndpoint)

-- | The external table definition.
modifyEndpoint_externalTableDefinition :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_externalTableDefinition :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_externalTableDefinition = (ModifyEndpoint -> Maybe Text)
-> (ModifyEndpoint -> Maybe Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Text
externalTableDefinition :: Maybe Text
$sel:externalTableDefinition:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
externalTableDefinition} -> Maybe Text
externalTableDefinition) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Text
a -> ModifyEndpoint
s {$sel:externalTableDefinition:ModifyEndpoint' :: Maybe Text
externalTableDefinition = Maybe Text
a} :: ModifyEndpoint)

-- | The type of engine for the endpoint. Valid values, depending on the
-- EndpointType, include @\"mysql\"@, @\"oracle\"@, @\"postgres\"@,
-- @\"mariadb\"@, @\"aurora\"@, @\"aurora-postgresql\"@, @\"redshift\"@,
-- @\"s3\"@, @\"db2\"@, @\"azuredb\"@, @\"sybase\"@, @\"dynamodb\"@,
-- @\"mongodb\"@, @\"kinesis\"@, @\"kafka\"@, @\"elasticsearch\"@,
-- @\"documentdb\"@, @\"sqlserver\"@, and @\"neptune\"@.
modifyEndpoint_engineName :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_engineName :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_engineName = (ModifyEndpoint -> Maybe Text)
-> (ModifyEndpoint -> Maybe Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Text
engineName :: Maybe Text
$sel:engineName:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
engineName} -> Maybe Text
engineName) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Text
a -> ModifyEndpoint
s {$sel:engineName:ModifyEndpoint' :: Maybe Text
engineName = Maybe Text
a} :: ModifyEndpoint)

-- | Settings in JSON format for the Redis target endpoint.
modifyEndpoint_redisSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe RedisSettings)
modifyEndpoint_redisSettings :: (Maybe RedisSettings -> f (Maybe RedisSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_redisSettings = (ModifyEndpoint -> Maybe RedisSettings)
-> (ModifyEndpoint -> Maybe RedisSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe RedisSettings)
     (Maybe RedisSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe RedisSettings
redisSettings :: Maybe RedisSettings
$sel:redisSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe RedisSettings
redisSettings} -> Maybe RedisSettings
redisSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe RedisSettings
a -> ModifyEndpoint
s {$sel:redisSettings:ModifyEndpoint' :: Maybe RedisSettings
redisSettings = Maybe RedisSettings
a} :: ModifyEndpoint)

-- | Settings in JSON format for the target Amazon Neptune endpoint. For more
-- information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Neptune.html#CHAP_Target.Neptune.EndpointSettings Specifying graph-mapping rules using Gremlin and R2RML for Amazon Neptune as a target>
-- in the /Database Migration Service User Guide./
modifyEndpoint_neptuneSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe NeptuneSettings)
modifyEndpoint_neptuneSettings :: (Maybe NeptuneSettings -> f (Maybe NeptuneSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_neptuneSettings = (ModifyEndpoint -> Maybe NeptuneSettings)
-> (ModifyEndpoint -> Maybe NeptuneSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe NeptuneSettings)
     (Maybe NeptuneSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe NeptuneSettings
neptuneSettings :: Maybe NeptuneSettings
$sel:neptuneSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe NeptuneSettings
neptuneSettings} -> Maybe NeptuneSettings
neptuneSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe NeptuneSettings
a -> ModifyEndpoint
s {$sel:neptuneSettings:ModifyEndpoint' :: Maybe NeptuneSettings
neptuneSettings = Maybe NeptuneSettings
a} :: ModifyEndpoint)

-- | Settings in JSON format for the source IBM Db2 LUW endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.DB2.html#CHAP_Source.DB2.ConnectionAttrib Extra connection attributes when using Db2 LUW as a source for DMS>
-- in the /Database Migration Service User Guide./
modifyEndpoint_iBMDb2Settings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe IBMDb2Settings)
modifyEndpoint_iBMDb2Settings :: (Maybe IBMDb2Settings -> f (Maybe IBMDb2Settings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_iBMDb2Settings = (ModifyEndpoint -> Maybe IBMDb2Settings)
-> (ModifyEndpoint -> Maybe IBMDb2Settings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe IBMDb2Settings)
     (Maybe IBMDb2Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe IBMDb2Settings
iBMDb2Settings :: Maybe IBMDb2Settings
$sel:iBMDb2Settings:ModifyEndpoint' :: ModifyEndpoint -> Maybe IBMDb2Settings
iBMDb2Settings} -> Maybe IBMDb2Settings
iBMDb2Settings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe IBMDb2Settings
a -> ModifyEndpoint
s {$sel:iBMDb2Settings:ModifyEndpoint' :: Maybe IBMDb2Settings
iBMDb2Settings = Maybe IBMDb2Settings
a} :: ModifyEndpoint)

-- | Settings in JSON format for the source MongoDB endpoint. For more
-- information about the available settings, see the configuration
-- properties section in
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MongoDB.html#CHAP_Source.MongoDB.Configuration Endpoint configuration settings when using MongoDB as a source for Database Migration Service>
-- in the /Database Migration Service User Guide./
modifyEndpoint_mongoDbSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe MongoDbSettings)
modifyEndpoint_mongoDbSettings :: (Maybe MongoDbSettings -> f (Maybe MongoDbSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_mongoDbSettings = (ModifyEndpoint -> Maybe MongoDbSettings)
-> (ModifyEndpoint -> Maybe MongoDbSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe MongoDbSettings)
     (Maybe MongoDbSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe MongoDbSettings
mongoDbSettings :: Maybe MongoDbSettings
$sel:mongoDbSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe MongoDbSettings
mongoDbSettings} -> Maybe MongoDbSettings
mongoDbSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe MongoDbSettings
a -> ModifyEndpoint
s {$sel:mongoDbSettings:ModifyEndpoint' :: Maybe MongoDbSettings
mongoDbSettings = Maybe MongoDbSettings
a} :: ModifyEndpoint)

-- | The SSL mode used to connect to the endpoint. The default value is
-- @none@.
modifyEndpoint_sslMode :: Lens.Lens' ModifyEndpoint (Prelude.Maybe DmsSslModeValue)
modifyEndpoint_sslMode :: (Maybe DmsSslModeValue -> f (Maybe DmsSslModeValue))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_sslMode = (ModifyEndpoint -> Maybe DmsSslModeValue)
-> (ModifyEndpoint -> Maybe DmsSslModeValue -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe DmsSslModeValue)
     (Maybe DmsSslModeValue)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe DmsSslModeValue
sslMode :: Maybe DmsSslModeValue
$sel:sslMode:ModifyEndpoint' :: ModifyEndpoint -> Maybe DmsSslModeValue
sslMode} -> Maybe DmsSslModeValue
sslMode) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe DmsSslModeValue
a -> ModifyEndpoint
s {$sel:sslMode:ModifyEndpoint' :: Maybe DmsSslModeValue
sslMode = Maybe DmsSslModeValue
a} :: ModifyEndpoint)

-- | The password to be used to login to the endpoint database.
modifyEndpoint_password :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_password :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_password = (ModifyEndpoint -> Maybe (Sensitive Text))
-> (ModifyEndpoint -> Maybe (Sensitive Text) -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe (Sensitive Text)
password :: Maybe (Sensitive Text)
$sel:password:ModifyEndpoint' :: ModifyEndpoint -> Maybe (Sensitive Text)
password} -> Maybe (Sensitive Text)
password) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe (Sensitive Text)
a -> ModifyEndpoint
s {$sel:password:ModifyEndpoint' :: Maybe (Sensitive Text)
password = Maybe (Sensitive Text)
a} :: ModifyEndpoint) ((Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
 -> ModifyEndpoint -> f ModifyEndpoint)
-> ((Maybe Text -> f (Maybe Text))
    -> Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
-> (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint
-> f ModifyEndpoint
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso (Sensitive Text) (Sensitive Text) Text Text
-> Iso
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
     (Maybe Text)
     (Maybe Text)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso (Sensitive Text) (Sensitive Text) Text Text
forall a. Iso' (Sensitive a) a
Core._Sensitive

-- | Settings in JSON format for the source and target SAP ASE endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html#CHAP_Source.SAP.ConnectionAttrib Extra connection attributes when using SAP ASE as a source for DMS>
-- and
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SAP.html#CHAP_Target.SAP.ConnectionAttrib Extra connection attributes when using SAP ASE as a target for DMS>
-- in the /Database Migration Service User Guide./
modifyEndpoint_sybaseSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe SybaseSettings)
modifyEndpoint_sybaseSettings :: (Maybe SybaseSettings -> f (Maybe SybaseSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_sybaseSettings = (ModifyEndpoint -> Maybe SybaseSettings)
-> (ModifyEndpoint -> Maybe SybaseSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe SybaseSettings)
     (Maybe SybaseSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe SybaseSettings
sybaseSettings :: Maybe SybaseSettings
$sel:sybaseSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe SybaseSettings
sybaseSettings} -> Maybe SybaseSettings
sybaseSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe SybaseSettings
a -> ModifyEndpoint
s {$sel:sybaseSettings:ModifyEndpoint' :: Maybe SybaseSettings
sybaseSettings = Maybe SybaseSettings
a} :: ModifyEndpoint)

-- | The name of the endpoint database. For a MySQL source or target
-- endpoint, do not specify DatabaseName.
modifyEndpoint_databaseName :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_databaseName :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_databaseName = (ModifyEndpoint -> Maybe Text)
-> (ModifyEndpoint -> Maybe Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Text
databaseName :: Maybe Text
$sel:databaseName:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
databaseName} -> Maybe Text
databaseName) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Text
a -> ModifyEndpoint
s {$sel:databaseName:ModifyEndpoint' :: Maybe Text
databaseName = Maybe Text
a} :: ModifyEndpoint)

-- | Settings in JSON format for the target Amazon S3 endpoint. For more
-- information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html#CHAP_Target.S3.Configuring Extra Connection Attributes When Using Amazon S3 as a Target for DMS>
-- in the /Database Migration Service User Guide./
modifyEndpoint_s3Settings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe S3Settings)
modifyEndpoint_s3Settings :: (Maybe S3Settings -> f (Maybe S3Settings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_s3Settings = (ModifyEndpoint -> Maybe S3Settings)
-> (ModifyEndpoint -> Maybe S3Settings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint ModifyEndpoint (Maybe S3Settings) (Maybe S3Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe S3Settings
s3Settings :: Maybe S3Settings
$sel:s3Settings:ModifyEndpoint' :: ModifyEndpoint -> Maybe S3Settings
s3Settings} -> Maybe S3Settings
s3Settings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe S3Settings
a -> ModifyEndpoint
s {$sel:s3Settings:ModifyEndpoint' :: Maybe S3Settings
s3Settings = Maybe S3Settings
a} :: ModifyEndpoint)

-- | Settings in JSON format for the target endpoint for Amazon Kinesis Data
-- Streams. For more information about the available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kinesis.html#CHAP_Target.Kinesis.ObjectMapping Using object mapping to migrate data to a Kinesis data stream>
-- in the /Database Migration Service User Guide./
modifyEndpoint_kinesisSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe KinesisSettings)
modifyEndpoint_kinesisSettings :: (Maybe KinesisSettings -> f (Maybe KinesisSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_kinesisSettings = (ModifyEndpoint -> Maybe KinesisSettings)
-> (ModifyEndpoint -> Maybe KinesisSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe KinesisSettings)
     (Maybe KinesisSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe KinesisSettings
kinesisSettings :: Maybe KinesisSettings
$sel:kinesisSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe KinesisSettings
kinesisSettings} -> Maybe KinesisSettings
kinesisSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe KinesisSettings
a -> ModifyEndpoint
s {$sel:kinesisSettings:ModifyEndpoint' :: Maybe KinesisSettings
kinesisSettings = Maybe KinesisSettings
a} :: ModifyEndpoint)

-- | The database endpoint identifier. Identifiers must begin with a letter
-- and must contain only ASCII letters, digits, and hyphens. They can\'t
-- end with a hyphen or contain two consecutive hyphens.
modifyEndpoint_endpointIdentifier :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Text)
modifyEndpoint_endpointIdentifier :: (Maybe Text -> f (Maybe Text))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_endpointIdentifier = (ModifyEndpoint -> Maybe Text)
-> (ModifyEndpoint -> Maybe Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Text
endpointIdentifier :: Maybe Text
$sel:endpointIdentifier:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
endpointIdentifier} -> Maybe Text
endpointIdentifier) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Text
a -> ModifyEndpoint
s {$sel:endpointIdentifier:ModifyEndpoint' :: Maybe Text
endpointIdentifier = Maybe Text
a} :: ModifyEndpoint)

-- | Settings in JSON format for the target Amazon DynamoDB endpoint. For
-- information about other available settings, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.DynamoDB.html#CHAP_Target.DynamoDB.ObjectMapping Using Object Mapping to Migrate Data to DynamoDB>
-- in the /Database Migration Service User Guide./
modifyEndpoint_dynamoDbSettings :: Lens.Lens' ModifyEndpoint (Prelude.Maybe DynamoDbSettings)
modifyEndpoint_dynamoDbSettings :: (Maybe DynamoDbSettings -> f (Maybe DynamoDbSettings))
-> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_dynamoDbSettings = (ModifyEndpoint -> Maybe DynamoDbSettings)
-> (ModifyEndpoint -> Maybe DynamoDbSettings -> ModifyEndpoint)
-> Lens
     ModifyEndpoint
     ModifyEndpoint
     (Maybe DynamoDbSettings)
     (Maybe DynamoDbSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe DynamoDbSettings
dynamoDbSettings :: Maybe DynamoDbSettings
$sel:dynamoDbSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe DynamoDbSettings
dynamoDbSettings} -> Maybe DynamoDbSettings
dynamoDbSettings) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe DynamoDbSettings
a -> ModifyEndpoint
s {$sel:dynamoDbSettings:ModifyEndpoint' :: Maybe DynamoDbSettings
dynamoDbSettings = Maybe DynamoDbSettings
a} :: ModifyEndpoint)

-- | The port used by the endpoint database.
modifyEndpoint_port :: Lens.Lens' ModifyEndpoint (Prelude.Maybe Prelude.Int)
modifyEndpoint_port :: (Maybe Int -> f (Maybe Int)) -> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_port = (ModifyEndpoint -> Maybe Int)
-> (ModifyEndpoint -> Maybe Int -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Maybe Int
port :: Maybe Int
$sel:port:ModifyEndpoint' :: ModifyEndpoint -> Maybe Int
port} -> Maybe Int
port) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Maybe Int
a -> ModifyEndpoint
s {$sel:port:ModifyEndpoint' :: Maybe Int
port = Maybe Int
a} :: ModifyEndpoint)

-- | The Amazon Resource Name (ARN) string that uniquely identifies the
-- endpoint.
modifyEndpoint_endpointArn :: Lens.Lens' ModifyEndpoint Prelude.Text
modifyEndpoint_endpointArn :: (Text -> f Text) -> ModifyEndpoint -> f ModifyEndpoint
modifyEndpoint_endpointArn = (ModifyEndpoint -> Text)
-> (ModifyEndpoint -> Text -> ModifyEndpoint)
-> Lens ModifyEndpoint ModifyEndpoint Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpoint' {Text
endpointArn :: Text
$sel:endpointArn:ModifyEndpoint' :: ModifyEndpoint -> Text
endpointArn} -> Text
endpointArn) (\s :: ModifyEndpoint
s@ModifyEndpoint' {} Text
a -> ModifyEndpoint
s {$sel:endpointArn:ModifyEndpoint' :: Text
endpointArn = Text
a} :: ModifyEndpoint)

instance Core.AWSRequest ModifyEndpoint where
  type
    AWSResponse ModifyEndpoint =
      ModifyEndpointResponse
  request :: ModifyEndpoint -> Request ModifyEndpoint
request = Service -> ModifyEndpoint -> Request ModifyEndpoint
forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON Service
defaultService
  response :: Logger
-> Service
-> Proxy ModifyEndpoint
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse ModifyEndpoint)))
response =
    (Int
 -> ResponseHeaders
 -> Object
 -> Either String (AWSResponse ModifyEndpoint))
-> Logger
-> Service
-> Proxy ModifyEndpoint
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse ModifyEndpoint)))
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Endpoint -> Int -> ModifyEndpointResponse
ModifyEndpointResponse'
            (Maybe Endpoint -> Int -> ModifyEndpointResponse)
-> Either String (Maybe Endpoint)
-> Either String (Int -> ModifyEndpointResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Either String (Maybe Endpoint)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"Endpoint")
            Either String (Int -> ModifyEndpointResponse)
-> Either String Int -> Either String ModifyEndpointResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable ModifyEndpoint

instance Prelude.NFData ModifyEndpoint

instance Core.ToHeaders ModifyEndpoint where
  toHeaders :: ModifyEndpoint -> ResponseHeaders
toHeaders =
    ResponseHeaders -> ModifyEndpoint -> ResponseHeaders
forall a b. a -> b -> a
Prelude.const
      ( [ResponseHeaders] -> ResponseHeaders
forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              HeaderName -> ByteString -> ResponseHeaders
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Core.=# ( ByteString
"AmazonDMSv20160101.ModifyEndpoint" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              HeaderName -> ByteString -> ResponseHeaders
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Core.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Core.ToJSON ModifyEndpoint where
  toJSON :: ModifyEndpoint -> Value
toJSON ModifyEndpoint' {Maybe Bool
Maybe Int
Maybe Text
Maybe (Sensitive Text)
Maybe DmsSslModeValue
Maybe DmsTransferSettings
Maybe DynamoDbSettings
Maybe ElasticsearchSettings
Maybe IBMDb2Settings
Maybe KinesisSettings
Maybe KafkaSettings
Maybe NeptuneSettings
Maybe MongoDbSettings
Maybe DocDbSettings
Maybe OracleSettings
Maybe PostgreSQLSettings
Maybe RedshiftSettings
Maybe ReplicationEndpointTypeValue
Maybe S3Settings
Maybe MicrosoftSQLServerSettings
Maybe RedisSettings
Maybe SybaseSettings
Maybe MySQLSettings
Text
endpointArn :: Text
port :: Maybe Int
dynamoDbSettings :: Maybe DynamoDbSettings
endpointIdentifier :: Maybe Text
kinesisSettings :: Maybe KinesisSettings
s3Settings :: Maybe S3Settings
databaseName :: Maybe Text
sybaseSettings :: Maybe SybaseSettings
password :: Maybe (Sensitive Text)
sslMode :: Maybe DmsSslModeValue
mongoDbSettings :: Maybe MongoDbSettings
iBMDb2Settings :: Maybe IBMDb2Settings
neptuneSettings :: Maybe NeptuneSettings
redisSettings :: Maybe RedisSettings
engineName :: Maybe Text
externalTableDefinition :: Maybe Text
username :: Maybe Text
exactSettings :: Maybe Bool
elasticsearchSettings :: Maybe ElasticsearchSettings
redshiftSettings :: Maybe RedshiftSettings
endpointType :: Maybe ReplicationEndpointTypeValue
oracleSettings :: Maybe OracleSettings
kafkaSettings :: Maybe KafkaSettings
extraConnectionAttributes :: Maybe Text
postgreSQLSettings :: Maybe PostgreSQLSettings
docDbSettings :: Maybe DocDbSettings
serviceAccessRoleArn :: Maybe Text
certificateArn :: Maybe Text
microsoftSQLServerSettings :: Maybe MicrosoftSQLServerSettings
serverName :: Maybe Text
mySQLSettings :: Maybe MySQLSettings
dmsTransferSettings :: Maybe DmsTransferSettings
$sel:endpointArn:ModifyEndpoint' :: ModifyEndpoint -> Text
$sel:port:ModifyEndpoint' :: ModifyEndpoint -> Maybe Int
$sel:dynamoDbSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe DynamoDbSettings
$sel:endpointIdentifier:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
$sel:kinesisSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe KinesisSettings
$sel:s3Settings:ModifyEndpoint' :: ModifyEndpoint -> Maybe S3Settings
$sel:databaseName:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
$sel:sybaseSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe SybaseSettings
$sel:password:ModifyEndpoint' :: ModifyEndpoint -> Maybe (Sensitive Text)
$sel:sslMode:ModifyEndpoint' :: ModifyEndpoint -> Maybe DmsSslModeValue
$sel:mongoDbSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe MongoDbSettings
$sel:iBMDb2Settings:ModifyEndpoint' :: ModifyEndpoint -> Maybe IBMDb2Settings
$sel:neptuneSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe NeptuneSettings
$sel:redisSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe RedisSettings
$sel:engineName:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
$sel:externalTableDefinition:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
$sel:username:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
$sel:exactSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe Bool
$sel:elasticsearchSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe ElasticsearchSettings
$sel:redshiftSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe RedshiftSettings
$sel:endpointType:ModifyEndpoint' :: ModifyEndpoint -> Maybe ReplicationEndpointTypeValue
$sel:oracleSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe OracleSettings
$sel:kafkaSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe KafkaSettings
$sel:extraConnectionAttributes:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
$sel:postgreSQLSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe PostgreSQLSettings
$sel:docDbSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe DocDbSettings
$sel:serviceAccessRoleArn:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
$sel:certificateArn:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
$sel:microsoftSQLServerSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe MicrosoftSQLServerSettings
$sel:serverName:ModifyEndpoint' :: ModifyEndpoint -> Maybe Text
$sel:mySQLSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe MySQLSettings
$sel:dmsTransferSettings:ModifyEndpoint' :: ModifyEndpoint -> Maybe DmsTransferSettings
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"DmsTransferSettings" Text -> DmsTransferSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DmsTransferSettings -> Pair)
-> Maybe DmsTransferSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DmsTransferSettings
dmsTransferSettings,
            (Text
"MySQLSettings" Text -> MySQLSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (MySQLSettings -> Pair) -> Maybe MySQLSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MySQLSettings
mySQLSettings,
            (Text
"ServerName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
serverName,
            (Text
"MicrosoftSQLServerSettings" Text -> MicrosoftSQLServerSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (MicrosoftSQLServerSettings -> Pair)
-> Maybe MicrosoftSQLServerSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings,
            (Text
"CertificateArn" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
certificateArn,
            (Text
"ServiceAccessRoleArn" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
serviceAccessRoleArn,
            (Text
"DocDbSettings" Text -> DocDbSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (DocDbSettings -> Pair) -> Maybe DocDbSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DocDbSettings
docDbSettings,
            (Text
"PostgreSQLSettings" Text -> PostgreSQLSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (PostgreSQLSettings -> Pair)
-> Maybe PostgreSQLSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PostgreSQLSettings
postgreSQLSettings,
            (Text
"ExtraConnectionAttributes" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
extraConnectionAttributes,
            (Text
"KafkaSettings" Text -> KafkaSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (KafkaSettings -> Pair) -> Maybe KafkaSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe KafkaSettings
kafkaSettings,
            (Text
"OracleSettings" Text -> OracleSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (OracleSettings -> Pair) -> Maybe OracleSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OracleSettings
oracleSettings,
            (Text
"EndpointType" Text -> ReplicationEndpointTypeValue -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (ReplicationEndpointTypeValue -> Pair)
-> Maybe ReplicationEndpointTypeValue -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ReplicationEndpointTypeValue
endpointType,
            (Text
"RedshiftSettings" Text -> RedshiftSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (RedshiftSettings -> Pair) -> Maybe RedshiftSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RedshiftSettings
redshiftSettings,
            (Text
"ElasticsearchSettings" Text -> ElasticsearchSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (ElasticsearchSettings -> Pair)
-> Maybe ElasticsearchSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ElasticsearchSettings
elasticsearchSettings,
            (Text
"ExactSettings" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
exactSettings,
            (Text
"Username" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
username,
            (Text
"ExternalTableDefinition" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
externalTableDefinition,
            (Text
"EngineName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
engineName,
            (Text
"RedisSettings" Text -> RedisSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (RedisSettings -> Pair) -> Maybe RedisSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RedisSettings
redisSettings,
            (Text
"NeptuneSettings" Text -> NeptuneSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (NeptuneSettings -> Pair) -> Maybe NeptuneSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe NeptuneSettings
neptuneSettings,
            (Text
"IBMDb2Settings" Text -> IBMDb2Settings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (IBMDb2Settings -> Pair) -> Maybe IBMDb2Settings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe IBMDb2Settings
iBMDb2Settings,
            (Text
"MongoDbSettings" Text -> MongoDbSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (MongoDbSettings -> Pair) -> Maybe MongoDbSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MongoDbSettings
mongoDbSettings,
            (Text
"SslMode" Text -> DmsSslModeValue -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (DmsSslModeValue -> Pair) -> Maybe DmsSslModeValue -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DmsSslModeValue
sslMode,
            (Text
"Password" Text -> Sensitive Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Sensitive Text -> Pair) -> Maybe (Sensitive Text) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive Text)
password,
            (Text
"SybaseSettings" Text -> SybaseSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (SybaseSettings -> Pair) -> Maybe SybaseSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SybaseSettings
sybaseSettings,
            (Text
"DatabaseName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
databaseName,
            (Text
"S3Settings" Text -> S3Settings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (S3Settings -> Pair) -> Maybe S3Settings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe S3Settings
s3Settings,
            (Text
"KinesisSettings" Text -> KinesisSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (KinesisSettings -> Pair) -> Maybe KinesisSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe KinesisSettings
kinesisSettings,
            (Text
"EndpointIdentifier" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
endpointIdentifier,
            (Text
"DynamoDbSettings" Text -> DynamoDbSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DynamoDbSettings -> Pair) -> Maybe DynamoDbSettings -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DynamoDbSettings
dynamoDbSettings,
            (Text
"Port" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
port,
            Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just (Text
"EndpointArn" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= Text
endpointArn)
          ]
      )

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

instance Core.ToQuery ModifyEndpoint where
  toQuery :: ModifyEndpoint -> QueryString
toQuery = QueryString -> ModifyEndpoint -> QueryString
forall a b. a -> b -> a
Prelude.const QueryString
forall a. Monoid a => a
Prelude.mempty

-- |
--
-- /See:/ 'newModifyEndpointResponse' smart constructor.
data ModifyEndpointResponse = ModifyEndpointResponse'
  { -- | The modified endpoint.
    ModifyEndpointResponse -> Maybe Endpoint
endpoint :: Prelude.Maybe Endpoint,
    -- | The response's http status code.
    ModifyEndpointResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ModifyEndpointResponse -> ModifyEndpointResponse -> Bool
(ModifyEndpointResponse -> ModifyEndpointResponse -> Bool)
-> (ModifyEndpointResponse -> ModifyEndpointResponse -> Bool)
-> Eq ModifyEndpointResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyEndpointResponse -> ModifyEndpointResponse -> Bool
$c/= :: ModifyEndpointResponse -> ModifyEndpointResponse -> Bool
== :: ModifyEndpointResponse -> ModifyEndpointResponse -> Bool
$c== :: ModifyEndpointResponse -> ModifyEndpointResponse -> Bool
Prelude.Eq, Int -> ModifyEndpointResponse -> ShowS
[ModifyEndpointResponse] -> ShowS
ModifyEndpointResponse -> String
(Int -> ModifyEndpointResponse -> ShowS)
-> (ModifyEndpointResponse -> String)
-> ([ModifyEndpointResponse] -> ShowS)
-> Show ModifyEndpointResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyEndpointResponse] -> ShowS
$cshowList :: [ModifyEndpointResponse] -> ShowS
show :: ModifyEndpointResponse -> String
$cshow :: ModifyEndpointResponse -> String
showsPrec :: Int -> ModifyEndpointResponse -> ShowS
$cshowsPrec :: Int -> ModifyEndpointResponse -> ShowS
Prelude.Show, (forall x. ModifyEndpointResponse -> Rep ModifyEndpointResponse x)
-> (forall x.
    Rep ModifyEndpointResponse x -> ModifyEndpointResponse)
-> Generic ModifyEndpointResponse
forall x. Rep ModifyEndpointResponse x -> ModifyEndpointResponse
forall x. ModifyEndpointResponse -> Rep ModifyEndpointResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ModifyEndpointResponse x -> ModifyEndpointResponse
$cfrom :: forall x. ModifyEndpointResponse -> Rep ModifyEndpointResponse x
Prelude.Generic)

-- |
-- Create a value of 'ModifyEndpointResponse' 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:
--
-- 'endpoint', 'modifyEndpointResponse_endpoint' - The modified endpoint.
--
-- 'httpStatus', 'modifyEndpointResponse_httpStatus' - The response's http status code.
newModifyEndpointResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ModifyEndpointResponse
newModifyEndpointResponse :: Int -> ModifyEndpointResponse
newModifyEndpointResponse Int
pHttpStatus_ =
  ModifyEndpointResponse' :: Maybe Endpoint -> Int -> ModifyEndpointResponse
ModifyEndpointResponse'
    { $sel:endpoint:ModifyEndpointResponse' :: Maybe Endpoint
endpoint = Maybe Endpoint
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ModifyEndpointResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The modified endpoint.
modifyEndpointResponse_endpoint :: Lens.Lens' ModifyEndpointResponse (Prelude.Maybe Endpoint)
modifyEndpointResponse_endpoint :: (Maybe Endpoint -> f (Maybe Endpoint))
-> ModifyEndpointResponse -> f ModifyEndpointResponse
modifyEndpointResponse_endpoint = (ModifyEndpointResponse -> Maybe Endpoint)
-> (ModifyEndpointResponse
    -> Maybe Endpoint -> ModifyEndpointResponse)
-> Lens
     ModifyEndpointResponse
     ModifyEndpointResponse
     (Maybe Endpoint)
     (Maybe Endpoint)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyEndpointResponse' {Maybe Endpoint
endpoint :: Maybe Endpoint
$sel:endpoint:ModifyEndpointResponse' :: ModifyEndpointResponse -> Maybe Endpoint
endpoint} -> Maybe Endpoint
endpoint) (\s :: ModifyEndpointResponse
s@ModifyEndpointResponse' {} Maybe Endpoint
a -> ModifyEndpointResponse
s {$sel:endpoint:ModifyEndpointResponse' :: Maybe Endpoint
endpoint = Maybe Endpoint
a} :: ModifyEndpointResponse)

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

instance Prelude.NFData ModifyEndpointResponse