{-# 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.Scheduler.Types.Target
-- 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.Scheduler.Types.Target where

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
import Amazonka.Scheduler.Types.DeadLetterConfig
import Amazonka.Scheduler.Types.EcsParameters
import Amazonka.Scheduler.Types.EventBridgeParameters
import Amazonka.Scheduler.Types.KinesisParameters
import Amazonka.Scheduler.Types.RetryPolicy
import Amazonka.Scheduler.Types.SageMakerPipelineParameters
import Amazonka.Scheduler.Types.SqsParameters

-- | The schedule\'s target. EventBridge Scheduler supports templated target
-- that invoke common API operations, as well as universal targets that you
-- can customize to invoke over 6,000 API operations across more than 270
-- services. You can only specify one templated or universal target for a
-- schedule.
--
-- /See:/ 'newTarget' smart constructor.
data Target = Target'
  { -- | An object that contains information about an Amazon SQS queue that
    -- EventBridge Scheduler uses as a dead-letter queue for your schedule. If
    -- specified, EventBridge Scheduler delivers failed events that could not
    -- be successfully delivered to a target to the queue.
    Target -> Maybe DeadLetterConfig
deadLetterConfig :: Prelude.Maybe DeadLetterConfig,
    -- | The templated target type for the Amazon ECS
    -- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html RunTask>
    -- API operation.
    Target -> Maybe EcsParameters
ecsParameters :: Prelude.Maybe EcsParameters,
    -- | The templated target type for the EventBridge
    -- <https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html PutEvents>
    -- API operation.
    Target -> Maybe EventBridgeParameters
eventBridgeParameters :: Prelude.Maybe EventBridgeParameters,
    -- | The text, or well-formed JSON, passed to the target. If you are
    -- configuring a templated Lambda, AWS Step Functions, or Amazon
    -- EventBridge target, the input must be a well-formed JSON. For all other
    -- target types, a JSON is not required. If you do not specify anything for
    -- this field, EventBridge Scheduler delivers a default notification to the
    -- target.
    Target -> Maybe Text
input :: Prelude.Maybe Prelude.Text,
    -- | The templated target type for the Amazon Kinesis
    -- <kinesis/latest/APIReference/API_PutRecord.html PutRecord> API
    -- operation.
    Target -> Maybe KinesisParameters
kinesisParameters :: Prelude.Maybe KinesisParameters,
    -- | A @RetryPolicy@ object that includes information about the retry policy
    -- settings, including the maximum age of an event, and the maximum number
    -- of times EventBridge Scheduler will try to deliver the event to a
    -- target.
    Target -> Maybe RetryPolicy
retryPolicy :: Prelude.Maybe RetryPolicy,
    -- | The templated target type for the Amazon SageMaker
    -- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html StartPipelineExecution>
    -- API operation.
    Target -> Maybe SageMakerPipelineParameters
sageMakerPipelineParameters :: Prelude.Maybe SageMakerPipelineParameters,
    -- | The templated target type for the Amazon SQS
    -- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html SendMessage>
    -- API operation. Contains the message group ID to use when the target is a
    -- FIFO queue. If you specify an Amazon SQS FIFO queue as a target, the
    -- queue must have content-based deduplication enabled. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagededuplicationid-property.html Using the Amazon SQS message deduplication ID>
    -- in the /Amazon SQS Developer Guide/.
    Target -> Maybe SqsParameters
sqsParameters :: Prelude.Maybe SqsParameters,
    -- | The Amazon Resource Name (ARN) of the target.
    Target -> Text
arn :: Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the IAM role that EventBridge
    -- Scheduler will use for this target when the schedule is invoked.
    Target -> Text
roleArn :: Prelude.Text
  }
  deriving (Target -> Target -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Target -> Target -> Bool
$c/= :: Target -> Target -> Bool
== :: Target -> Target -> Bool
$c== :: Target -> Target -> Bool
Prelude.Eq, ReadPrec [Target]
ReadPrec Target
Int -> ReadS Target
ReadS [Target]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Target]
$creadListPrec :: ReadPrec [Target]
readPrec :: ReadPrec Target
$creadPrec :: ReadPrec Target
readList :: ReadS [Target]
$creadList :: ReadS [Target]
readsPrec :: Int -> ReadS Target
$creadsPrec :: Int -> ReadS Target
Prelude.Read, Int -> Target -> ShowS
[Target] -> ShowS
Target -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Target] -> ShowS
$cshowList :: [Target] -> ShowS
show :: Target -> String
$cshow :: Target -> String
showsPrec :: Int -> Target -> ShowS
$cshowsPrec :: Int -> Target -> ShowS
Prelude.Show, forall x. Rep Target x -> Target
forall x. Target -> Rep Target x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Target x -> Target
$cfrom :: forall x. Target -> Rep Target x
Prelude.Generic)

