{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.AppFlow.Types.DestinationConnectorProperties where

import Amazonka.AppFlow.Types.CustomConnectorDestinationProperties
import Amazonka.AppFlow.Types.CustomerProfilesDestinationProperties
import Amazonka.AppFlow.Types.EventBridgeDestinationProperties
import Amazonka.AppFlow.Types.HoneycodeDestinationProperties
import Amazonka.AppFlow.Types.LookoutMetricsDestinationProperties
import Amazonka.AppFlow.Types.MarketoDestinationProperties
import Amazonka.AppFlow.Types.RedshiftDestinationProperties
import Amazonka.AppFlow.Types.S3DestinationProperties
import Amazonka.AppFlow.Types.SAPODataDestinationProperties
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.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
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 that are required to query the custom Connector.
    DestinationConnectorProperties
-> Maybe CustomConnectorDestinationProperties
customConnector :: Prelude.Maybe CustomConnectorDestinationProperties,
    -- | The properties required to query Amazon Connect Customer Profiles.
    DestinationConnectorProperties
-> Maybe CustomerProfilesDestinationProperties
customerProfiles :: Prelude.Maybe CustomerProfilesDestinationProperties,
    -- | The properties required to query Amazon EventBridge.
    DestinationConnectorProperties
-> Maybe EventBridgeDestinationProperties
eventBridge :: Prelude.Maybe EventBridgeDestinationProperties,
    -- | 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 Marketo.
    DestinationConnectorProperties
-> Maybe MarketoDestinationProperties
marketo :: Prelude.Maybe MarketoDestinationProperties,
    -- | The properties required to query Amazon Redshift.
    DestinationConnectorProperties
-> Maybe RedshiftDestinationProperties
redshift :: Prelude.Maybe RedshiftDestinationProperties,
    -- | The properties required to query Amazon S3.
    DestinationConnectorProperties -> Maybe S3DestinationProperties
s3 :: Prelude.Maybe S3DestinationProperties,
    -- | The properties required to query SAPOData.
    DestinationConnectorProperties
-> Maybe SAPODataDestinationProperties
sAPOData :: Prelude.Maybe SAPODataDestinationProperties,
    -- | The properties required to query Salesforce.
    DestinationConnectorProperties
-> Maybe SalesforceDestinationProperties
salesforce :: Prelude.Maybe SalesforceDestinationProperties,
    -- | The properties required to query Snowflake.
    DestinationConnectorProperties
-> Maybe SnowflakeDestinationProperties
snowflake :: Prelude.Maybe SnowflakeDestinationProperties,
    -- | The properties required to query Upsolver.
    DestinationConnectorProperties
-> Maybe UpsolverDestinationProperties
upsolver :: Prelude.Maybe UpsolverDestinationProperties,
    -- | The properties required to query Zendesk.
    DestinationConnectorProperties
-> Maybe ZendeskDestinationProperties
zendesk :: Prelude.Maybe ZendeskDestinationProperties
  }
  deriving (DestinationConnectorProperties
-> DestinationConnectorProperties -> Bool
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]
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
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.
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:
--
-- 'customConnector', 'destinationConnectorProperties_customConnector' - The properties that are required to query the custom Connector.
--
-- 'customerProfiles', 'destinationConnectorProperties_customerProfiles' - The properties required to query Amazon Connect Customer Profiles.
--
-- 'eventBridge', 'destinationConnectorProperties_eventBridge' - The properties required to query Amazon EventBridge.
--
-- 'honeycode', 'destinationConnectorProperties_honeycode' - The properties required to query Amazon Honeycode.
--
-- 'lookoutMetrics', 'destinationConnectorProperties_lookoutMetrics' - The properties required to query Amazon Lookout for Metrics.
--
-- 'marketo', 'destinationConnectorProperties_marketo' - The properties required to query Marketo.
--
-- 'redshift', 'destinationConnectorProperties_redshift' - The properties required to query Amazon Redshift.
--
-- 's3', 'destinationConnectorProperties_s3' - The properties required to query Amazon S3.
--
-- 'sAPOData', 'destinationConnectorProperties_sAPOData' - The properties required to query SAPOData.
--
-- 'salesforce', 'destinationConnectorProperties_salesforce' - The properties required to query Salesforce.
--
-- 'snowflake', 'destinationConnectorProperties_snowflake' - The properties required to query Snowflake.
--
-- 'upsolver', 'destinationConnectorProperties_upsolver' - The properties required to query Upsolver.
--
-- 'zendesk', 'destinationConnectorProperties_zendesk' - The properties required to query Zendesk.
newDestinationConnectorProperties ::
  DestinationConnectorProperties
