{-# 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.AppFlow.Types.DestinationConnectorProperties
-- 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.AppFlow.Types.DestinationConnectorProperties where

import Amazonka.AppFlow.Types.CustomerProfilesDestinationProperties
import Amazonka.AppFlow.Types.EventBridgeDestinationProperties
import Amazonka.AppFlow.Types.HoneycodeDestinationProperties
import Amazonka.AppFlow.Types.LookoutMetricsDestinationProperties
import Amazonka.AppFlow.Types.RedshiftDestinationProperties
import Amazonka.AppFlow.Types.S3DestinationProperties
import Amazonka.AppFlow.Types.SalesforceDestinationProperties
import Amazonka.AppFlow.Types.SnowflakeDestinationProperties
import Amazonka.AppFlow.Types.UpsolverDestinationProperties
import Amazonka.AppFlow.Types.ZendeskDestinationProperties
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | This stores the information that is required to query a particular
-- connector.
--
-- /See:/ 'newDestinationConnectorProperties' smart constructor.
data DestinationConnectorProperties = DestinationConnectorProperties'
  { -- | The properties required to query Upsolver.
    DestinationConnectorProperties
-> Maybe UpsolverDestinationProperties
upsolver :: Prelude.Maybe UpsolverDestinationProperties,
    -- | The properties required to query Snowflake.
    DestinationConnectorProperties
-> Maybe SnowflakeDestinationProperties
snowflake :: Prelude.Maybe SnowflakeDestinationProperties,
    -- | The properties required to query Amazon Honeycode.
    DestinationConnectorProperties
-> Maybe HoneycodeDestinationProperties
honeycode :: Prelude.Maybe HoneycodeDestinationProperties,
    -- | The properties required to query Amazon Lookout for Metrics.
    DestinationConnectorProperties
-> Maybe LookoutMetricsDestinationProperties
lookoutMetrics :: Prelude.Maybe LookoutMetricsDestinationProperties,
    -- | The properties required to query Amazon Connect Customer Profiles.
    DestinationConnectorProperties
-> Maybe CustomerProfilesDestinationProperties
customerProfiles :: Prelude.Maybe CustomerProfilesDestinationProperties,
    -- | The properties required to query Salesforce.
    DestinationConnectorProperties
-> Maybe SalesforceDestinationProperties
salesforce :: Prelude.Maybe SalesforceDestinationProperties,
    -- | The properties required to query Zendesk.
    DestinationConnectorProperties
-> Maybe ZendeskDestinationProperties
zendesk :: Prelude.Maybe ZendeskDestinationProperties,
    -- | The properties required to query Amazon S3.
    DestinationConnectorProperties -> Maybe S3DestinationProperties
s3 :: Prelude.Maybe S3DestinationProperties,
    -- | The properties required to query Amazon EventBridge.
    DestinationConnectorProperties
-> Maybe EventBridgeDestinationProperties
eventBridge :: Prelude.Maybe EventBridgeDestinationProperties,
    -- | The properties required to query Amazon Redshift.
    DestinationConnectorProperties
-> Maybe RedshiftDestinationProperties
redshift :: Prelude.Maybe RedshiftDestinationProperties
  }
  deriving (DestinationConnectorProperties
-> DestinationConnectorProperties -> Bool
(DestinationConnectorProperties
 -> DestinationConnectorProperties -> Bool)
-> (DestinationConnectorProperties
    -> DestinationConnectorProperties -> Bool)
-> Eq DestinationConnectorProperties
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DestinationConnectorProperties
-> DestinationConnectorProperties -> Bool
$c/= :: DestinationConnectorProperties
-> DestinationConnectorProperties -> Bool
== :: DestinationConnectorProperties
-> DestinationConnectorProperties -> Bool
$c== :: DestinationConnectorProperties
-> DestinationConnectorProperties -> Bool
Prelude.Eq, ReadPrec [DestinationConnectorProperties]
ReadPrec DestinationConnectorProperties
Int -> ReadS DestinationConnectorProperties
ReadS [DestinationConnectorProperties]
(Int -> ReadS DestinationConnectorProperties)
-> ReadS [DestinationConnectorProperties]
-> ReadPrec DestinationConnectorProperties
-> ReadPrec [DestinationConnectorProperties]
-> Read DestinationConnectorProperties
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DestinationConnectorProperties]
$creadListPrec :: ReadPrec [DestinationConnectorProperties]
readPrec :: ReadPrec DestinationConnectorProperties
$creadPrec :: ReadPrec DestinationConnectorProperties
readList :: ReadS [DestinationConnectorProperties]
$creadList :: ReadS [DestinationConnectorProperties]
readsPrec :: Int -> ReadS DestinationConnectorProperties
$creadsPrec :: Int -> ReadS DestinationConnectorProperties
Prelude.Read, Int -> DestinationConnectorProperties -> ShowS
[DestinationConnectorProperties] -> ShowS
DestinationConnectorProperties -> String
(Int -> DestinationConnectorProperties -> ShowS)
-> (DestinationConnectorProperties -> String)
-> ([DestinationConnectorProperties] -> ShowS)
-> Show DestinationConnectorProperties
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DestinationConnectorProperties] -> ShowS
$cshowList :: [DestinationConnectorProperties] -> ShowS
show :: DestinationConnectorProperties -> String
$cshow :: DestinationConnectorProperties -> String
showsPrec :: Int -> DestinationConnectorProperties -> ShowS
$cshowsPrec :: Int -> DestinationConnectorProperties -> ShowS
Prelude.Show, (forall x.
 DestinationConnectorProperties
 -> Rep DestinationConnectorProperties x)