-- |
-- Create a value of 'Target' 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:
--
-- 'deadLetterConfig', 'target_deadLetterConfig' - An object that contains information about an Amazon SQS queue that
-- EventBridge Scheduler uses as a dead-letter queue for your schedule. If
-- specified, EventBridge Scheduler delivers failed events that could not
-- be successfully delivered to a target to the queue.
--
-- 'ecsParameters', 'target_ecsParameters' - The templated target type for the Amazon ECS
-- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html RunTask>
-- API operation.
--
-- 'eventBridgeParameters', 'target_eventBridgeParameters' - The templated target type for the EventBridge
-- <https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html PutEvents>
-- API operation.
--
-- 'input', 'target_input' - The text, or well-formed JSON, passed to the target. If you are
-- configuring a templated Lambda, AWS Step Functions, or Amazon
-- EventBridge target, the input must be a well-formed JSON. For all other
-- target types, a JSON is not required. If you do not specify anything for
-- this field, EventBridge Scheduler delivers a default notification to the
-- target.
--
-- 'kinesisParameters', 'target_kinesisParameters' - The templated target type for the Amazon Kinesis
-- <kinesis/latest/APIReference/API_PutRecord.html PutRecord> API
-- operation.
--
-- 'retryPolicy', 'target_retryPolicy' - A @RetryPolicy@ object that includes information about the retry policy
-- settings, including the maximum age of an event, and the maximum number
-- of times EventBridge Scheduler will try to deliver the event to a
-- target.
--
-- 'sageMakerPipelineParameters', 'target_sageMakerPipelineParameters' - The templated target type for the Amazon SageMaker
-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html StartPipelineExecution>
-- API operation.
--
-- 'sqsParameters', 'target_sqsParameters' - The templated target type for the Amazon SQS
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html SendMessage>
-- API operation. Contains the message group ID to use when the target is a
-- FIFO queue. If you specify an Amazon SQS FIFO queue as a target, the
-- queue must have content-based deduplication enabled. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagededuplicationid-property.html Using the Amazon SQS message deduplication ID>
-- in the /Amazon SQS Developer Guide/.
--
-- 'arn', 'target_arn' - The Amazon Resource Name (ARN) of the target.
--
-- 'roleArn', 'target_roleArn' - The Amazon Resource Name (ARN) of the IAM role that EventBridge
-- Scheduler will use for this target when the schedule is invoked.
newTarget ::
  -- | 'arn'
  Prelude.Text ->
  -- | 'roleArn'
  Prelude.Text ->
  Target
