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

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

-- |
-- Module      : Amazonka.DMS.Types.Endpoint
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DMS.Types.Endpoint where

import qualified Amazonka.Core as Core
import Amazonka.DMS.Types.DmsSslModeValue
import Amazonka.DMS.Types.DmsTransferSettings
import Amazonka.DMS.Types.DocDbSettings
import Amazonka.DMS.Types.DynamoDbSettings
import Amazonka.DMS.Types.ElasticsearchSettings
import Amazonka.DMS.Types.IBMDb2Settings
import Amazonka.DMS.Types.KafkaSettings
import Amazonka.DMS.Types.KinesisSettings
import Amazonka.DMS.Types.MicrosoftSQLServerSettings
import Amazonka.DMS.Types.MongoDbSettings
import Amazonka.DMS.Types.MySQLSettings
import Amazonka.DMS.Types.NeptuneSettings
import Amazonka.DMS.Types.OracleSettings
import Amazonka.DMS.Types.PostgreSQLSettings
import Amazonka.DMS.Types.RedisSettings
import Amazonka.DMS.Types.RedshiftSettings
import Amazonka.DMS.Types.ReplicationEndpointTypeValue
import Amazonka.DMS.Types.S3Settings
import Amazonka.DMS.Types.SybaseSettings
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Describes an endpoint of a database instance in response to operations
-- such as the following:
--
-- -   @CreateEndpoint@
--
-- -   @DescribeEndpoint@
--
-- -   @ModifyEndpoint@
--
-- /See:/ 'newEndpoint' smart constructor.
data Endpoint = Endpoint'
  { -- | The status of the endpoint.
    Endpoint -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | The settings in JSON format for the DMS transfer type of source
    -- endpoint.
    --
    -- Possible settings 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\"} @
    Endpoint -> Maybe DmsTransferSettings
dmsTransferSettings :: Prelude.Maybe DmsTransferSettings,
    -- | The settings for the MySQL source and target endpoint. For more
    -- information, see the @MySQLSettings@ structure.
    Endpoint -> Maybe MySQLSettings
mySQLSettings :: Prelude.Maybe MySQLSettings,
    -- | The name of the server at the endpoint.
    Endpoint -> Maybe Text
serverName :: Prelude.Maybe Prelude.Text,
    -- | The settings for the Microsoft SQL Server source and target endpoint.
    -- For more information, see the @MicrosoftSQLServerSettings@ structure.
    Endpoint -> Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings :: Prelude.Maybe MicrosoftSQLServerSettings,
    -- | The Amazon Resource Name (ARN) used for SSL connection to the endpoint.
    Endpoint -> Maybe Text
certificateArn :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) used by the service to access the IAM
    -- role. The role must allow the @iam:PassRole@ action.
    Endpoint -> Maybe Text
serviceAccessRoleArn :: Prelude.Maybe Prelude.Text,
    Endpoint -> Maybe DocDbSettings
docDbSettings :: Prelude.Maybe DocDbSettings,
    -- | The expanded name for the engine name. For example, if the @EngineName@
    -- parameter is \"aurora,\" this value would be \"Amazon Aurora MySQL.\"
    Endpoint -> Maybe Text
engineDisplayName :: Prelude.Maybe Prelude.Text,
    -- | The settings for the PostgreSQL source and target endpoint. For more
    -- information, see the @PostgreSQLSettings@ structure.
    Endpoint -> Maybe PostgreSQLSettings
postgreSQLSettings :: Prelude.Maybe PostgreSQLSettings,
    -- | Additional connection attributes used to connect to the endpoint.
    Endpoint -> Maybe Text
extraConnectionAttributes :: Prelude.Maybe Prelude.Text,
    -- | The settings for the Apache Kafka target endpoint. For more information,
    -- see the @KafkaSettings@ structure.
    Endpoint -> Maybe KafkaSettings
kafkaSettings :: Prelude.Maybe KafkaSettings,
    -- | The settings for the Oracle source and target endpoint. For more
    -- information, see the @OracleSettings@ structure.
    Endpoint -> Maybe OracleSettings
oracleSettings :: Prelude.Maybe OracleSettings,
    -- | The type of endpoint. Valid values are @source@ and @target@.
    Endpoint -> Maybe ReplicationEndpointTypeValue
endpointType :: Prelude.Maybe ReplicationEndpointTypeValue,
    -- | Settings for the Amazon Redshift endpoint.
    Endpoint -> Maybe RedshiftSettings
redshiftSettings :: Prelude.Maybe RedshiftSettings,
    -- | The settings for the Elasticsearch source endpoint. For more
    -- information, see the @ElasticsearchSettings@ structure.
    Endpoint -> Maybe ElasticsearchSettings
elasticsearchSettings :: Prelude.Maybe ElasticsearchSettings,
    -- | The user name used to connect to the endpoint.
    Endpoint -> Maybe Text
username :: Prelude.Maybe Prelude.Text,
    -- | The external table definition.
    Endpoint -> Maybe Text
externalTableDefinition :: Prelude.Maybe Prelude.Text,
    -- | The database engine name. 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\"@.
    Endpoint -> Maybe Text
engineName :: Prelude.Maybe Prelude.Text,
    -- | The settings for the Redis target endpoint. For more information, see
    -- the @RedisSettings@ structure.
    Endpoint -> Maybe RedisSettings
redisSettings :: Prelude.Maybe RedisSettings,
    -- | The settings for the Amazon Neptune target endpoint. For more
    -- information, see the @NeptuneSettings@ structure.
    Endpoint -> Maybe NeptuneSettings
neptuneSettings :: Prelude.Maybe NeptuneSettings,
    -- | The settings for the IBM Db2 LUW source endpoint. For more information,
    -- see the @IBMDb2Settings@ structure.
    Endpoint -> Maybe IBMDb2Settings
iBMDb2Settings :: Prelude.Maybe IBMDb2Settings,
    -- | An KMS key identifier that is used to encrypt the connection parameters
    -- for the endpoint.
    --
    -- If you don\'t specify a value for the @KmsKeyId@ parameter, then DMS
    -- uses your default encryption key.
    --
    -- KMS creates the default encryption key for your Amazon Web Services
    -- account. Your Amazon Web Services account has a different default
    -- encryption key for each Amazon Web Services Region.
    Endpoint -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The settings for the MongoDB source endpoint. For more information, see
    -- the @MongoDbSettings@ structure.
    Endpoint -> Maybe MongoDbSettings
mongoDbSettings :: Prelude.Maybe MongoDbSettings,
    -- | The SSL mode used to connect to the endpoint. The default value is
    -- @none@.
    Endpoint -> Maybe DmsSslModeValue
sslMode :: Prelude.Maybe DmsSslModeValue,
    -- | The settings for the SAP ASE source and target endpoint. For more
    -- information, see the @SybaseSettings@ structure.
    Endpoint -> Maybe SybaseSettings