-> (forall x.
    Rep DestinationConnectorProperties x
    -> DestinationConnectorProperties)
-> Generic DestinationConnectorProperties
forall x.
Rep DestinationConnectorProperties x
-> DestinationConnectorProperties
forall x.
DestinationConnectorProperties
-> Rep DestinationConnectorProperties x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DestinationConnectorProperties x
-> DestinationConnectorProperties
$cfrom :: forall x.
DestinationConnectorProperties
-> Rep DestinationConnectorProperties x
Prelude.Generic)

-- |
-- Create a value of 'DestinationConnectorProperties' 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:
--
-- 'upsolver', 'destinationConnectorProperties_upsolver' - The properties required to query Upsolver.
--
-- 'snowflake', 'destinationConnectorProperties_snowflake' - The properties required to query Snowflake.
--
-- 'honeycode', 'destinationConnectorProperties_honeycode' - The properties required to query Amazon Honeycode.
--
-- 'lookoutMetrics', 'destinationConnectorProperties_lookoutMetrics' - The properties required to query Amazon Lookout for Metrics.
--
-- 'customerProfiles', 'destinationConnectorProperties_customerProfiles' - The properties required to query Amazon Connect Customer Profiles.
--
-- 'salesforce', 'destinationConnectorProperties_salesforce' - The properties required to query Salesforce.
--
-- 'zendesk', 'destinationConnectorProperties_zendesk' - The properties required to query Zendesk.
--
-- 's3', 'destinationConnectorProperties_s3' - The properties required to query Amazon S3.
--
-- 'eventBridge', 'destinationConnectorProperties_eventBridge' - The properties required to query Amazon EventBridge.
--
-- 'redshift', 'destinationConnectorProperties_redshift' - The properties required to query Amazon Redshift.
newDestinationConnectorProperties ::
  DestinationConnectorProperties
newDestinationConnectorProperties :: DestinationConnectorProperties
newDestinationConnectorProperties =
  DestinationConnectorProperties' :: Maybe UpsolverDestinationProperties