newTarget :: Text -> Text -> Target
newTarget Text
pArn_ Text
pRoleArn_ =
  Target'
    { $sel:deadLetterConfig:Target' :: Maybe DeadLetterConfig
deadLetterConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:ecsParameters:Target' :: Maybe EcsParameters
ecsParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:eventBridgeParameters:Target' :: Maybe EventBridgeParameters
eventBridgeParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:input:Target' :: Maybe Text
input = forall a. Maybe a
Prelude.Nothing,
      $sel:kinesisParameters:Target' :: Maybe KinesisParameters
kinesisParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:retryPolicy:Target' :: Maybe RetryPolicy
retryPolicy = forall a. Maybe a
Prelude.Nothing,
      $sel:sageMakerPipelineParameters:Target' :: Maybe SageMakerPipelineParameters
sageMakerPipelineParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:sqsParameters:Target' :: Maybe SqsParameters
sqsParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Target' :: Text
arn = Text
pArn_,
      $sel:roleArn:Target' :: Text
roleArn = Text
pRoleArn_
    }

-- | An object that contains information about an Amazon SQS queue that
-- EventBridge Scheduler uses as a dead-letter queue for your schedule. If
-- specified, EventBridge Scheduler delivers failed events that could not
-- be successfully delivered to a target to the queue.
target_deadLetterConfig :: Lens.Lens' Target (Prelude.Maybe DeadLetterConfig)
target_deadLetterConfig :: Lens' Target (Maybe DeadLetterConfig)
target_deadLetterConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Maybe DeadLetterConfig
deadLetterConfig :: Maybe DeadLetterConfig
$sel:deadLetterConfig:Target' :: Target -> Maybe DeadLetterConfig
deadLetterConfig} -> Maybe DeadLetterConfig
deadLetterConfig) (\s :: Target
s@Target' {} Maybe DeadLetterConfig
a -> Target
s {$sel:deadLetterConfig:Target' :: Maybe DeadLetterConfig
deadLetterConfig = Maybe DeadLetterConfig
a} :: Target)

-- | The templated target type for the Amazon ECS
-- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html RunTask>
-- API operation.
target_ecsParameters :: Lens.Lens' Target (Prelude.Maybe EcsParameters)
target_ecsParameters :: Lens' Target (Maybe EcsParameters)
target_ecsParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Maybe EcsParameters
ecsParameters :: Maybe EcsParameters
$sel:ecsParameters:Target' :: Target -> Maybe EcsParameters
ecsParameters} -> Maybe EcsParameters
ecsParameters) (\s :: Target
s@Target' {} Maybe EcsParameters
a -> Target
s {$sel:ecsParameters:Target' :: Maybe EcsParameters
ecsParameters = Maybe EcsParameters
a} :: Target)

-- | The templated target type for the EventBridge
-- <https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html PutEvents>
-- API operation.
target_eventBridgeParameters :: Lens.Lens' Target (Prelude.Maybe EventBridgeParameters)
target_eventBridgeParameters :: Lens' Target (Maybe EventBridgeParameters)
target_eventBridgeParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Maybe EventBridgeParameters
eventBridgeParameters :: Maybe EventBridgeParameters
$sel:eventBridgeParameters:Target' :: Target -> Maybe EventBridgeParameters
eventBridgeParameters} -> Maybe EventBridgeParameters
eventBridgeParameters) (\s :: Target
s@Target' {} Maybe EventBridgeParameters
a -> Target
s {$sel:eventBridgeParameters:Target' :: Maybe EventBridgeParameters
eventBridgeParameters = Maybe EventBridgeParameters
a} :: Target)

-- | The text, or well-formed JSON, passed to the target. If you are
-- configuring a templated Lambda, AWS Step Functions, or Amazon
-- EventBridge target, the input must be a well-formed JSON. For all other
-- target types, a JSON is not required. If you do not specify anything for
-- this field, EventBridge Scheduler delivers a default notification to the
-- target.
target_input :: Lens.Lens' Target (Prelude.Maybe Prelude.Text)
target_input :: Lens' Target (Maybe Text)
target_input = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Maybe Text
input :: Maybe Text
$sel:input:Target' :: Target -> Maybe Text
input} -> Maybe Text
input) (\s :: Target
s@Target' {} Maybe Text
a -> Target
s {$sel:input:Target' :: Maybe Text
input = Maybe Text
a} :: Target)