sybaseSettings :: Prelude.Maybe SybaseSettings,
    -- | The name of the database at the endpoint.
    Endpoint -> Maybe Text
databaseName :: Prelude.Maybe Prelude.Text,
    -- | The settings for the S3 target endpoint. For more information, see the
    -- @S3Settings@ structure.
    Endpoint -> Maybe S3Settings
s3Settings :: Prelude.Maybe S3Settings,
    -- | The settings for the Amazon Kinesis target endpoint. For more
    -- information, see the @KinesisSettings@ structure.
    Endpoint -> 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.
    Endpoint -> Maybe Text
endpointIdentifier :: Prelude.Maybe Prelude.Text,
    -- | Value returned by a call to CreateEndpoint that can be used for
    -- cross-account validation. Use it on a subsequent call to CreateEndpoint
    -- to create the endpoint with a cross-account.
    Endpoint -> Maybe Text
externalId :: Prelude.Maybe Prelude.Text,
    -- | The settings for the DynamoDB target endpoint. For more information, see
    -- the @DynamoDBSettings@ structure.
    Endpoint -> Maybe DynamoDbSettings
dynamoDbSettings :: Prelude.Maybe DynamoDbSettings,
    -- | The Amazon Resource Name (ARN) string that uniquely identifies the
    -- endpoint.
    Endpoint -> Maybe Text
endpointArn :: Prelude.Maybe Prelude.Text,
    -- | The port value used to access the endpoint.
    Endpoint -> Maybe Int
port :: Prelude.Maybe Prelude.Int
  }
  deriving (Endpoint -> Endpoint -> Bool
(Endpoint -> Endpoint -> Bool)
-> (Endpoint -> Endpoint -> Bool) -> Eq Endpoint
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Endpoint -> Endpoint -> Bool
$c/= :: Endpoint -> Endpoint -> Bool
== :: Endpoint -> Endpoint -> Bool
$c== :: Endpoint -> Endpoint -> Bool
Prelude.Eq, Int -> Endpoint -> ShowS
[Endpoint] -> ShowS
Endpoint -> String
(Int -> Endpoint -> ShowS)
-> (Endpoint -> String) -> ([Endpoint] -> ShowS) -> Show Endpoint
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Endpoint] -> ShowS
$cshowList :: [Endpoint] -> ShowS
show :: Endpoint -> String
$cshow :: Endpoint -> String
showsPrec :: Int -> Endpoint -> ShowS
$cshowsPrec :: Int -> Endpoint -> ShowS
Prelude.Show, (forall x. Endpoint -> Rep Endpoint x)
-> (forall x. Rep Endpoint x -> Endpoint) -> Generic Endpoint
forall x. Rep Endpoint x -> Endpoint
forall x. Endpoint -> Rep Endpoint x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Endpoint x -> Endpoint
$cfrom :: forall x. Endpoint -> Rep Endpoint x
Prelude.Generic)

-- |
-- Create a value of 'Endpoint' 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:
--
-- 'status', 'endpoint_status' - The status of the endpoint.
--
-- 'dmsTransferSettings', 'endpoint_dmsTransferSettings' - The settings in JSON format for the DMS transfer type of source
-- endpoint.
--
-- Possible settings 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', 'endpoint_mySQLSettings' - The settings for the MySQL source and target endpoint. For more
-- information, see the @MySQLSettings@ structure.
--
-- 'serverName', 'endpoint_serverName' - The name of the server at the endpoint.
--
-- 'microsoftSQLServerSettings', 'endpoint_microsoftSQLServerSettings' - The settings for the Microsoft SQL Server source and target endpoint.
-- For more information, see the @MicrosoftSQLServerSettings@ structure.
--
-- 'certificateArn', 'endpoint_certificateArn' - The Amazon Resource Name (ARN) used for SSL connection to the endpoint.
--
-- 'serviceAccessRoleArn', 'endpoint_serviceAccessRoleArn' - The Amazon Resource Name (ARN) used by the service to access the IAM
-- role. The role must allow the @iam:PassRole@ action.
--
-- 'docDbSettings', 'endpoint_docDbSettings' - Undocumented member.
--
-- 'engineDisplayName', 'endpoint_engineDisplayName' - The expanded name for the engine name. For example, if the @EngineName@
-- parameter is \"aurora,\" this value would be \"Amazon Aurora MySQL.\"
--
-- 'postgreSQLSettings', 'endpoint_postgreSQLSettings' - The settings for the PostgreSQL source and target endpoint. For more
-- information, see the @PostgreSQLSettings@ structure.
--
-- 'extraConnectionAttributes', 'endpoint_extraConnectionAttributes' - Additional connection attributes used to connect to the endpoint.
--
-- 'kafkaSettings', 'endpoint_kafkaSettings' - The settings for the Apache Kafka target endpoint. For more information,
-- see the @KafkaSettings@ structure.
--
-- 'oracleSettings', 'endpoint_oracleSettings' - The settings for the Oracle source and target endpoint. For more
-- information, see the @OracleSettings@ structure.
--
-- 'endpointType', 'endpoint_endpointType' - The type of endpoint. Valid values are @source@ and @target@.
--
-- 'redshiftSettings', 'endpoint_redshiftSettings' - Settings for the Amazon Redshift endpoint.
--
-- 'elasticsearchSettings', 'endpoint_elasticsearchSettings' - The settings for the Elasticsearch source endpoint. For more
-- information, see the @ElasticsearchSettings@ structure.
--
-- 'username', 'endpoint_username' - The user name used to connect to the endpoint.
--
-- 'externalTableDefinition', 'endpoint_externalTableDefinition' - The external table definition.
--
-- 'engineName', 'endpoint_engineName' - The database engine name. 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', 'endpoint_redisSettings' - The settings for the Redis target endpoint. For more information, see
-- the @RedisSettings@ structure.
--
-- 'neptuneSettings', 'endpoint_neptuneSettings' - The settings for the Amazon Neptune target endpoint. For more
-- information, see the @NeptuneSettings@ structure.
--
-- 'iBMDb2Settings', 'endpoint_iBMDb2Settings' - The settings for the IBM Db2 LUW source endpoint. For more information,
-- see the @IBMDb2Settings@ structure.
--
-- 'kmsKeyId', 'endpoint_kmsKeyId' - An KMS key identifier that is used to encrypt the connection parameters
-- for the endpoint.
--
-- If you don\'t specify a value for the @KmsKeyId@ parameter, then DMS
-- uses your default encryption key.
--
-- KMS creates the default encryption key for your Amazon Web Services
-- account. Your Amazon Web Services account has a different default
-- encryption key for each Amazon Web Services Region.
--
-- 'mongoDbSettings', 'endpoint_mongoDbSettings' - The settings for the MongoDB source endpoint. For more information, see
-- the @MongoDbSettings@ structure.
--
-- 'sslMode', 'endpoint_sslMode' - The SSL mode used to connect to the endpoint. The default value is
-- @none@.
--
-- 'sybaseSettings', 'endpoint_sybaseSettings' - The settings for the SAP ASE source and target endpoint. For more
-- information, see the @SybaseSettings@ structure.
--
-- 'databaseName', 'endpoint_databaseName' - The name of the database at the endpoint.
--
-- 's3Settings', 'endpoint_s3Settings' - The settings for the S3 target endpoint. For more information, see the
-- @S3Settings@ structure.
--
-- 'kinesisSettings', 'endpoint_kinesisSettings' - The settings for the Amazon Kinesis target endpoint. For more
-- information, see the @KinesisSettings@ structure.
--
-- 'endpointIdentifier', 'endpoint_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.
--
-- 'externalId', 'endpoint_externalId' - Value returned by a call to CreateEndpoint that can be used for
-- cross-account validation. Use it on a subsequent call to CreateEndpoint
-- to create the endpoint with a cross-account.
--
-- 'dynamoDbSettings', 'endpoint_dynamoDbSettings' - The settings for the DynamoDB target endpoint. For more information, see
-- the @DynamoDBSettings@ structure.
--
-- 'endpointArn', 'endpoint_endpointArn' - The Amazon Resource Name (ARN) string that uniquely identifies the
-- endpoint.
--
-- 'port', 'endpoint_port' - The port value used to access the endpoint.
newEndpoint ::
  Endpoint