newDestinationConnectorProperties :: DestinationConnectorProperties
newDestinationConnectorProperties =
  DestinationConnectorProperties'
    { $sel:customConnector:DestinationConnectorProperties' :: Maybe CustomConnectorDestinationProperties
customConnector =
        forall a. Maybe a
Prelude.Nothing,
      $sel:customerProfiles:DestinationConnectorProperties' :: Maybe CustomerProfilesDestinationProperties
customerProfiles = forall a. Maybe a
Prelude.Nothing,
      $sel:eventBridge:DestinationConnectorProperties' :: Maybe EventBridgeDestinationProperties
eventBridge = forall a. Maybe a
Prelude.Nothing,
      $sel:honeycode:DestinationConnectorProperties' :: Maybe HoneycodeDestinationProperties
honeycode = forall a. Maybe a
Prelude.Nothing,
      $sel:lookoutMetrics:DestinationConnectorProperties' :: Maybe LookoutMetricsDestinationProperties
lookoutMetrics = forall a. Maybe a
Prelude.Nothing,
      $sel:marketo:DestinationConnectorProperties' :: Maybe MarketoDestinationProperties
marketo = forall a. Maybe a
Prelude.Nothing,
      $sel:redshift:DestinationConnectorProperties' :: Maybe RedshiftDestinationProperties
redshift = forall a. Maybe a
Prelude.Nothing,
      $sel:s3:DestinationConnectorProperties' :: Maybe S3DestinationProperties
s3 = forall a. Maybe a
Prelude.Nothing,
      $sel:sAPOData:DestinationConnectorProperties' :: Maybe SAPODataDestinationProperties
sAPOData = forall a. Maybe a
Prelude.Nothing,
      $sel:salesforce:DestinationConnectorProperties' :: Maybe SalesforceDestinationProperties
salesforce = forall a. Maybe a
Prelude.Nothing,
      $sel:snowflake:DestinationConnectorProperties' :: Maybe SnowflakeDestinationProperties
snowflake = forall a. Maybe a
Prelude.Nothing,
      $sel:upsolver:DestinationConnectorProperties' :: Maybe UpsolverDestinationProperties
upsolver = forall a. Maybe a
Prelude.Nothing,
      $sel:zendesk:DestinationConnectorProperties' :: Maybe ZendeskDestinationProperties
zendesk = forall a. Maybe a
Prelude.Nothing
    }

-- | The properties that are required to query the custom Connector.
destinationConnectorProperties_customConnector :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe CustomConnectorDestinationProperties)
destinationConnectorProperties_customConnector :: Lens'
  DestinationConnectorProperties
  (Maybe CustomConnectorDestinationProperties)
destinationConnectorProperties_customConnector = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe CustomConnectorDestinationProperties
customConnector :: Maybe CustomConnectorDestinationProperties
$sel:customConnector:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe CustomConnectorDestinationProperties
customConnector} -> Maybe CustomConnectorDestinationProperties
customConnector) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe CustomConnectorDestinationProperties
a -> DestinationConnectorProperties
s {$sel:customConnector:DestinationConnectorProperties' :: Maybe CustomConnectorDestinationProperties
customConnector = Maybe CustomConnectorDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Amazon Connect Customer Profiles.
destinationConnectorProperties_customerProfiles :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe CustomerProfilesDestinationProperties)
destinationConnectorProperties_customerProfiles :: Lens'
  DestinationConnectorProperties
  (Maybe CustomerProfilesDestinationProperties)
destinationConnectorProperties_customerProfiles = 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 Amazon EventBridge.
destinationConnectorProperties_eventBridge :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe EventBridgeDestinationProperties)
destinationConnectorProperties_eventBridge :: Lens'
  DestinationConnectorProperties
  (Maybe EventBridgeDestinationProperties)
destinationConnectorProperties_eventBridge = 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 Honeycode.
destinationConnectorProperties_honeycode :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe HoneycodeDestinationProperties)
destinationConnectorProperties_honeycode :: Lens'
  DestinationConnectorProperties
  (Maybe HoneycodeDestinationProperties)
destinationConnectorProperties_honeycode = 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 :: Lens'
  DestinationConnectorProperties
  (Maybe LookoutMetricsDestinationProperties)
destinationConnectorProperties_lookoutMetrics = 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 Marketo.
destinationConnectorProperties_marketo :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe MarketoDestinationProperties)
destinationConnectorProperties_marketo :: Lens'
  DestinationConnectorProperties (Maybe MarketoDestinationProperties)