-- | The templated target type for the Amazon Kinesis
-- <kinesis/latest/APIReference/API_PutRecord.html PutRecord> API
-- operation.
target_kinesisParameters :: Lens.Lens' Target (Prelude.Maybe KinesisParameters)
target_kinesisParameters :: Lens' Target (Maybe KinesisParameters)
target_kinesisParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Maybe KinesisParameters
kinesisParameters :: Maybe KinesisParameters
$sel:kinesisParameters:Target' :: Target -> Maybe KinesisParameters
kinesisParameters} -> Maybe KinesisParameters
kinesisParameters) (\s :: Target
s@Target' {} Maybe KinesisParameters
a -> Target
s {$sel:kinesisParameters:Target' :: Maybe KinesisParameters
kinesisParameters = Maybe KinesisParameters
a} :: Target)

-- | A @RetryPolicy@ object that includes information about the retry policy
-- settings, including the maximum age of an event, and the maximum number
-- of times EventBridge Scheduler will try to deliver the event to a
-- target.
target_retryPolicy :: Lens.Lens' Target (Prelude.Maybe RetryPolicy)
target_retryPolicy :: Lens' Target (Maybe RetryPolicy)
target_retryPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Maybe RetryPolicy
retryPolicy :: Maybe RetryPolicy
$sel:retryPolicy:Target' :: Target -> Maybe RetryPolicy
retryPolicy} -> Maybe RetryPolicy
retryPolicy) (\s :: Target
s@Target' {} Maybe RetryPolicy
a -> Target
s {$sel:retryPolicy:Target' :: Maybe RetryPolicy
retryPolicy = Maybe RetryPolicy
a} :: Target)

-- | The templated target type for the Amazon SageMaker
-- <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html StartPipelineExecution>
-- API operation.
target_sageMakerPipelineParameters :: Lens.Lens' Target (Prelude.Maybe SageMakerPipelineParameters)
target_sageMakerPipelineParameters :: Lens' Target (Maybe SageMakerPipelineParameters)
target_sageMakerPipelineParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Maybe SageMakerPipelineParameters
sageMakerPipelineParameters :: Maybe SageMakerPipelineParameters
$sel:sageMakerPipelineParameters:Target' :: Target -> Maybe SageMakerPipelineParameters
sageMakerPipelineParameters} -> Maybe SageMakerPipelineParameters
sageMakerPipelineParameters) (\s :: Target
s@Target' {} Maybe SageMakerPipelineParameters
a -> Target
s {$sel:sageMakerPipelineParameters:Target' :: Maybe SageMakerPipelineParameters
sageMakerPipelineParameters = Maybe SageMakerPipelineParameters
a} :: Target)

-- | The templated target type for the Amazon SQS
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html SendMessage>
-- API operation. Contains the message group ID to use when the target is a
-- FIFO queue. If you specify an Amazon SQS FIFO queue as a target, the
-- queue must have content-based deduplication enabled. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagededuplicationid-property.html Using the Amazon SQS message deduplication ID>
-- in the /Amazon SQS Developer Guide/.
target_sqsParameters :: Lens.Lens' Target (Prelude.Maybe SqsParameters)
target_sqsParameters :: Lens' Target (Maybe SqsParameters)
target_sqsParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Maybe SqsParameters
sqsParameters :: Maybe SqsParameters
$sel:sqsParameters:Target' :: Target -> Maybe SqsParameters
sqsParameters} -> Maybe SqsParameters
sqsParameters) (\s :: Target
s@Target' {} Maybe SqsParameters
a -> Target
s {$sel:sqsParameters:Target' :: Maybe SqsParameters
sqsParameters = Maybe SqsParameters
a} :: Target)