newEndpoint :: Endpoint
newEndpoint =
  Endpoint' :: Maybe Text
-> Maybe DmsTransferSettings
-> Maybe MySQLSettings
-> Maybe Text
-> Maybe MicrosoftSQLServerSettings
-> Maybe Text
-> Maybe Text
-> Maybe DocDbSettings
-> Maybe Text
-> Maybe PostgreSQLSettings
-> Maybe Text
-> Maybe KafkaSettings
-> Maybe OracleSettings
-> Maybe ReplicationEndpointTypeValue
-> Maybe RedshiftSettings
-> Maybe ElasticsearchSettings
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe RedisSettings
-> Maybe NeptuneSettings
-> Maybe IBMDb2Settings
-> Maybe Text
-> Maybe MongoDbSettings
-> Maybe DmsSslModeValue
-> Maybe SybaseSettings
-> Maybe Text
-> Maybe S3Settings
-> Maybe KinesisSettings
-> Maybe Text
-> Maybe Text
-> Maybe DynamoDbSettings
-> Maybe Text
-> Maybe Int
-> Endpoint
Endpoint'
    { $sel:status:Endpoint' :: Maybe Text
status = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dmsTransferSettings:Endpoint' :: Maybe DmsTransferSettings
dmsTransferSettings = Maybe DmsTransferSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:mySQLSettings:Endpoint' :: Maybe MySQLSettings
mySQLSettings = Maybe MySQLSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:serverName:Endpoint' :: Maybe Text
serverName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:microsoftSQLServerSettings:Endpoint' :: Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings = Maybe MicrosoftSQLServerSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:certificateArn:Endpoint' :: Maybe Text
certificateArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:serviceAccessRoleArn:Endpoint' :: Maybe Text
serviceAccessRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:docDbSettings:Endpoint' :: Maybe DocDbSettings
docDbSettings = Maybe DocDbSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:engineDisplayName:Endpoint' :: Maybe Text
engineDisplayName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:postgreSQLSettings:Endpoint' :: Maybe PostgreSQLSettings
postgreSQLSettings = Maybe PostgreSQLSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:extraConnectionAttributes:Endpoint' :: Maybe Text
extraConnectionAttributes = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:kafkaSettings:Endpoint' :: Maybe KafkaSettings
kafkaSettings = Maybe KafkaSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:oracleSettings:Endpoint' :: Maybe OracleSettings
oracleSettings = Maybe OracleSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:endpointType:Endpoint' :: Maybe ReplicationEndpointTypeValue
endpointType = Maybe ReplicationEndpointTypeValue
forall a. Maybe a
Prelude.Nothing,
      $sel:redshiftSettings:Endpoint' :: Maybe RedshiftSettings
redshiftSettings = Maybe RedshiftSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:elasticsearchSettings:Endpoint' :: Maybe ElasticsearchSettings
elasticsearchSettings = Maybe ElasticsearchSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:username:Endpoint' :: Maybe Text
username = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:externalTableDefinition:Endpoint' :: Maybe Text
externalTableDefinition = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:engineName:Endpoint' :: Maybe Text
engineName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:redisSettings:Endpoint' :: Maybe RedisSettings
redisSettings = Maybe RedisSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:neptuneSettings:Endpoint' :: Maybe NeptuneSettings
neptuneSettings = Maybe NeptuneSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:iBMDb2Settings:Endpoint' :: Maybe IBMDb2Settings
iBMDb2Settings = Maybe IBMDb2Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:Endpoint' :: Maybe Text
kmsKeyId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:mongoDbSettings:Endpoint' :: Maybe MongoDbSettings
mongoDbSettings = Maybe MongoDbSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:sslMode:Endpoint' :: Maybe DmsSslModeValue
sslMode = Maybe DmsSslModeValue
forall a. Maybe a
Prelude.Nothing,
      $sel:sybaseSettings:Endpoint' :: Maybe SybaseSettings
sybaseSettings = Maybe SybaseSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:databaseName:Endpoint' :: Maybe Text
databaseName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:s3Settings:Endpoint' :: Maybe S3Settings
s3Settings = Maybe S3Settings
forall a. Maybe a
Prelude.Nothing,
      $sel:kinesisSettings:Endpoint' :: Maybe KinesisSettings
kinesisSettings = Maybe KinesisSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:endpointIdentifier:Endpoint' :: Maybe Text
endpointIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:externalId:Endpoint' :: Maybe Text
externalId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dynamoDbSettings:Endpoint' :: Maybe DynamoDbSettings
dynamoDbSettings = Maybe DynamoDbSettings
forall a. Maybe a
Prelude.Nothing,
      $sel:endpointArn:Endpoint' :: Maybe Text
endpointArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:port:Endpoint' :: Maybe Int
port = Maybe Int
forall a. Maybe a
Prelude.Nothing
    }

-- | The status of the endpoint.
endpoint_status :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_status :: (Maybe Text -> f (Maybe Text)) -> Endpoint -> f Endpoint
endpoint_status = (Endpoint -> Maybe Text)
-> (Endpoint -> Maybe Text -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
status :: Maybe Text
$sel:status:Endpoint' :: Endpoint -> Maybe Text
status} -> Maybe Text
status) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:status:Endpoint' :: Maybe Text
status = Maybe Text
a} :: Endpoint)

