amazonka-pinpoint-sms-voice-v2-2.0: gen/Amazonka/PinpointSmsVoiceV2/UpdateEventDestination.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.PinpointSmsVoiceV2.UpdateEventDestination
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates an existing event destination in a configuration set. You can
-- update the IAM role ARN for CloudWatch Logs and Kinesis Data Firehose.
-- You can also enable or disable the event destination.
--
-- You may want to update an event destination to change its matching event
-- types or updating the destination resource ARN. You can\'t change an
-- event destination\'s type between CloudWatch Logs, Kinesis Data
-- Firehose, and Amazon SNS.
module Amazonka.PinpointSmsVoiceV2.UpdateEventDestination
( -- * Creating a Request
UpdateEventDestination (..),
newUpdateEventDestination,
-- * Request Lenses
updateEventDestination_cloudWatchLogsDestination,
updateEventDestination_enabled,
updateEventDestination_kinesisFirehoseDestination,
updateEventDestination_matchingEventTypes,
updateEventDestination_snsDestination,
updateEventDestination_configurationSetName,
updateEventDestination_eventDestinationName,
-- * Destructuring the Response
UpdateEventDestinationResponse (..),
newUpdateEventDestinationResponse,
-- * Response Lenses
updateEventDestinationResponse_configurationSetArn,
updateEventDestinationResponse_configurationSetName,
updateEventDestinationResponse_eventDestination,
updateEventDestinationResponse_httpStatus,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.PinpointSmsVoiceV2.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
-- | /See:/ 'newUpdateEventDestination' smart constructor.
data UpdateEventDestination = UpdateEventDestination'
{ -- | An object that contains information about an event destination that
-- sends data to CloudWatch Logs.
cloudWatchLogsDestination :: Prelude.Maybe CloudWatchLogsDestination,
-- | When set to true logging is enabled.
enabled :: Prelude.Maybe Prelude.Bool,
-- | An object that contains information about an event destination for
-- logging to Kinesis Data Firehose.
kinesisFirehoseDestination :: Prelude.Maybe KinesisFirehoseDestination,
-- | An array of event types that determine which events to log.
matchingEventTypes :: Prelude.Maybe (Prelude.NonEmpty EventType),
-- | An object that contains information about an event destination that
-- sends data to Amazon SNS.
snsDestination :: Prelude.Maybe SnsDestination,
-- | The configuration set to update with the new event destination. Valid
-- values for this can be the ConfigurationSetName or ConfigurationSetArn.
configurationSetName :: Prelude.Text,
-- | The name to use for the event destination.
eventDestinationName :: Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'UpdateEventDestination' 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:
--
-- 'cloudWatchLogsDestination', 'updateEventDestination_cloudWatchLogsDestination' - An object that contains information about an event destination that
-- sends data to CloudWatch Logs.
--
-- 'enabled', 'updateEventDestination_enabled' - When set to true logging is enabled.
--
-- 'kinesisFirehoseDestination', 'updateEventDestination_kinesisFirehoseDestination' - An object that contains information about an event destination for
-- logging to Kinesis Data Firehose.
--
-- 'matchingEventTypes', 'updateEventDestination_matchingEventTypes' - An array of event types that determine which events to log.
--
-- 'snsDestination', 'updateEventDestination_snsDestination' - An object that contains information about an event destination that
-- sends data to Amazon SNS.
--
-- 'configurationSetName', 'updateEventDestination_configurationSetName' - The configuration set to update with the new event destination. Valid
-- values for this can be the ConfigurationSetName or ConfigurationSetArn.
--
-- 'eventDestinationName', 'updateEventDestination_eventDestinationName' - The name to use for the event destination.
newUpdateEventDestination ::
-- | 'configurationSetName'
Prelude.Text ->
-- | 'eventDestinationName'
Prelude.Text ->
UpdateEventDestination
newUpdateEventDestination
pConfigurationSetName_
pEventDestinationName_ =
UpdateEventDestination'
{ cloudWatchLogsDestination =
Prelude.Nothing,
enabled = Prelude.Nothing,
kinesisFirehoseDestination = Prelude.Nothing,
matchingEventTypes = Prelude.Nothing,
snsDestination = Prelude.Nothing,
configurationSetName = pConfigurationSetName_,
eventDestinationName = pEventDestinationName_
}
-- | An object that contains information about an event destination that
-- sends data to CloudWatch Logs.
updateEventDestination_cloudWatchLogsDestination :: Lens.Lens' UpdateEventDestination (Prelude.Maybe CloudWatchLogsDestination)
updateEventDestination_cloudWatchLogsDestination = Lens.lens (\UpdateEventDestination' {cloudWatchLogsDestination} -> cloudWatchLogsDestination) (\s@UpdateEventDestination' {} a -> s {cloudWatchLogsDestination = a} :: UpdateEventDestination)
-- | When set to true logging is enabled.
updateEventDestination_enabled :: Lens.Lens' UpdateEventDestination (Prelude.Maybe Prelude.Bool)
updateEventDestination_enabled = Lens.lens (\UpdateEventDestination' {enabled} -> enabled) (\s@UpdateEventDestination' {} a -> s {enabled = a} :: UpdateEventDestination)
-- | An object that contains information about an event destination for
-- logging to Kinesis Data Firehose.
updateEventDestination_kinesisFirehoseDestination :: Lens.Lens' UpdateEventDestination (Prelude.Maybe KinesisFirehoseDestination)
updateEventDestination_kinesisFirehoseDestination = Lens.lens (\UpdateEventDestination' {kinesisFirehoseDestination} -> kinesisFirehoseDestination) (\s@UpdateEventDestination' {} a -> s {kinesisFirehoseDestination = a} :: UpdateEventDestination)
-- | An array of event types that determine which events to log.
updateEventDestination_matchingEventTypes :: Lens.Lens' UpdateEventDestination (Prelude.Maybe (Prelude.NonEmpty EventType))
updateEventDestination_matchingEventTypes = Lens.lens (\UpdateEventDestination' {matchingEventTypes} -> matchingEventTypes) (\s@UpdateEventDestination' {} a -> s {matchingEventTypes = a} :: UpdateEventDestination) Prelude.. Lens.mapping Lens.coerced
-- | An object that contains information about an event destination that
-- sends data to Amazon SNS.
updateEventDestination_snsDestination :: Lens.Lens' UpdateEventDestination (Prelude.Maybe SnsDestination)
updateEventDestination_snsDestination = Lens.lens (\UpdateEventDestination' {snsDestination} -> snsDestination) (\s@UpdateEventDestination' {} a -> s {snsDestination = a} :: UpdateEventDestination)
-- | The configuration set to update with the new event destination. Valid
-- values for this can be the ConfigurationSetName or ConfigurationSetArn.
updateEventDestination_configurationSetName :: Lens.Lens' UpdateEventDestination Prelude.Text
updateEventDestination_configurationSetName = Lens.lens (\UpdateEventDestination' {configurationSetName} -> configurationSetName) (\s@UpdateEventDestination' {} a -> s {configurationSetName = a} :: UpdateEventDestination)
-- | The name to use for the event destination.
updateEventDestination_eventDestinationName :: Lens.Lens' UpdateEventDestination Prelude.Text
updateEventDestination_eventDestinationName = Lens.lens (\UpdateEventDestination' {eventDestinationName} -> eventDestinationName) (\s@UpdateEventDestination' {} a -> s {eventDestinationName = a} :: UpdateEventDestination)
instance Core.AWSRequest UpdateEventDestination where
type
AWSResponse UpdateEventDestination =
UpdateEventDestinationResponse
request overrides =
Request.postJSON (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
UpdateEventDestinationResponse'
Prelude.<$> (x Data..?> "ConfigurationSetArn")
Prelude.<*> (x Data..?> "ConfigurationSetName")
Prelude.<*> (x Data..?> "EventDestination")
Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
)
instance Prelude.Hashable UpdateEventDestination where
hashWithSalt _salt UpdateEventDestination' {..} =
_salt
`Prelude.hashWithSalt` cloudWatchLogsDestination
`Prelude.hashWithSalt` enabled
`Prelude.hashWithSalt` kinesisFirehoseDestination
`Prelude.hashWithSalt` matchingEventTypes
`Prelude.hashWithSalt` snsDestination
`Prelude.hashWithSalt` configurationSetName
`Prelude.hashWithSalt` eventDestinationName
instance Prelude.NFData UpdateEventDestination where
rnf UpdateEventDestination' {..} =
Prelude.rnf cloudWatchLogsDestination
`Prelude.seq` Prelude.rnf enabled
`Prelude.seq` Prelude.rnf kinesisFirehoseDestination
`Prelude.seq` Prelude.rnf matchingEventTypes
`Prelude.seq` Prelude.rnf snsDestination
`Prelude.seq` Prelude.rnf configurationSetName
`Prelude.seq` Prelude.rnf eventDestinationName
instance Data.ToHeaders UpdateEventDestination where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "X-Amz-Target"
Data.=# ( "PinpointSMSVoiceV2.UpdateEventDestination" ::
Prelude.ByteString
),
"Content-Type"
Data.=# ( "application/x-amz-json-1.0" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON UpdateEventDestination where
toJSON UpdateEventDestination' {..} =
Data.object
( Prelude.catMaybes
[ ("CloudWatchLogsDestination" Data..=)
Prelude.<$> cloudWatchLogsDestination,
("Enabled" Data..=) Prelude.<$> enabled,
("KinesisFirehoseDestination" Data..=)
Prelude.<$> kinesisFirehoseDestination,
("MatchingEventTypes" Data..=)
Prelude.<$> matchingEventTypes,
("SnsDestination" Data..=)
Prelude.<$> snsDestination,
Prelude.Just
( "ConfigurationSetName"
Data..= configurationSetName
),
Prelude.Just
( "EventDestinationName"
Data..= eventDestinationName
)
]
)
instance Data.ToPath UpdateEventDestination where
toPath = Prelude.const "/"
instance Data.ToQuery UpdateEventDestination where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newUpdateEventDestinationResponse' smart constructor.
data UpdateEventDestinationResponse = UpdateEventDestinationResponse'
{ -- | The Amazon Resource Name (ARN) for the ConfigurationSet that was
-- updated.
configurationSetArn :: Prelude.Maybe Prelude.Text,
-- | The name of the configuration set.
configurationSetName :: Prelude.Maybe Prelude.Text,
-- | An EventDestination object containing the details of where events will
-- be logged.
eventDestination :: Prelude.Maybe EventDestination,
-- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'UpdateEventDestinationResponse' 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:
--
-- 'configurationSetArn', 'updateEventDestinationResponse_configurationSetArn' - The Amazon Resource Name (ARN) for the ConfigurationSet that was
-- updated.
--
-- 'configurationSetName', 'updateEventDestinationResponse_configurationSetName' - The name of the configuration set.
--
-- 'eventDestination', 'updateEventDestinationResponse_eventDestination' - An EventDestination object containing the details of where events will
-- be logged.
--
-- 'httpStatus', 'updateEventDestinationResponse_httpStatus' - The response's http status code.
newUpdateEventDestinationResponse ::
-- | 'httpStatus'
Prelude.Int ->
UpdateEventDestinationResponse
newUpdateEventDestinationResponse pHttpStatus_ =
UpdateEventDestinationResponse'
{ configurationSetArn =
Prelude.Nothing,
configurationSetName = Prelude.Nothing,
eventDestination = Prelude.Nothing,
httpStatus = pHttpStatus_
}
-- | The Amazon Resource Name (ARN) for the ConfigurationSet that was
-- updated.
updateEventDestinationResponse_configurationSetArn :: Lens.Lens' UpdateEventDestinationResponse (Prelude.Maybe Prelude.Text)
updateEventDestinationResponse_configurationSetArn = Lens.lens (\UpdateEventDestinationResponse' {configurationSetArn} -> configurationSetArn) (\s@UpdateEventDestinationResponse' {} a -> s {configurationSetArn = a} :: UpdateEventDestinationResponse)
-- | The name of the configuration set.
updateEventDestinationResponse_configurationSetName :: Lens.Lens' UpdateEventDestinationResponse (Prelude.Maybe Prelude.Text)
updateEventDestinationResponse_configurationSetName = Lens.lens (\UpdateEventDestinationResponse' {configurationSetName} -> configurationSetName) (\s@UpdateEventDestinationResponse' {} a -> s {configurationSetName = a} :: UpdateEventDestinationResponse)
-- | An EventDestination object containing the details of where events will
-- be logged.
updateEventDestinationResponse_eventDestination :: Lens.Lens' UpdateEventDestinationResponse (Prelude.Maybe EventDestination)
updateEventDestinationResponse_eventDestination = Lens.lens (\UpdateEventDestinationResponse' {eventDestination} -> eventDestination) (\s@UpdateEventDestinationResponse' {} a -> s {eventDestination = a} :: UpdateEventDestinationResponse)
-- | The response's http status code.
updateEventDestinationResponse_httpStatus :: Lens.Lens' UpdateEventDestinationResponse Prelude.Int
updateEventDestinationResponse_httpStatus = Lens.lens (\UpdateEventDestinationResponse' {httpStatus} -> httpStatus) (\s@UpdateEventDestinationResponse' {} a -> s {httpStatus = a} :: UpdateEventDestinationResponse)
instance
Prelude.NFData
UpdateEventDestinationResponse
where
rnf UpdateEventDestinationResponse' {..} =
Prelude.rnf configurationSetArn
`Prelude.seq` Prelude.rnf configurationSetName
`Prelude.seq` Prelude.rnf eventDestination
`Prelude.seq` Prelude.rnf httpStatus