-- | The Amazon Resource Name (ARN) of the target.
target_arn :: Lens.Lens' Target Prelude.Text
target_arn :: Lens' Target Text
target_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Text
arn :: Text
$sel:arn:Target' :: Target -> Text
arn} -> Text
arn) (\s :: Target
s@Target' {} Text
a -> Target
s {$sel:arn:Target' :: Text
arn = Text
a} :: Target)

-- | The Amazon Resource Name (ARN) of the IAM role that EventBridge
-- Scheduler will use for this target when the schedule is invoked.
target_roleArn :: Lens.Lens' Target Prelude.Text
target_roleArn :: Lens' Target Text
target_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Target' {Text
roleArn :: Text
$sel:roleArn:Target' :: Target -> Text
roleArn} -> Text
roleArn) (\s :: Target
s@Target' {} Text
a -> Target
s {$sel:roleArn:Target' :: Text
roleArn = Text
a} :: Target)

instance Data.FromJSON Target where
  parseJSON :: Value -> Parser Target
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Target"
      ( \Object
x ->
          Maybe DeadLetterConfig
-> Maybe EcsParameters
-> Maybe EventBridgeParameters
-> Maybe Text
-> Maybe KinesisParameters
-> Maybe RetryPolicy
-> Maybe SageMakerPipelineParameters
-> Maybe SqsParameters
-> Text
-> Text
-> Target
Target'
            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
"DeadLetterConfig")
            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
"EcsParameters")
            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
"EventBridgeParameters")
            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
"Input")
            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
"KinesisParameters")
            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
"RetryPolicy")
            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
"SageMakerPipelineParameters")
            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
"SqsParameters")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"Arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"RoleArn")
      )

instance Prelude.Hashable Target where
  hashWithSalt :: Int -> Target -> Int
hashWithSalt Int
_salt Target' {Maybe Text
Maybe DeadLetterConfig
Maybe EventBridgeParameters
Maybe KinesisParameters
Maybe EcsParameters
Maybe RetryPolicy
Maybe SageMakerPipelineParameters
Maybe SqsParameters
Text
roleArn :: Text
arn :: Text
sqsParameters :: Maybe SqsParameters
sageMakerPipelineParameters :: Maybe SageMakerPipelineParameters
retryPolicy :: Maybe RetryPolicy
kinesisParameters :: Maybe KinesisParameters
input :: Maybe Text
eventBridgeParameters :: Maybe EventBridgeParameters
ecsParameters :: Maybe EcsParameters
deadLetterConfig :: Maybe DeadLetterConfig
$sel:roleArn:Target' :: Target -> Text
$sel:arn:Target' :: Target -> Text
$sel:sqsParameters:Target' :: Target -> Maybe SqsParameters
$sel:sageMakerPipelineParameters:Target' :: Target -> Maybe SageMakerPipelineParameters
$sel:retryPolicy:Target' :: Target -> Maybe RetryPolicy
$sel:kinesisParameters:Target' :: Target -> Maybe KinesisParameters
$sel:input:Target' :: Target -> Maybe Text
$sel:eventBridgeParameters:Target' :: Target -> Maybe EventBridgeParameters
$sel:ecsParameters:Target' :: Target -> Maybe EcsParameters
$sel:deadLetterConfig:Target' :: Target -> Maybe DeadLetterConfig
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeadLetterConfig
deadLetterConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EcsParameters
ecsParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EventBridgeParameters
eventBridgeParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
input
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe KinesisParameters
kinesisParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RetryPolicy
retryPolicy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SageMakerPipelineParameters
sageMakerPipelineParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SqsParameters
sqsParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
roleArn

instance Prelude.NFData Target where
  rnf :: Target -> ()