-- | The settings in JSON format for the DMS transfer type of source
-- endpoint.
--
-- Possible settings 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\"} @
endpoint_dmsTransferSettings :: Lens.Lens' Endpoint (Prelude.Maybe DmsTransferSettings)
endpoint_dmsTransferSettings :: (Maybe DmsTransferSettings -> f (Maybe DmsTransferSettings))
-> Endpoint -> f Endpoint
endpoint_dmsTransferSettings = (Endpoint -> Maybe DmsTransferSettings)
-> (Endpoint -> Maybe DmsTransferSettings -> Endpoint)
-> Lens
     Endpoint
     Endpoint
     (Maybe DmsTransferSettings)
     (Maybe DmsTransferSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe DmsTransferSettings
dmsTransferSettings :: Maybe DmsTransferSettings
$sel:dmsTransferSettings:Endpoint' :: Endpoint -> Maybe DmsTransferSettings
dmsTransferSettings} -> Maybe DmsTransferSettings
dmsTransferSettings) (\s :: Endpoint
s@Endpoint' {} Maybe DmsTransferSettings
a -> Endpoint
s {$sel:dmsTransferSettings:Endpoint' :: Maybe DmsTransferSettings
dmsTransferSettings = Maybe DmsTransferSettings
a} :: Endpoint)

-- | The settings for the MySQL source and target endpoint. For more
-- information, see the @MySQLSettings@ structure.
endpoint_mySQLSettings :: Lens.Lens' Endpoint (Prelude.Maybe MySQLSettings)
endpoint_mySQLSettings :: (Maybe MySQLSettings -> f (Maybe MySQLSettings))
-> Endpoint -> f Endpoint
endpoint_mySQLSettings = (Endpoint -> Maybe MySQLSettings)
-> (Endpoint -> Maybe MySQLSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe MySQLSettings) (Maybe MySQLSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe MySQLSettings
mySQLSettings :: Maybe MySQLSettings
$sel:mySQLSettings:Endpoint' :: Endpoint -> Maybe MySQLSettings
mySQLSettings} -> Maybe MySQLSettings
mySQLSettings) (\s :: Endpoint
s@Endpoint' {} Maybe MySQLSettings
a -> Endpoint
s {$sel:mySQLSettings:Endpoint' :: Maybe MySQLSettings
mySQLSettings = Maybe MySQLSettings
a} :: Endpoint)

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

-- | The settings for the Microsoft SQL Server source and target endpoint.
-- For more information, see the @MicrosoftSQLServerSettings@ structure.
endpoint_microsoftSQLServerSettings :: Lens.Lens' Endpoint (Prelude.Maybe MicrosoftSQLServerSettings)
endpoint_microsoftSQLServerSettings :: (Maybe MicrosoftSQLServerSettings
 -> f (Maybe MicrosoftSQLServerSettings))
-> Endpoint -> f Endpoint
endpoint_microsoftSQLServerSettings = (Endpoint -> Maybe MicrosoftSQLServerSettings)
-> (Endpoint -> Maybe MicrosoftSQLServerSettings -> Endpoint)
-> Lens
     Endpoint
     Endpoint
     (Maybe MicrosoftSQLServerSettings)
     (Maybe MicrosoftSQLServerSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings :: Maybe MicrosoftSQLServerSettings
$sel:microsoftSQLServerSettings:Endpoint' :: Endpoint -> Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings} -> Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings) (\s :: Endpoint
s@Endpoint' {} Maybe MicrosoftSQLServerSettings
a -> Endpoint
s {$sel:microsoftSQLServerSettings:Endpoint' :: Maybe MicrosoftSQLServerSettings
microsoftSQLServerSettings = Maybe MicrosoftSQLServerSettings
a} :: Endpoint)

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

-- | The Amazon Resource Name (ARN) used by the service to access the IAM
-- role. The role must allow the @iam:PassRole@ action.
endpoint_serviceAccessRoleArn :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_serviceAccessRoleArn :: (Maybe Text -> f (Maybe Text)) -> Endpoint -> f Endpoint
endpoint_serviceAccessRoleArn = (Endpoint -> Maybe Text)
-> (Endpoint -> Maybe Text -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
serviceAccessRoleArn :: Maybe Text
$sel:serviceAccessRoleArn:Endpoint' :: Endpoint -> Maybe Text
serviceAccessRoleArn} -> Maybe Text
serviceAccessRoleArn) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:serviceAccessRoleArn:Endpoint' :: Maybe Text
serviceAccessRoleArn = Maybe Text
a} :: Endpoint)

-- | Undocumented member.
endpoint_docDbSettings :: Lens.Lens' Endpoint (Prelude.Maybe DocDbSettings)
endpoint_docDbSettings :: (Maybe DocDbSettings -> f (Maybe DocDbSettings))
-> Endpoint -> f Endpoint
endpoint_docDbSettings = (Endpoint -> Maybe DocDbSettings)
-> (Endpoint -> Maybe DocDbSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe DocDbSettings) (Maybe DocDbSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe DocDbSettings
docDbSettings :: Maybe DocDbSettings
$sel:docDbSettings:Endpoint' :: Endpoint -> Maybe DocDbSettings
docDbSettings} -> Maybe DocDbSettings
docDbSettings) (\s :: Endpoint
s@Endpoint' {} Maybe DocDbSettings
a -> Endpoint
s {$sel:docDbSettings:Endpoint' :: Maybe DocDbSettings
docDbSettings = Maybe DocDbSettings
a} :: Endpoint)

-- | The expanded name for the engine name. For example, if the @EngineName@
-- parameter is \"aurora,\" this value would be \"Amazon Aurora MySQL.\"
endpoint_engineDisplayName :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_engineDisplayName :: (Maybe Text -> f (Maybe Text)) -> Endpoint -> f Endpoint
endpoint_engineDisplayName = (Endpoint -> Maybe Text)
-> (Endpoint -> Maybe Text -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
engineDisplayName :: Maybe Text
$sel:engineDisplayName:Endpoint' :: Endpoint -> Maybe Text
engineDisplayName} -> Maybe Text
engineDisplayName) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:engineDisplayName:Endpoint' :: Maybe Text
engineDisplayName = Maybe Text
a} :: Endpoint)

-- | The settings for the PostgreSQL source and target endpoint. For more
-- information, see the @PostgreSQLSettings@ structure.
endpoint_postgreSQLSettings :: Lens.Lens' Endpoint (Prelude.Maybe PostgreSQLSettings)
endpoint_postgreSQLSettings :: (Maybe PostgreSQLSettings -> f (Maybe PostgreSQLSettings))
-> Endpoint -> f Endpoint
endpoint_postgreSQLSettings = (Endpoint -> Maybe PostgreSQLSettings)
-> (Endpoint -> Maybe PostgreSQLSettings -> Endpoint)
-> Lens
     Endpoint
     Endpoint
     (Maybe PostgreSQLSettings)
     (Maybe PostgreSQLSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe PostgreSQLSettings
postgreSQLSettings :: Maybe PostgreSQLSettings
$sel:postgreSQLSettings:Endpoint' :: Endpoint -> Maybe PostgreSQLSettings
postgreSQLSettings} -> Maybe PostgreSQLSettings
postgreSQLSettings) (\s :: Endpoint
s@Endpoint' {} Maybe PostgreSQLSettings
a -> Endpoint
s {$sel:postgreSQLSettings:Endpoint' :: Maybe PostgreSQLSettings
postgreSQLSettings = Maybe PostgreSQLSettings
a} :: Endpoint)