-> Maybe SnowflakeDestinationProperties
-> Maybe HoneycodeDestinationProperties
-> Maybe LookoutMetricsDestinationProperties
-> Maybe CustomerProfilesDestinationProperties
-> Maybe SalesforceDestinationProperties
-> Maybe ZendeskDestinationProperties
-> Maybe S3DestinationProperties
-> Maybe EventBridgeDestinationProperties
-> Maybe RedshiftDestinationProperties
-> DestinationConnectorProperties
DestinationConnectorProperties'
    { $sel:upsolver:DestinationConnectorProperties' :: Maybe UpsolverDestinationProperties
upsolver =
        Maybe UpsolverDestinationProperties
forall a. Maybe a
Prelude.Nothing,
      $sel:snowflake:DestinationConnectorProperties' :: Maybe SnowflakeDestinationProperties
snowflake = Maybe SnowflakeDestinationProperties
forall a. Maybe a
Prelude.Nothing,
      $sel:honeycode:DestinationConnectorProperties' :: Maybe HoneycodeDestinationProperties
honeycode = Maybe HoneycodeDestinationProperties
forall a. Maybe a
Prelude.Nothing,
      $sel:lookoutMetrics:DestinationConnectorProperties' :: Maybe LookoutMetricsDestinationProperties
lookoutMetrics = Maybe LookoutMetricsDestinationProperties
forall a. Maybe a
Prelude.Nothing,
      $sel:customerProfiles:DestinationConnectorProperties' :: Maybe CustomerProfilesDestinationProperties
customerProfiles = Maybe CustomerProfilesDestinationProperties
forall a. Maybe a
Prelude.Nothing,
      $sel:salesforce:DestinationConnectorProperties' :: Maybe SalesforceDestinationProperties
salesforce = Maybe SalesforceDestinationProperties
forall a. Maybe a
Prelude.Nothing,
      $sel:zendesk:DestinationConnectorProperties' :: Maybe ZendeskDestinationProperties
zendesk = Maybe ZendeskDestinationProperties
forall a. Maybe a
Prelude.Nothing,
      $sel:s3:DestinationConnectorProperties' :: Maybe S3DestinationProperties
s3 = Maybe S3DestinationProperties
forall a. Maybe a
Prelude.Nothing,
      $sel:eventBridge:DestinationConnectorProperties' :: Maybe EventBridgeDestinationProperties
eventBridge = Maybe EventBridgeDestinationProperties
forall a. Maybe a
Prelude.Nothing,
      $sel:redshift:DestinationConnectorProperties' :: Maybe RedshiftDestinationProperties
redshift = Maybe RedshiftDestinationProperties
forall a. Maybe a
Prelude.Nothing
    }