rnf Target' {Maybe Text
Maybe DeadLetterConfig
Maybe EventBridgeParameters
Maybe KinesisParameters
Maybe EcsParameters
Maybe RetryPolicy
Maybe SageMakerPipelineParameters
Maybe SqsParameters
Text
roleArn :: Text
arn :: Text
sqsParameters :: Maybe SqsParameters
sageMakerPipelineParameters :: Maybe SageMakerPipelineParameters
retryPolicy :: Maybe RetryPolicy
kinesisParameters :: Maybe KinesisParameters
input :: Maybe Text
eventBridgeParameters :: Maybe EventBridgeParameters
ecsParameters :: Maybe EcsParameters
deadLetterConfig :: Maybe DeadLetterConfig
$sel:roleArn:Target' :: Target -> Text
$sel:arn:Target' :: Target -> Text
$sel:sqsParameters:Target' :: Target -> Maybe SqsParameters
$sel:sageMakerPipelineParameters:Target' :: Target -> Maybe SageMakerPipelineParameters
$sel:retryPolicy:Target' :: Target -> Maybe RetryPolicy
$sel:kinesisParameters:Target' :: Target -> Maybe KinesisParameters
$sel:input:Target' :: Target -> Maybe Text
$sel:eventBridgeParameters:Target' :: Target -> Maybe EventBridgeParameters
$sel:ecsParameters:Target' :: Target -> Maybe EcsParameters
$sel:deadLetterConfig:Target' :: Target -> Maybe DeadLetterConfig
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DeadLetterConfig
deadLetterConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EcsParameters
ecsParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EventBridgeParameters
eventBridgeParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
input
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe KinesisParameters
kinesisParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RetryPolicy
retryPolicy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SageMakerPipelineParameters
sageMakerPipelineParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SqsParameters
sqsParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
roleArn

instance Data.ToJSON Target where
  toJSON :: Target -> Value
toJSON Target' {Maybe Text
Maybe DeadLetterConfig
Maybe EventBridgeParameters
Maybe KinesisParameters
Maybe EcsParameters
Maybe RetryPolicy
Maybe SageMakerPipelineParameters
Maybe SqsParameters
Text
roleArn :: Text
arn :: Text
sqsParameters :: Maybe SqsParameters
sageMakerPipelineParameters :: Maybe SageMakerPipelineParameters
retryPolicy :: Maybe RetryPolicy
kinesisParameters :: Maybe KinesisParameters
input :: Maybe Text
eventBridgeParameters :: Maybe EventBridgeParameters
ecsParameters :: Maybe EcsParameters
deadLetterConfig :: Maybe DeadLetterConfig
$sel:roleArn:Target' :: Target -> Text
$sel:arn:Target' :: Target -> Text
$sel:sqsParameters:Target' :: Target -> Maybe SqsParameters
$sel:sageMakerPipelineParameters:Target' :: Target -> Maybe SageMakerPipelineParameters
$sel:retryPolicy:Target' :: Target -> Maybe RetryPolicy
$sel:kinesisParameters:Target' :: Target -> Maybe KinesisParameters
$sel:input:Target' :: Target -> Maybe Text
$sel:eventBridgeParameters:Target' :: Target -> Maybe EventBridgeParameters
$sel:ecsParameters:Target' :: Target -> Maybe EcsParameters
$sel:deadLetterConfig:Target' :: Target -> Maybe DeadLetterConfig
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DeadLetterConfig" 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 DeadLetterConfig
deadLetterConfig,
            (Key
"EcsParameters" 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 EcsParameters
ecsParameters,
            (Key
"EventBridgeParameters" 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 EventBridgeParameters
eventBridgeParameters,
            (Key
"Input" 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 Text
input,
            (Key
"KinesisParameters" 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 KinesisParameters
kinesisParameters,
            (Key
"RetryPolicy" 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 RetryPolicy
retryPolicy,
            (Key
"SageMakerPipelineParameters" 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 SageMakerPipelineParameters
sageMakerPipelineParameters,
            (Key
"SqsParameters" 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 SqsParameters
sqsParameters,
            forall a. a -> Maybe a
Prelude.Just (Key
"Arn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
arn),
            forall a. a -> Maybe a
Prelude.Just (Key
"RoleArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
roleArn)
          ]
      )