-- | Additional connection attributes used to connect to the endpoint.
endpoint_extraConnectionAttributes :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_extraConnectionAttributes :: (Maybe Text -> f (Maybe Text)) -> Endpoint -> f Endpoint
endpoint_extraConnectionAttributes = (Endpoint -> Maybe Text)
-> (Endpoint -> Maybe Text -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
extraConnectionAttributes :: Maybe Text
$sel:extraConnectionAttributes:Endpoint' :: Endpoint -> Maybe Text
extraConnectionAttributes} -> Maybe Text
extraConnectionAttributes) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:extraConnectionAttributes:Endpoint' :: Maybe Text
extraConnectionAttributes = Maybe Text
a} :: Endpoint)

-- | The settings for the Apache Kafka target endpoint. For more information,
-- see the @KafkaSettings@ structure.
endpoint_kafkaSettings :: Lens.Lens' Endpoint (Prelude.Maybe KafkaSettings)
endpoint_kafkaSettings :: (Maybe KafkaSettings -> f (Maybe KafkaSettings))
-> Endpoint -> f Endpoint
endpoint_kafkaSettings = (Endpoint -> Maybe KafkaSettings)
-> (Endpoint -> Maybe KafkaSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe KafkaSettings) (Maybe KafkaSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe KafkaSettings
kafkaSettings :: Maybe KafkaSettings
$sel:kafkaSettings:Endpoint' :: Endpoint -> Maybe KafkaSettings
kafkaSettings} -> Maybe KafkaSettings
kafkaSettings) (\s :: Endpoint
s@Endpoint' {} Maybe KafkaSettings
a -> Endpoint
s {$sel:kafkaSettings:Endpoint' :: Maybe KafkaSettings
kafkaSettings = Maybe KafkaSettings
a} :: Endpoint)

-- | The settings for the Oracle source and target endpoint. For more
-- information, see the @OracleSettings@ structure.
endpoint_oracleSettings :: Lens.Lens' Endpoint (Prelude.Maybe OracleSettings)
endpoint_oracleSettings :: (Maybe OracleSettings -> f (Maybe OracleSettings))
-> Endpoint -> f Endpoint
endpoint_oracleSettings = (Endpoint -> Maybe OracleSettings)
-> (Endpoint -> Maybe OracleSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe OracleSettings) (Maybe OracleSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe OracleSettings
oracleSettings :: Maybe OracleSettings
$sel:oracleSettings:Endpoint' :: Endpoint -> Maybe OracleSettings
oracleSettings} -> Maybe OracleSettings
oracleSettings) (\s :: Endpoint
s@Endpoint' {} Maybe OracleSettings
a -> Endpoint
s {$sel:oracleSettings:Endpoint' :: Maybe OracleSettings
oracleSettings = Maybe OracleSettings
a} :: Endpoint)

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

-- | Settings for the Amazon Redshift endpoint.
endpoint_redshiftSettings :: Lens.Lens' Endpoint (Prelude.Maybe RedshiftSettings)
endpoint_redshiftSettings :: (Maybe RedshiftSettings -> f (Maybe RedshiftSettings))
-> Endpoint -> f Endpoint
endpoint_redshiftSettings = (Endpoint -> Maybe RedshiftSettings)
-> (Endpoint -> Maybe RedshiftSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe RedshiftSettings) (Maybe RedshiftSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe RedshiftSettings
redshiftSettings :: Maybe RedshiftSettings
$sel:redshiftSettings:Endpoint' :: Endpoint -> Maybe RedshiftSettings
redshiftSettings} -> Maybe RedshiftSettings
redshiftSettings) (\s :: Endpoint
s@Endpoint' {} Maybe RedshiftSettings
a -> Endpoint
s {$sel:redshiftSettings:Endpoint' :: Maybe RedshiftSettings
redshiftSettings = Maybe RedshiftSettings
a} :: Endpoint)

-- | The settings for the Elasticsearch source endpoint. For more
-- information, see the @ElasticsearchSettings@ structure.
endpoint_elasticsearchSettings :: Lens.Lens' Endpoint (Prelude.Maybe ElasticsearchSettings)
endpoint_elasticsearchSettings :: (Maybe ElasticsearchSettings -> f (Maybe ElasticsearchSettings))
-> Endpoint -> f Endpoint
endpoint_elasticsearchSettings = (Endpoint -> Maybe ElasticsearchSettings)
-> (Endpoint -> Maybe ElasticsearchSettings -> Endpoint)
-> Lens
     Endpoint
     Endpoint
     (Maybe ElasticsearchSettings)
     (Maybe ElasticsearchSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe ElasticsearchSettings
elasticsearchSettings :: Maybe ElasticsearchSettings
$sel:elasticsearchSettings:Endpoint' :: Endpoint -> Maybe ElasticsearchSettings
elasticsearchSettings} -> Maybe ElasticsearchSettings
elasticsearchSettings) (\s :: Endpoint
s@Endpoint' {} Maybe ElasticsearchSettings
a -> Endpoint
s {$sel:elasticsearchSettings:Endpoint' :: Maybe ElasticsearchSettings
elasticsearchSettings = Maybe ElasticsearchSettings
a} :: Endpoint)

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

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

-- | The database engine name. 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\"@.
endpoint_engineName :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_engineName :: (Maybe Text -> f (Maybe Text)) -> Endpoint -> f Endpoint
endpoint_engineName = (Endpoint -> Maybe Text)
-> (Endpoint -> Maybe Text -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
engineName :: Maybe Text
$sel:engineName:Endpoint' :: Endpoint -> Maybe Text
engineName} -> Maybe Text
engineName) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:engineName:Endpoint' :: Maybe Text
engineName = Maybe Text
a} :: Endpoint)

-- | The settings for the Redis target endpoint. For more information, see
-- the @RedisSettings@ structure.
endpoint_redisSettings :: Lens.Lens' Endpoint (Prelude.Maybe RedisSettings)
endpoint_redisSettings :: (Maybe RedisSettings -> f (Maybe RedisSettings))
-> Endpoint -> f Endpoint
endpoint_redisSettings = (Endpoint -> Maybe RedisSettings)
-> (Endpoint -> Maybe RedisSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe RedisSettings) (Maybe RedisSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe RedisSettings
redisSettings :: Maybe RedisSettings
$sel:redisSettings:Endpoint' :: Endpoint -> Maybe RedisSettings
redisSettings} -> Maybe RedisSettings
redisSettings) (\s :: Endpoint
s@Endpoint' {} Maybe RedisSettings
a -> Endpoint
s {$sel:redisSettings:Endpoint' :: Maybe RedisSettings
redisSettings = Maybe RedisSettings
a} :: Endpoint)