-- | The properties required to query Upsolver.
destinationConnectorProperties_upsolver :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe UpsolverDestinationProperties)
destinationConnectorProperties_upsolver :: (Maybe UpsolverDestinationProperties
 -> f (Maybe UpsolverDestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_upsolver = (DestinationConnectorProperties
 -> Maybe UpsolverDestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe UpsolverDestinationProperties
    -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe UpsolverDestinationProperties)
     (Maybe UpsolverDestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe UpsolverDestinationProperties
upsolver :: Maybe UpsolverDestinationProperties
$sel:upsolver:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe UpsolverDestinationProperties
upsolver} -> Maybe UpsolverDestinationProperties
upsolver) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe UpsolverDestinationProperties
a -> DestinationConnectorProperties
s {$sel:upsolver:DestinationConnectorProperties' :: Maybe UpsolverDestinationProperties
upsolver = Maybe UpsolverDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Snowflake.
destinationConnectorProperties_snowflake :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe SnowflakeDestinationProperties)
destinationConnectorProperties_snowflake :: (Maybe SnowflakeDestinationProperties
 -> f (Maybe SnowflakeDestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_snowflake = (DestinationConnectorProperties
 -> Maybe SnowflakeDestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe SnowflakeDestinationProperties
    -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe SnowflakeDestinationProperties)
     (Maybe SnowflakeDestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe SnowflakeDestinationProperties
snowflake :: Maybe SnowflakeDestinationProperties
$sel:snowflake:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SnowflakeDestinationProperties
snowflake} -> Maybe SnowflakeDestinationProperties
snowflake) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe SnowflakeDestinationProperties
a -> DestinationConnectorProperties
s {$sel:snowflake:DestinationConnectorProperties' :: Maybe SnowflakeDestinationProperties
snowflake = Maybe SnowflakeDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Amazon Honeycode.
destinationConnectorProperties_honeycode :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe HoneycodeDestinationProperties)
destinationConnectorProperties_honeycode :: (Maybe HoneycodeDestinationProperties
 -> f (Maybe HoneycodeDestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_honeycode = (DestinationConnectorProperties
 -> Maybe HoneycodeDestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe HoneycodeDestinationProperties
    -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe HoneycodeDestinationProperties)
     (Maybe HoneycodeDestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe HoneycodeDestinationProperties
honeycode :: Maybe HoneycodeDestinationProperties
$sel:honeycode:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe HoneycodeDestinationProperties
honeycode} -> Maybe HoneycodeDestinationProperties
honeycode) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe HoneycodeDestinationProperties
a -> DestinationConnectorProperties
s {$sel:honeycode:DestinationConnectorProperties' :: Maybe HoneycodeDestinationProperties
honeycode = Maybe HoneycodeDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Amazon Lookout for Metrics.
destinationConnectorProperties_lookoutMetrics :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe LookoutMetricsDestinationProperties)
destinationConnectorProperties_lookoutMetrics :: (Maybe LookoutMetricsDestinationProperties
 -> f (Maybe LookoutMetricsDestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_lookoutMetrics = (DestinationConnectorProperties
 -> Maybe LookoutMetricsDestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe LookoutMetricsDestinationProperties
    -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe LookoutMetricsDestinationProperties)
     (Maybe LookoutMetricsDestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe LookoutMetricsDestinationProperties
lookoutMetrics :: Maybe LookoutMetricsDestinationProperties
$sel:lookoutMetrics:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe LookoutMetricsDestinationProperties
lookoutMetrics} -> Maybe LookoutMetricsDestinationProperties
lookoutMetrics) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe LookoutMetricsDestinationProperties
a -> DestinationConnectorProperties
s {$sel:lookoutMetrics:DestinationConnectorProperties' :: Maybe LookoutMetricsDestinationProperties
lookoutMetrics = Maybe LookoutMetricsDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Amazon Connect Customer Profiles.
destinationConnectorProperties_customerProfiles :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe CustomerProfilesDestinationProperties)
destinationConnectorProperties_customerProfiles :: (Maybe CustomerProfilesDestinationProperties
 -> f (Maybe CustomerProfilesDestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_customerProfiles = (DestinationConnectorProperties
 -> Maybe CustomerProfilesDestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe CustomerProfilesDestinationProperties
    -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe CustomerProfilesDestinationProperties)
     (Maybe CustomerProfilesDestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe CustomerProfilesDestinationProperties
customerProfiles :: Maybe CustomerProfilesDestinationProperties
$sel:customerProfiles:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe CustomerProfilesDestinationProperties
customerProfiles} -> Maybe CustomerProfilesDestinationProperties
customerProfiles) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe CustomerProfilesDestinationProperties
a -> DestinationConnectorProperties
s {$sel:customerProfiles:DestinationConnectorProperties' :: Maybe CustomerProfilesDestinationProperties
customerProfiles = Maybe CustomerProfilesDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Salesforce.
destinationConnectorProperties_salesforce :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe SalesforceDestinationProperties)
destinationConnectorProperties_salesforce :: (Maybe SalesforceDestinationProperties
 -> f (Maybe SalesforceDestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_salesforce = (DestinationConnectorProperties
 -> Maybe SalesforceDestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe SalesforceDestinationProperties
    -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe SalesforceDestinationProperties)
     (Maybe SalesforceDestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe SalesforceDestinationProperties
salesforce :: Maybe SalesforceDestinationProperties
$sel:salesforce:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SalesforceDestinationProperties
salesforce} -> Maybe SalesforceDestinationProperties
salesforce) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe SalesforceDestinationProperties
a -> DestinationConnectorProperties
s {$sel:salesforce:DestinationConnectorProperties' :: Maybe SalesforceDestinationProperties
salesforce = Maybe SalesforceDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Zendesk.
destinationConnectorProperties_zendesk :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe ZendeskDestinationProperties)
destinationConnectorProperties_zendesk :: (Maybe ZendeskDestinationProperties
 -> f (Maybe ZendeskDestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_zendesk = (DestinationConnectorProperties
 -> Maybe ZendeskDestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe ZendeskDestinationProperties
    -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe ZendeskDestinationProperties)
     (Maybe ZendeskDestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe ZendeskDestinationProperties
zendesk :: Maybe ZendeskDestinationProperties
$sel:zendesk:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe ZendeskDestinationProperties
zendesk} -> Maybe ZendeskDestinationProperties
zendesk) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe ZendeskDestinationProperties
a -> DestinationConnectorProperties
s {$sel:zendesk:DestinationConnectorProperties' :: Maybe ZendeskDestinationProperties
zendesk = Maybe ZendeskDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Amazon S3.
destinationConnectorProperties_s3 :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe S3DestinationProperties)
destinationConnectorProperties_s3 :: (Maybe S3DestinationProperties
 -> f (Maybe S3DestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_s3 = (DestinationConnectorProperties -> Maybe S3DestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe S3DestinationProperties -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe S3DestinationProperties)
     (Maybe S3DestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe S3DestinationProperties
s3 :: Maybe S3DestinationProperties
$sel:s3:DestinationConnectorProperties' :: DestinationConnectorProperties -> Maybe S3DestinationProperties
s3} -> Maybe S3DestinationProperties
s3) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe S3DestinationProperties
a -> DestinationConnectorProperties
s {$sel:s3:DestinationConnectorProperties' :: Maybe S3DestinationProperties
s3 = Maybe S3DestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Amazon EventBridge.
destinationConnectorProperties_eventBridge :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe EventBridgeDestinationProperties)
destinationConnectorProperties_eventBridge :: (Maybe EventBridgeDestinationProperties
 -> f (Maybe EventBridgeDestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_eventBridge = (DestinationConnectorProperties
 -> Maybe EventBridgeDestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe EventBridgeDestinationProperties
    -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe EventBridgeDestinationProperties)
     (Maybe EventBridgeDestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe EventBridgeDestinationProperties
eventBridge :: Maybe EventBridgeDestinationProperties
$sel:eventBridge:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe EventBridgeDestinationProperties
eventBridge} -> Maybe EventBridgeDestinationProperties
eventBridge) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe EventBridgeDestinationProperties
a -> DestinationConnectorProperties
s {$sel:eventBridge:DestinationConnectorProperties' :: Maybe EventBridgeDestinationProperties
eventBridge = Maybe EventBridgeDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Amazon Redshift.
destinationConnectorProperties_redshift :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe RedshiftDestinationProperties)
destinationConnectorProperties_redshift :: (Maybe RedshiftDestinationProperties
 -> f (Maybe RedshiftDestinationProperties))
-> DestinationConnectorProperties
-> f DestinationConnectorProperties
destinationConnectorProperties_redshift = (DestinationConnectorProperties
 -> Maybe RedshiftDestinationProperties)
-> (DestinationConnectorProperties
    -> Maybe RedshiftDestinationProperties
    -> DestinationConnectorProperties)
-> Lens
     DestinationConnectorProperties
     DestinationConnectorProperties
     (Maybe RedshiftDestinationProperties)
     (Maybe RedshiftDestinationProperties)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe RedshiftDestinationProperties
redshift :: Maybe RedshiftDestinationProperties
$sel:redshift:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe RedshiftDestinationProperties
redshift} -> Maybe RedshiftDestinationProperties
redshift) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe RedshiftDestinationProperties
a -> DestinationConnectorProperties
s {$sel:redshift:DestinationConnectorProperties' :: Maybe RedshiftDestinationProperties
redshift = Maybe RedshiftDestinationProperties
a} :: DestinationConnectorProperties)

instance Core.FromJSON DestinationConnectorProperties where
  parseJSON :: Value -> Parser DestinationConnectorProperties
parseJSON =
    String
-> (Object -> Parser DestinationConnectorProperties)
-> Value
-> Parser DestinationConnectorProperties
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"DestinationConnectorProperties"
      ( \Object
x ->
          Maybe UpsolverDestinationProperties
-> Maybe SnowflakeDestinationProperties
-> Maybe HoneycodeDestinationProperties
-> Maybe LookoutMetricsDestinationProperties
-> Maybe CustomerProfilesDestinationProperties
-> Maybe SalesforceDestinationProperties
-> Maybe ZendeskDestinationProperties
-> Maybe S3DestinationProperties
-> Maybe EventBridgeDestinationProperties
-> Maybe RedshiftDestinationProperties
-> DestinationConnectorProperties
DestinationConnectorProperties'
            (Maybe UpsolverDestinationProperties
 -> Maybe SnowflakeDestinationProperties
 -> Maybe HoneycodeDestinationProperties
 -> Maybe LookoutMetricsDestinationProperties
 -> Maybe CustomerProfilesDestinationProperties
 -> Maybe SalesforceDestinationProperties
 -> Maybe ZendeskDestinationProperties
 -> Maybe S3DestinationProperties
 -> Maybe EventBridgeDestinationProperties
 -> Maybe RedshiftDestinationProperties
 -> DestinationConnectorProperties)
-> Parser (Maybe UpsolverDestinationProperties)
-> Parser
     (Maybe SnowflakeDestinationProperties
      -> Maybe HoneycodeDestinationProperties
      -> Maybe LookoutMetricsDestinationProperties
      -> Maybe CustomerProfilesDestinationProperties
      -> Maybe SalesforceDestinationProperties
      -> Maybe ZendeskDestinationProperties
      -> Maybe S3DestinationProperties
      -> Maybe EventBridgeDestinationProperties
      -> Maybe RedshiftDestinationProperties
      -> DestinationConnectorProperties)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe UpsolverDestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Upsolver")
            Parser
  (Maybe SnowflakeDestinationProperties
   -> Maybe HoneycodeDestinationProperties
   -> Maybe LookoutMetricsDestinationProperties
   -> Maybe CustomerProfilesDestinationProperties
   -> Maybe SalesforceDestinationProperties
   -> Maybe ZendeskDestinationProperties
   -> Maybe S3DestinationProperties
   -> Maybe EventBridgeDestinationProperties
   -> Maybe RedshiftDestinationProperties
   -> DestinationConnectorProperties)
-> Parser (Maybe SnowflakeDestinationProperties)
-> Parser
     (Maybe HoneycodeDestinationProperties
      -> Maybe LookoutMetricsDestinationProperties
      -> Maybe CustomerProfilesDestinationProperties
      -> Maybe SalesforceDestinationProperties
      -> Maybe ZendeskDestinationProperties
      -> Maybe S3DestinationProperties
      -> Maybe EventBridgeDestinationProperties
      -> Maybe RedshiftDestinationProperties
      -> DestinationConnectorProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SnowflakeDestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Snowflake")
            Parser
  (Maybe HoneycodeDestinationProperties
   -> Maybe LookoutMetricsDestinationProperties
   -> Maybe CustomerProfilesDestinationProperties
   -> Maybe SalesforceDestinationProperties
   -> Maybe ZendeskDestinationProperties
   -> Maybe S3DestinationProperties
   -> Maybe EventBridgeDestinationProperties
   -> Maybe RedshiftDestinationProperties
   -> DestinationConnectorProperties)
-> Parser (Maybe HoneycodeDestinationProperties)
-> Parser
     (Maybe LookoutMetricsDestinationProperties
      -> Maybe CustomerProfilesDestinationProperties
      -> Maybe SalesforceDestinationProperties
      -> Maybe ZendeskDestinationProperties
      -> Maybe S3DestinationProperties
      -> Maybe EventBridgeDestinationProperties
      -> Maybe RedshiftDestinationProperties
      -> DestinationConnectorProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HoneycodeDestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Honeycode")
            Parser
  (Maybe LookoutMetricsDestinationProperties
   -> Maybe CustomerProfilesDestinationProperties
   -> Maybe SalesforceDestinationProperties
   -> Maybe ZendeskDestinationProperties
   -> Maybe S3DestinationProperties
   -> Maybe EventBridgeDestinationProperties
   -> Maybe RedshiftDestinationProperties
   -> DestinationConnectorProperties)
-> Parser (Maybe LookoutMetricsDestinationProperties)
-> Parser
     (Maybe CustomerProfilesDestinationProperties
      -> Maybe SalesforceDestinationProperties
      -> Maybe ZendeskDestinationProperties
      -> Maybe S3DestinationProperties
      -> Maybe EventBridgeDestinationProperties
      -> Maybe RedshiftDestinationProperties
      -> DestinationConnectorProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe LookoutMetricsDestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LookoutMetrics")
            Parser
  (Maybe CustomerProfilesDestinationProperties
   -> Maybe SalesforceDestinationProperties
   -> Maybe ZendeskDestinationProperties
   -> Maybe S3DestinationProperties
   -> Maybe EventBridgeDestinationProperties
   -> Maybe RedshiftDestinationProperties
   -> DestinationConnectorProperties)
-> Parser (Maybe CustomerProfilesDestinationProperties)
-> Parser
     (Maybe SalesforceDestinationProperties
      -> Maybe ZendeskDestinationProperties
      -> Maybe S3DestinationProperties
      -> Maybe EventBridgeDestinationProperties
      -> Maybe RedshiftDestinationProperties
      -> DestinationConnectorProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe CustomerProfilesDestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CustomerProfiles")
            Parser
  (Maybe SalesforceDestinationProperties
   -> Maybe ZendeskDestinationProperties
   -> Maybe S3DestinationProperties
   -> Maybe EventBridgeDestinationProperties
   -> Maybe RedshiftDestinationProperties
   -> DestinationConnectorProperties)
-> Parser (Maybe SalesforceDestinationProperties)
-> Parser
     (Maybe ZendeskDestinationProperties
      -> Maybe S3DestinationProperties
      -> Maybe EventBridgeDestinationProperties
      -> Maybe RedshiftDestinationProperties
      -> DestinationConnectorProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SalesforceDestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Salesforce")
            Parser
  (Maybe ZendeskDestinationProperties
   -> Maybe S3DestinationProperties
   -> Maybe EventBridgeDestinationProperties
   -> Maybe RedshiftDestinationProperties
   -> DestinationConnectorProperties)
-> Parser (Maybe ZendeskDestinationProperties)
-> Parser
     (Maybe S3DestinationProperties
      -> Maybe EventBridgeDestinationProperties
      -> Maybe RedshiftDestinationProperties
      -> DestinationConnectorProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ZendeskDestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Zendesk")
            Parser
  (Maybe S3DestinationProperties
   -> Maybe EventBridgeDestinationProperties
   -> Maybe RedshiftDestinationProperties
   -> DestinationConnectorProperties)
-> Parser (Maybe S3DestinationProperties)
-> Parser
     (Maybe EventBridgeDestinationProperties
      -> Maybe RedshiftDestinationProperties
      -> DestinationConnectorProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe S3DestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"S3")
            Parser
  (Maybe EventBridgeDestinationProperties
   -> Maybe RedshiftDestinationProperties
   -> DestinationConnectorProperties)
-> Parser (Maybe EventBridgeDestinationProperties)
-> Parser
     (Maybe RedshiftDestinationProperties
      -> DestinationConnectorProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EventBridgeDestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EventBridge")
            Parser
  (Maybe RedshiftDestinationProperties
   -> DestinationConnectorProperties)
-> Parser (Maybe RedshiftDestinationProperties)
-> Parser DestinationConnectorProperties
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RedshiftDestinationProperties)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Redshift")
      )

instance
  Prelude.Hashable
    DestinationConnectorProperties

instance
  Prelude.NFData
    DestinationConnectorProperties

instance Core.ToJSON DestinationConnectorProperties where
  toJSON :: DestinationConnectorProperties -> Value
toJSON DestinationConnectorProperties' {Maybe CustomerProfilesDestinationProperties
Maybe EventBridgeDestinationProperties
Maybe HoneycodeDestinationProperties
Maybe LookoutMetricsDestinationProperties
Maybe RedshiftDestinationProperties
Maybe S3DestinationProperties
Maybe SnowflakeDestinationProperties
Maybe UpsolverDestinationProperties
Maybe SalesforceDestinationProperties
Maybe ZendeskDestinationProperties
redshift :: Maybe RedshiftDestinationProperties
eventBridge :: Maybe EventBridgeDestinationProperties
s3 :: Maybe S3DestinationProperties
zendesk :: Maybe ZendeskDestinationProperties
salesforce :: Maybe SalesforceDestinationProperties
customerProfiles :: Maybe CustomerProfilesDestinationProperties
lookoutMetrics :: Maybe LookoutMetricsDestinationProperties
honeycode :: Maybe HoneycodeDestinationProperties
snowflake :: Maybe SnowflakeDestinationProperties
upsolver :: Maybe UpsolverDestinationProperties
$sel:redshift:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe RedshiftDestinationProperties
$sel:eventBridge:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe EventBridgeDestinationProperties
$sel:s3:DestinationConnectorProperties' :: DestinationConnectorProperties -> Maybe S3DestinationProperties
$sel:zendesk:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe ZendeskDestinationProperties
$sel:salesforce:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SalesforceDestinationProperties
$sel:customerProfiles:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe CustomerProfilesDestinationProperties
$sel:lookoutMetrics:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe LookoutMetricsDestinationProperties
$sel:honeycode:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe HoneycodeDestinationProperties
$sel:snowflake:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SnowflakeDestinationProperties
$sel:upsolver:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe UpsolverDestinationProperties
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"Upsolver" Text -> UpsolverDestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (UpsolverDestinationProperties -> Pair)
-> Maybe UpsolverDestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe UpsolverDestinationProperties
upsolver,
            (Text
"Snowflake" Text -> SnowflakeDestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (SnowflakeDestinationProperties -> Pair)
-> Maybe SnowflakeDestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SnowflakeDestinationProperties
snowflake,
            (Text
"Honeycode" Text -> HoneycodeDestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (HoneycodeDestinationProperties -> Pair)
-> Maybe HoneycodeDestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HoneycodeDestinationProperties
honeycode,
            (Text
"LookoutMetrics" Text -> LookoutMetricsDestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (LookoutMetricsDestinationProperties -> Pair)
-> Maybe LookoutMetricsDestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LookoutMetricsDestinationProperties
lookoutMetrics,
            (Text
"CustomerProfiles" Text -> CustomerProfilesDestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CustomerProfilesDestinationProperties -> Pair)
-> Maybe CustomerProfilesDestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CustomerProfilesDestinationProperties
customerProfiles,
            (Text
"Salesforce" Text -> SalesforceDestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (SalesforceDestinationProperties -> Pair)
-> Maybe SalesforceDestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SalesforceDestinationProperties
salesforce,
            (Text
"Zendesk" Text -> ZendeskDestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (ZendeskDestinationProperties -> Pair)
-> Maybe ZendeskDestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ZendeskDestinationProperties
zendesk,
            (Text
"S3" Text -> S3DestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (S3DestinationProperties -> Pair)
-> Maybe S3DestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe S3DestinationProperties
s3,
            (Text
"EventBridge" Text -> EventBridgeDestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (EventBridgeDestinationProperties -> Pair)
-> Maybe EventBridgeDestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EventBridgeDestinationProperties
eventBridge,
            (Text
"Redshift" Text -> RedshiftDestinationProperties -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (RedshiftDestinationProperties -> Pair)
-> Maybe RedshiftDestinationProperties -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RedshiftDestinationProperties
redshift
          ]
      )