destinationConnectorProperties_marketo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe MarketoDestinationProperties
marketo :: Maybe MarketoDestinationProperties
$sel:marketo:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe MarketoDestinationProperties
marketo} -> Maybe MarketoDestinationProperties
marketo) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe MarketoDestinationProperties
a -> DestinationConnectorProperties
s {$sel:marketo:DestinationConnectorProperties' :: Maybe MarketoDestinationProperties
marketo = Maybe MarketoDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Amazon Redshift.
destinationConnectorProperties_redshift :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe RedshiftDestinationProperties)
destinationConnectorProperties_redshift :: Lens'
  DestinationConnectorProperties
  (Maybe RedshiftDestinationProperties)
destinationConnectorProperties_redshift = 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)

-- | The properties required to query Amazon S3.
destinationConnectorProperties_s3 :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe S3DestinationProperties)
destinationConnectorProperties_s3 :: Lens'
  DestinationConnectorProperties (Maybe S3DestinationProperties)
destinationConnectorProperties_s3 = 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 SAPOData.
destinationConnectorProperties_sAPOData :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe SAPODataDestinationProperties)
destinationConnectorProperties_sAPOData :: Lens'
  DestinationConnectorProperties
  (Maybe SAPODataDestinationProperties)
destinationConnectorProperties_sAPOData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DestinationConnectorProperties' {Maybe SAPODataDestinationProperties
sAPOData :: Maybe SAPODataDestinationProperties
$sel:sAPOData:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SAPODataDestinationProperties
sAPOData} -> Maybe SAPODataDestinationProperties
sAPOData) (\s :: DestinationConnectorProperties
s@DestinationConnectorProperties' {} Maybe SAPODataDestinationProperties
a -> DestinationConnectorProperties
s {$sel:sAPOData:DestinationConnectorProperties' :: Maybe SAPODataDestinationProperties
sAPOData = Maybe SAPODataDestinationProperties
a} :: DestinationConnectorProperties)

-- | The properties required to query Salesforce.
destinationConnectorProperties_salesforce :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe SalesforceDestinationProperties)
destinationConnectorProperties_salesforce :: Lens'
  DestinationConnectorProperties
  (Maybe SalesforceDestinationProperties)
destinationConnectorProperties_salesforce = 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 Snowflake.
destinationConnectorProperties_snowflake :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe SnowflakeDestinationProperties)
destinationConnectorProperties_snowflake :: Lens'
  DestinationConnectorProperties
  (Maybe SnowflakeDestinationProperties)
destinationConnectorProperties_snowflake = 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 Upsolver.
destinationConnectorProperties_upsolver :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe UpsolverDestinationProperties)
destinationConnectorProperties_upsolver :: Lens'
  DestinationConnectorProperties
  (Maybe UpsolverDestinationProperties)
destinationConnectorProperties_upsolver = 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 Zendesk.
destinationConnectorProperties_zendesk :: Lens.Lens' DestinationConnectorProperties (Prelude.Maybe ZendeskDestinationProperties)
destinationConnectorProperties_zendesk :: Lens'
  DestinationConnectorProperties (Maybe ZendeskDestinationProperties)
destinationConnectorProperties_zendesk = 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)

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

instance
  Prelude.Hashable
    DestinationConnectorProperties
  where
  hashWithSalt :: Int -> DestinationConnectorProperties -> Int
hashWithSalt
    Int
_salt
    DestinationConnectorProperties' {Maybe CustomerProfilesDestinationProperties