-- | The settings for the Amazon Neptune target endpoint. For more
-- information, see the @NeptuneSettings@ structure.
endpoint_neptuneSettings :: Lens.Lens' Endpoint (Prelude.Maybe NeptuneSettings)
endpoint_neptuneSettings :: (Maybe NeptuneSettings -> f (Maybe NeptuneSettings))
-> Endpoint -> f Endpoint
endpoint_neptuneSettings = (Endpoint -> Maybe NeptuneSettings)
-> (Endpoint -> Maybe NeptuneSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe NeptuneSettings) (Maybe NeptuneSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe NeptuneSettings
neptuneSettings :: Maybe NeptuneSettings
$sel:neptuneSettings:Endpoint' :: Endpoint -> Maybe NeptuneSettings
neptuneSettings} -> Maybe NeptuneSettings
neptuneSettings) (\s :: Endpoint
s@Endpoint' {} Maybe NeptuneSettings
a -> Endpoint
s {$sel:neptuneSettings:Endpoint' :: Maybe NeptuneSettings
neptuneSettings = Maybe NeptuneSettings
a} :: Endpoint)

-- | The settings for the IBM Db2 LUW source endpoint. For more information,
-- see the @IBMDb2Settings@ structure.
endpoint_iBMDb2Settings :: Lens.Lens' Endpoint (Prelude.Maybe IBMDb2Settings)
endpoint_iBMDb2Settings :: (Maybe IBMDb2Settings -> f (Maybe IBMDb2Settings))
-> Endpoint -> f Endpoint
endpoint_iBMDb2Settings = (Endpoint -> Maybe IBMDb2Settings)
-> (Endpoint -> Maybe IBMDb2Settings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe IBMDb2Settings) (Maybe IBMDb2Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe IBMDb2Settings
iBMDb2Settings :: Maybe IBMDb2Settings
$sel:iBMDb2Settings:Endpoint' :: Endpoint -> Maybe IBMDb2Settings
iBMDb2Settings} -> Maybe IBMDb2Settings
iBMDb2Settings) (\s :: Endpoint
s@Endpoint' {} Maybe IBMDb2Settings
a -> Endpoint
s {$sel:iBMDb2Settings:Endpoint' :: Maybe IBMDb2Settings
iBMDb2Settings = Maybe IBMDb2Settings
a} :: Endpoint)

-- | An KMS key identifier that is used to encrypt the connection parameters
-- for the endpoint.
--
-- If you don\'t specify a value for the @KmsKeyId@ parameter, then DMS
-- uses your default encryption key.
--
-- KMS creates the default encryption key for your Amazon Web Services
-- account. Your Amazon Web Services account has a different default
-- encryption key for each Amazon Web Services Region.
endpoint_kmsKeyId :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_kmsKeyId :: (Maybe Text -> f (Maybe Text)) -> Endpoint -> f Endpoint
endpoint_kmsKeyId = (Endpoint -> Maybe Text)
-> (Endpoint -> Maybe Text -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:Endpoint' :: Endpoint -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:kmsKeyId:Endpoint' :: Maybe Text
kmsKeyId = Maybe Text
a} :: Endpoint)

-- | The settings for the MongoDB source endpoint. For more information, see
-- the @MongoDbSettings@ structure.
endpoint_mongoDbSettings :: Lens.Lens' Endpoint (Prelude.Maybe MongoDbSettings)
endpoint_mongoDbSettings :: (Maybe MongoDbSettings -> f (Maybe MongoDbSettings))
-> Endpoint -> f Endpoint
endpoint_mongoDbSettings = (Endpoint -> Maybe MongoDbSettings)
-> (Endpoint -> Maybe MongoDbSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe MongoDbSettings) (Maybe MongoDbSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe MongoDbSettings
mongoDbSettings :: Maybe MongoDbSettings
$sel:mongoDbSettings:Endpoint' :: Endpoint -> Maybe MongoDbSettings
mongoDbSettings} -> Maybe MongoDbSettings
mongoDbSettings) (\s :: Endpoint
s@Endpoint' {} Maybe MongoDbSettings
a -> Endpoint
s {$sel:mongoDbSettings:Endpoint' :: Maybe MongoDbSettings
mongoDbSettings = Maybe MongoDbSettings
a} :: Endpoint)

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

-- | The settings for the SAP ASE source and target endpoint. For more
-- information, see the @SybaseSettings@ structure.
endpoint_sybaseSettings :: Lens.Lens' Endpoint (Prelude.Maybe SybaseSettings)
endpoint_sybaseSettings :: (Maybe SybaseSettings -> f (Maybe SybaseSettings))
-> Endpoint -> f Endpoint
endpoint_sybaseSettings = (Endpoint -> Maybe SybaseSettings)
-> (Endpoint -> Maybe SybaseSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe SybaseSettings) (Maybe SybaseSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe SybaseSettings
sybaseSettings :: Maybe SybaseSettings
$sel:sybaseSettings:Endpoint' :: Endpoint -> Maybe SybaseSettings
sybaseSettings} -> Maybe SybaseSettings
sybaseSettings) (\s :: Endpoint
s@Endpoint' {} Maybe SybaseSettings
a -> Endpoint
s {$sel:sybaseSettings:Endpoint' :: Maybe SybaseSettings
sybaseSettings = Maybe SybaseSettings
a} :: Endpoint)

-- | The name of the database at the endpoint.
endpoint_databaseName :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_databaseName :: (Maybe Text -> f (Maybe Text)) -> Endpoint -> f Endpoint
endpoint_databaseName = (Endpoint -> Maybe Text)
-> (Endpoint -> Maybe Text -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
databaseName :: Maybe Text
$sel:databaseName:Endpoint' :: Endpoint -> Maybe Text
databaseName} -> Maybe Text
databaseName) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:databaseName:Endpoint' :: Maybe Text
databaseName = Maybe Text
a} :: Endpoint)

-- | The settings for the S3 target endpoint. For more information, see the
-- @S3Settings@ structure.
endpoint_s3Settings :: Lens.Lens' Endpoint (Prelude.Maybe S3Settings)
endpoint_s3Settings :: (Maybe S3Settings -> f (Maybe S3Settings))
-> Endpoint -> f Endpoint
endpoint_s3Settings = (Endpoint -> Maybe S3Settings)
-> (Endpoint -> Maybe S3Settings -> Endpoint)
-> Lens Endpoint Endpoint (Maybe S3Settings) (Maybe S3Settings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe S3Settings
s3Settings :: Maybe S3Settings
$sel:s3Settings:Endpoint' :: Endpoint -> Maybe S3Settings
s3Settings} -> Maybe S3Settings
s3Settings) (\s :: Endpoint
s@Endpoint' {} Maybe S3Settings
a -> Endpoint
s {$sel:s3Settings:Endpoint' :: Maybe S3Settings
s3Settings = Maybe S3Settings
a} :: Endpoint)

-- | The settings for the Amazon Kinesis target endpoint. For more
-- information, see the @KinesisSettings@ structure.
endpoint_kinesisSettings :: Lens.Lens' Endpoint (Prelude.Maybe KinesisSettings)
endpoint_kinesisSettings :: (Maybe KinesisSettings -> f (Maybe KinesisSettings))
-> Endpoint -> f Endpoint
endpoint_kinesisSettings = (Endpoint -> Maybe KinesisSettings)
-> (Endpoint -> Maybe KinesisSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe KinesisSettings) (Maybe KinesisSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe KinesisSettings
kinesisSettings :: Maybe KinesisSettings
$sel:kinesisSettings:Endpoint' :: Endpoint -> Maybe KinesisSettings
kinesisSettings} -> Maybe KinesisSettings
kinesisSettings) (\s :: Endpoint
s@Endpoint' {} Maybe KinesisSettings
a -> Endpoint
s {$sel:kinesisSettings:Endpoint' :: Maybe KinesisSettings
kinesisSettings = Maybe KinesisSettings
a} :: Endpoint)

-- | 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.
endpoint_endpointIdentifier :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_endpointIdentifier :: (Maybe Text -> f (Maybe Text)) -> Endpoint -> f Endpoint
endpoint_endpointIdentifier = (Endpoint -> Maybe Text)
-> (Endpoint -> Maybe Text -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
endpointIdentifier :: Maybe Text
$sel:endpointIdentifier:Endpoint' :: Endpoint -> Maybe Text
endpointIdentifier} -> Maybe Text
endpointIdentifier) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:endpointIdentifier:Endpoint' :: Maybe Text
endpointIdentifier = Maybe Text
a} :: Endpoint)

-- | Value returned by a call to CreateEndpoint that can be used for
-- cross-account validation. Use it on a subsequent call to CreateEndpoint
-- to create the endpoint with a cross-account.
endpoint_externalId :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_externalId :: (Maybe Text -> f (Maybe Text)) -> Endpoint -> f Endpoint
endpoint_externalId = (Endpoint -> Maybe Text)
-> (Endpoint -> Maybe Text -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
externalId :: Maybe Text
$sel:externalId:Endpoint' :: Endpoint -> Maybe Text
externalId} -> Maybe Text
externalId) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:externalId:Endpoint' :: Maybe Text
externalId = Maybe Text
a} :: Endpoint)

-- | The settings for the DynamoDB target endpoint. For more information, see
-- the @DynamoDBSettings@ structure.
endpoint_dynamoDbSettings :: Lens.Lens' Endpoint (Prelude.Maybe DynamoDbSettings)
endpoint_dynamoDbSettings :: (Maybe DynamoDbSettings -> f (Maybe DynamoDbSettings))
-> Endpoint -> f Endpoint
endpoint_dynamoDbSettings = (Endpoint -> Maybe DynamoDbSettings)
-> (Endpoint -> Maybe DynamoDbSettings -> Endpoint)
-> Lens
     Endpoint Endpoint (Maybe DynamoDbSettings) (Maybe DynamoDbSettings)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe DynamoDbSettings
dynamoDbSettings :: Maybe DynamoDbSettings
$sel:dynamoDbSettings:Endpoint' :: Endpoint -> Maybe DynamoDbSettings
dynamoDbSettings} -> Maybe DynamoDbSettings
dynamoDbSettings) (\s :: Endpoint
s@Endpoint' {} Maybe DynamoDbSettings
a -> Endpoint
s {$sel:dynamoDbSettings:Endpoint' :: Maybe DynamoDbSettings
dynamoDbSettings = Maybe DynamoDbSettings
a} :: Endpoint)

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

-- | The port value used to access the endpoint.
endpoint_port :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Int)
endpoint_port :: (Maybe Int -> f (Maybe Int)) -> Endpoint -> f Endpoint
endpoint_port = (Endpoint -> Maybe Int)
-> (Endpoint -> Maybe Int -> Endpoint)
-> Lens Endpoint Endpoint (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Int
port :: Maybe Int
$sel:port:Endpoint' :: Endpoint -> Maybe Int
port} -> Maybe Int
port) (\s :: Endpoint
s@Endpoint' {} Maybe Int
a -> Endpoint
s {$sel:port:Endpoint' :: Maybe Int
port = Maybe Int
a} :: Endpoint)

instance Core.FromJSON Endpoint where
  parseJSON :: Value -> Parser Endpoint