Maybe EventBridgeDestinationProperties
Maybe HoneycodeDestinationProperties
Maybe LookoutMetricsDestinationProperties
Maybe MarketoDestinationProperties
Maybe RedshiftDestinationProperties
Maybe S3DestinationProperties
Maybe SnowflakeDestinationProperties
Maybe UpsolverDestinationProperties
Maybe SalesforceDestinationProperties
Maybe SAPODataDestinationProperties
Maybe CustomConnectorDestinationProperties
Maybe ZendeskDestinationProperties
zendesk :: Maybe ZendeskDestinationProperties
upsolver :: Maybe UpsolverDestinationProperties
snowflake :: Maybe SnowflakeDestinationProperties
salesforce :: Maybe SalesforceDestinationProperties
sAPOData :: Maybe SAPODataDestinationProperties
s3 :: Maybe S3DestinationProperties
redshift :: Maybe RedshiftDestinationProperties
marketo :: Maybe MarketoDestinationProperties
lookoutMetrics :: Maybe LookoutMetricsDestinationProperties
honeycode :: Maybe HoneycodeDestinationProperties
eventBridge :: Maybe EventBridgeDestinationProperties
customerProfiles :: Maybe CustomerProfilesDestinationProperties
customConnector :: Maybe CustomConnectorDestinationProperties
$sel:zendesk:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe ZendeskDestinationProperties
$sel:upsolver:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe UpsolverDestinationProperties
$sel:snowflake:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SnowflakeDestinationProperties
$sel:salesforce:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SalesforceDestinationProperties
$sel:sAPOData:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SAPODataDestinationProperties
$sel:s3:DestinationConnectorProperties' :: DestinationConnectorProperties -> Maybe S3DestinationProperties
$sel:redshift:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe RedshiftDestinationProperties
$sel:marketo:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe MarketoDestinationProperties
$sel:lookoutMetrics:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe LookoutMetricsDestinationProperties
$sel:honeycode:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe HoneycodeDestinationProperties
$sel:eventBridge:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe EventBridgeDestinationProperties
$sel:customerProfiles:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe CustomerProfilesDestinationProperties
$sel:customConnector:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe CustomConnectorDestinationProperties
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CustomConnectorDestinationProperties
customConnector
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CustomerProfilesDestinationProperties
customerProfiles
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EventBridgeDestinationProperties
eventBridge
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HoneycodeDestinationProperties
honeycode
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LookoutMetricsDestinationProperties
lookoutMetrics
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MarketoDestinationProperties
marketo
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RedshiftDestinationProperties
redshift
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe S3DestinationProperties
s3
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SAPODataDestinationProperties
sAPOData
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SalesforceDestinationProperties
salesforce
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SnowflakeDestinationProperties
snowflake
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UpsolverDestinationProperties
upsolver
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ZendeskDestinationProperties
zendesk

instance
  Prelude.NFData
    DestinationConnectorProperties
  where
  rnf :: DestinationConnectorProperties -> ()
rnf DestinationConnectorProperties' {Maybe CustomerProfilesDestinationProperties
Maybe EventBridgeDestinationProperties
Maybe HoneycodeDestinationProperties
Maybe LookoutMetricsDestinationProperties
Maybe MarketoDestinationProperties
Maybe RedshiftDestinationProperties
Maybe S3DestinationProperties
Maybe SnowflakeDestinationProperties
Maybe UpsolverDestinationProperties
Maybe SalesforceDestinationProperties
Maybe SAPODataDestinationProperties
Maybe CustomConnectorDestinationProperties
Maybe ZendeskDestinationProperties
zendesk :: Maybe ZendeskDestinationProperties
upsolver :: Maybe UpsolverDestinationProperties
snowflake :: Maybe SnowflakeDestinationProperties
salesforce :: Maybe SalesforceDestinationProperties
sAPOData :: Maybe SAPODataDestinationProperties
s3 :: Maybe S3DestinationProperties
redshift :: Maybe RedshiftDestinationProperties
marketo :: Maybe MarketoDestinationProperties
lookoutMetrics :: Maybe LookoutMetricsDestinationProperties
honeycode :: Maybe HoneycodeDestinationProperties
eventBridge :: Maybe EventBridgeDestinationProperties
customerProfiles :: Maybe CustomerProfilesDestinationProperties
customConnector :: Maybe CustomConnectorDestinationProperties
$sel:zendesk:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe ZendeskDestinationProperties
$sel:upsolver:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe UpsolverDestinationProperties
$sel:snowflake:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SnowflakeDestinationProperties
$sel:salesforce:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SalesforceDestinationProperties
$sel:sAPOData:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe SAPODataDestinationProperties
$sel:s3:DestinationConnectorProperties' :: DestinationConnectorProperties -> Maybe S3DestinationProperties
$sel:redshift:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe RedshiftDestinationProperties
$sel:marketo:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe MarketoDestinationProperties
$sel:lookoutMetrics:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe LookoutMetricsDestinationProperties
$sel:honeycode:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe HoneycodeDestinationProperties
$sel:eventBridge:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe EventBridgeDestinationProperties
$sel:customerProfiles:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe CustomerProfilesDestinationProperties
$sel:customConnector:DestinationConnectorProperties' :: DestinationConnectorProperties
-> Maybe CustomConnectorDestinationProperties
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe CustomConnectorDestinationProperties
customConnector
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CustomerProfilesDestinationProperties
customerProfiles
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EventBridgeDestinationProperties
eventBridge
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HoneycodeDestinationProperties
honeycode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LookoutMetricsDestinationProperties
lookoutMetrics
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MarketoDestinationProperties
marketo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RedshiftDestinationProperties
redshift
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe S3DestinationProperties
s3
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SAPODataDestinationProperties
sAPOData
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SalesforceDestinationProperties
salesforce
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SnowflakeDestinationProperties
snowflake
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UpsolverDestinationProperties
upsolver
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ZendeskDestinationProperties
zendesk

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