parseJSON =
    String -> (Object -> Parser Endpoint) -> Value -> Parser Endpoint
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Endpoint"
      ( \Object
x ->
          Maybe Text
-> Maybe DmsTransferSettings
-> Maybe MySQLSettings
-> Maybe Text
-> Maybe MicrosoftSQLServerSettings
-> Maybe Text
-> Maybe Text
-> Maybe DocDbSettings
-> Maybe Text
-> Maybe PostgreSQLSettings
-> Maybe Text
-> Maybe KafkaSettings
-> Maybe OracleSettings
-> Maybe ReplicationEndpointTypeValue
-> Maybe RedshiftSettings
-> Maybe ElasticsearchSettings
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe RedisSettings
-> Maybe NeptuneSettings
-> Maybe IBMDb2Settings
-> Maybe Text
-> Maybe MongoDbSettings
-> Maybe DmsSslModeValue
-> Maybe SybaseSettings
-> Maybe Text
-> Maybe S3Settings
-> Maybe KinesisSettings
-> Maybe Text
-> Maybe Text
-> Maybe DynamoDbSettings
-> Maybe Text
-> Maybe Int
-> Endpoint
Endpoint'
            (Maybe Text
 -> Maybe DmsTransferSettings
 -> Maybe MySQLSettings
 -> Maybe Text
 -> Maybe MicrosoftSQLServerSettings
 -> Maybe Text
 -> Maybe Text
 -> Maybe DocDbSettings
 -> Maybe Text
 -> Maybe PostgreSQLSettings
 -> Maybe Text
 -> Maybe KafkaSettings
 -> Maybe OracleSettings
 -> Maybe ReplicationEndpointTypeValue
 -> Maybe RedshiftSettings
 -> Maybe ElasticsearchSettings
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe RedisSettings
 -> Maybe NeptuneSettings
 -> Maybe IBMDb2Settings
 -> Maybe Text
 -> Maybe MongoDbSettings
 -> Maybe DmsSslModeValue
 -> Maybe SybaseSettings
 -> Maybe Text
 -> Maybe S3Settings
 -> Maybe KinesisSettings
 -> Maybe Text
 -> Maybe Text
 -> Maybe DynamoDbSettings
 -> Maybe Text
 -> Maybe Int
 -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe DmsTransferSettings
      -> Maybe MySQLSettings
      -> Maybe Text
      -> Maybe MicrosoftSQLServerSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocDbSettings
      -> Maybe Text
      -> Maybe PostgreSQLSettings
      -> Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Status")
            Parser
  (Maybe DmsTransferSettings
   -> Maybe MySQLSettings
   -> Maybe Text
   -> Maybe MicrosoftSQLServerSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocDbSettings
   -> Maybe Text
   -> Maybe PostgreSQLSettings
   -> Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe DmsTransferSettings)
-> Parser
     (Maybe MySQLSettings
      -> Maybe Text
      -> Maybe MicrosoftSQLServerSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocDbSettings
      -> Maybe Text
      -> Maybe PostgreSQLSettings
      -> Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DmsTransferSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DmsTransferSettings")
            Parser
  (Maybe MySQLSettings
   -> Maybe Text
   -> Maybe MicrosoftSQLServerSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocDbSettings
   -> Maybe Text
   -> Maybe PostgreSQLSettings
   -> Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe MySQLSettings)
-> Parser
     (Maybe Text
      -> Maybe MicrosoftSQLServerSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocDbSettings
      -> Maybe Text
      -> Maybe PostgreSQLSettings
      -> Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe MySQLSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MySQLSettings")
            Parser
  (Maybe Text
   -> Maybe MicrosoftSQLServerSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocDbSettings
   -> Maybe Text
   -> Maybe PostgreSQLSettings
   -> Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe MicrosoftSQLServerSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocDbSettings
      -> Maybe Text
      -> Maybe PostgreSQLSettings
      -> Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ServerName")
            Parser
  (Maybe MicrosoftSQLServerSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocDbSettings
   -> Maybe Text
   -> Maybe PostgreSQLSettings
   -> Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe MicrosoftSQLServerSettings)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe DocDbSettings
      -> Maybe Text
      -> Maybe PostgreSQLSettings
      -> Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe MicrosoftSQLServerSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MicrosoftSQLServerSettings")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe DocDbSettings
   -> Maybe Text
   -> Maybe PostgreSQLSettings
   -> Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe DocDbSettings
      -> Maybe Text
      -> Maybe PostgreSQLSettings
      -> Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CertificateArn")
            Parser
  (Maybe Text
   -> Maybe DocDbSettings
   -> Maybe Text
   -> Maybe PostgreSQLSettings
   -> Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe DocDbSettings
      -> Maybe Text
      -> Maybe PostgreSQLSettings
      -> Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ServiceAccessRoleArn")
            Parser
  (Maybe DocDbSettings
   -> Maybe Text
   -> Maybe PostgreSQLSettings
   -> Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe DocDbSettings)
-> Parser
     (Maybe Text
      -> Maybe PostgreSQLSettings
      -> Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DocDbSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DocDbSettings")
            Parser
  (Maybe Text
   -> Maybe PostgreSQLSettings
   -> Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe PostgreSQLSettings
      -> Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EngineDisplayName")
            Parser
  (Maybe PostgreSQLSettings
   -> Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe PostgreSQLSettings)
-> Parser
     (Maybe Text
      -> Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe PostgreSQLSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PostgreSQLSettings")
            Parser
  (Maybe Text
   -> Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe KafkaSettings
      -> Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExtraConnectionAttributes")
            Parser
  (Maybe KafkaSettings
   -> Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe KafkaSettings)
-> Parser
     (Maybe OracleSettings
      -> Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe KafkaSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"KafkaSettings")
            Parser
  (Maybe OracleSettings
   -> Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe OracleSettings)
-> Parser
     (Maybe ReplicationEndpointTypeValue
      -> Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe OracleSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"OracleSettings")
            Parser
  (Maybe ReplicationEndpointTypeValue
   -> Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe ReplicationEndpointTypeValue)
-> Parser
     (Maybe RedshiftSettings
      -> Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ReplicationEndpointTypeValue)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EndpointType")
            Parser
  (Maybe RedshiftSettings
   -> Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe RedshiftSettings)
-> Parser
     (Maybe ElasticsearchSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RedshiftSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RedshiftSettings")
            Parser
  (Maybe ElasticsearchSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe ElasticsearchSettings)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ElasticsearchSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ElasticsearchSettings")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Username")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExternalTableDefinition")
            Parser
  (Maybe Text
   -> Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe RedisSettings
      -> Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EngineName")
            Parser
  (Maybe RedisSettings
   -> Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe RedisSettings)
-> Parser
     (Maybe NeptuneSettings
      -> Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RedisSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RedisSettings")
            Parser
  (Maybe NeptuneSettings
   -> Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe NeptuneSettings)
-> Parser
     (Maybe IBMDb2Settings
      -> Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NeptuneSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NeptuneSettings")
            Parser
  (Maybe IBMDb2Settings
   -> Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe IBMDb2Settings)
-> Parser
     (Maybe Text
      -> Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe IBMDb2Settings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"IBMDb2Settings")
            Parser
  (Maybe Text
   -> Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe MongoDbSettings
      -> Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"KmsKeyId")
            Parser
  (Maybe MongoDbSettings
   -> Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe MongoDbSettings)
-> Parser
     (Maybe DmsSslModeValue
      -> Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe MongoDbSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MongoDbSettings")
            Parser
  (Maybe DmsSslModeValue
   -> Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe DmsSslModeValue)
-> Parser
     (Maybe SybaseSettings
      -> Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DmsSslModeValue)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SslMode")
            Parser
  (Maybe SybaseSettings
   -> Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe SybaseSettings)
-> Parser
     (Maybe Text
      -> Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SybaseSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SybaseSettings")
            Parser
  (Maybe Text
   -> Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe S3Settings
      -> Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DatabaseName")
            Parser
  (Maybe S3Settings
   -> Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe S3Settings)
-> Parser
     (Maybe KinesisSettings
      -> Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe S3Settings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"S3Settings")
            Parser
  (Maybe KinesisSettings
   -> Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe KinesisSettings)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe DynamoDbSettings
      -> Maybe Text
      -> Maybe Int
      -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe KinesisSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"KinesisSettings")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe DynamoDbSettings
   -> Maybe Text
   -> Maybe Int
   -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe DynamoDbSettings -> Maybe Text -> Maybe Int -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EndpointIdentifier")
            Parser
  (Maybe Text
   -> Maybe DynamoDbSettings -> Maybe Text -> Maybe Int -> Endpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe DynamoDbSettings -> Maybe Text -> Maybe Int -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExternalId")
            Parser
  (Maybe DynamoDbSettings -> Maybe Text -> Maybe Int -> Endpoint)
-> Parser (Maybe DynamoDbSettings)
-> Parser (Maybe Text -> Maybe Int -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DynamoDbSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DynamoDbSettings")
            Parser (Maybe Text -> Maybe Int -> Endpoint)
-> Parser (Maybe Text) -> Parser (Maybe Int -> Endpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EndpointArn")
            Parser (Maybe Int -> Endpoint)
-> Parser (Maybe Int) -> Parser Endpoint
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Port")
      )

instance Prelude.Hashable Endpoint

instance Prelude.NFData Endpoint