{-# 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.SNS.SetSMSAttributes
-- 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)
--
-- Use this request to set the default settings for sending SMS messages
-- and receiving daily SMS usage reports.
--
-- You can override some of these settings for a single message when you
-- use the @Publish@ action with the @MessageAttributes.entry.N@ parameter.
-- For more information, see
-- <https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html Publishing to a mobile phone>
-- in the /Amazon SNS Developer Guide/.
--
-- To use this operation, you must grant the Amazon SNS service principal
-- (@sns.amazonaws.com@) permission to perform the @s3:ListBucket@ action.
module Amazonka.SNS.SetSMSAttributes
  ( -- * Creating a Request
    SetSMSAttributes (..),
    newSetSMSAttributes,

    -- * Request Lenses
    setSMSAttributes_attributes,

    -- * Destructuring the Response
    SetSMSAttributesResponse (..),
    newSetSMSAttributesResponse,

    -- * Response Lenses
    setSMSAttributesResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SNS.Types

-- | The input for the SetSMSAttributes action.
--
-- /See:/ 'newSetSMSAttributes' smart constructor.
data SetSMSAttributes = SetSMSAttributes'
  { -- | The default settings for sending SMS messages from your account. You can
    -- set values for the following attribute names:
    --
    -- @MonthlySpendLimit@ – The maximum amount in USD that you are willing to
    -- spend each month to send SMS messages. When Amazon SNS determines that
    -- sending an SMS message would incur a cost that exceeds this limit, it
    -- stops sending SMS messages within minutes.
    --
    -- Amazon SNS stops sending SMS messages within minutes of the limit being
    -- crossed. During that interval, if you continue to send SMS messages, you
    -- will incur costs that exceed your limit.
    --
    -- By default, the spend limit is set to the maximum allowed by Amazon SNS.
    -- If you want to raise the limit, submit an
    -- <https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-sns SNS Limit Increase case>.
    -- For __New limit value__, enter your desired monthly spend limit. In the
    -- __Use Case Description__ field, explain that you are requesting an SMS
    -- monthly spend limit increase.
    --
    -- @DeliveryStatusIAMRole@ – The ARN of the IAM role that allows Amazon SNS
    -- to write logs about SMS deliveries in CloudWatch Logs. For each SMS
    -- message that you send, Amazon SNS writes a log that includes the message
    -- price, the success or failure status, the reason for failure (if the
    -- message failed), the message dwell time, and other information.
    --
    -- @DeliveryStatusSuccessSamplingRate@ – The percentage of successful SMS
    -- deliveries for which Amazon SNS will write logs in CloudWatch Logs. The
    -- value can be an integer from 0 - 100. For example, to write logs only
    -- for failed deliveries, set this value to @0@. To write logs for 10% of
    -- your successful deliveries, set it to @10@.
    --
    -- @DefaultSenderID@ – A string, such as your business brand, that is
    -- displayed as the sender on the receiving device. Support for sender IDs
    -- varies by country. The sender ID can be 1 - 11 alphanumeric characters,
    -- and it must contain at least one letter.
    --
    -- @DefaultSMSType@ – The type of SMS message that you will send by
    -- default. You can assign the following values:
    --
    -- -   @Promotional@ – (Default) Noncritical messages, such as marketing
    --     messages. Amazon SNS optimizes the message delivery to incur the
    --     lowest cost.
    --
    -- -   @Transactional@ – Critical messages that support customer
    --     transactions, such as one-time passcodes for multi-factor
    --     authentication. Amazon SNS optimizes the message delivery to achieve
    --     the highest reliability.
    --
    -- @UsageReportS3Bucket@ – The name of the Amazon S3 bucket to receive
    -- daily SMS usage reports from Amazon SNS. Each day, Amazon SNS will
    -- deliver a usage report as a CSV file to the bucket. The report includes
    -- the following information for each SMS message that was successfully
    -- delivered by your account:
    --
    -- -   Time that the message was published (in UTC)
    --
    -- -   Message ID
    --
    -- -   Destination phone number
    --
    -- -   Message type
    --
    -- -   Delivery status
    --
    -- -   Message price (in USD)
    --
    -- -   Part number (a message is split into multiple parts if it is too
    --     long for a single message)
    --
    -- -   Total number of parts
    --
    -- To receive the report, the bucket must have a policy that allows the
    -- Amazon SNS service principal to perform the @s3:PutObject@ and
    -- @s3:GetBucketLocation@ actions.
    --
    -- For an example bucket policy and usage report, see
    -- <https://docs.aws.amazon.com/sns/latest/dg/sms_stats.html Monitoring SMS Activity>
    -- in the /Amazon SNS Developer Guide/.
    SetSMSAttributes -> HashMap Text Text
attributes :: Prelude.HashMap Prelude.Text Prelude.Text
  }
  deriving (SetSMSAttributes -> SetSMSAttributes -> Bool
(SetSMSAttributes -> SetSMSAttributes -> Bool)
-> (SetSMSAttributes -> SetSMSAttributes -> Bool)
-> Eq SetSMSAttributes
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SetSMSAttributes -> SetSMSAttributes -> Bool
$c/= :: SetSMSAttributes -> SetSMSAttributes -> Bool
== :: SetSMSAttributes -> SetSMSAttributes -> Bool
$c== :: SetSMSAttributes -> SetSMSAttributes -> Bool
Prelude.Eq, ReadPrec [SetSMSAttributes]
ReadPrec SetSMSAttributes
Int -> ReadS SetSMSAttributes
ReadS [SetSMSAttributes]
(Int -> ReadS SetSMSAttributes)
-> ReadS [SetSMSAttributes]
-> ReadPrec SetSMSAttributes
-> ReadPrec [SetSMSAttributes]
-> Read SetSMSAttributes
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SetSMSAttributes]
$creadListPrec :: ReadPrec [SetSMSAttributes]
readPrec :: ReadPrec SetSMSAttributes
$creadPrec :: ReadPrec SetSMSAttributes
readList :: ReadS [SetSMSAttributes]
$creadList :: ReadS [SetSMSAttributes]
readsPrec :: Int -> ReadS SetSMSAttributes
$creadsPrec :: Int -> ReadS SetSMSAttributes
Prelude.Read, Int -> SetSMSAttributes -> ShowS
[SetSMSAttributes] -> ShowS
SetSMSAttributes -> String
(Int -> SetSMSAttributes -> ShowS)
-> (SetSMSAttributes -> String)
-> ([SetSMSAttributes] -> ShowS)
-> Show SetSMSAttributes
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SetSMSAttributes] -> ShowS
$cshowList :: [SetSMSAttributes] -> ShowS
show :: SetSMSAttributes -> String
$cshow :: SetSMSAttributes -> String
showsPrec :: Int -> SetSMSAttributes -> ShowS
$cshowsPrec :: Int -> SetSMSAttributes -> ShowS
Prelude.Show, (forall x. SetSMSAttributes -> Rep SetSMSAttributes x)
-> (forall x. Rep SetSMSAttributes x -> SetSMSAttributes)
-> Generic SetSMSAttributes
forall x. Rep SetSMSAttributes x -> SetSMSAttributes
forall x. SetSMSAttributes -> Rep SetSMSAttributes x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SetSMSAttributes x -> SetSMSAttributes
$cfrom :: forall x. SetSMSAttributes -> Rep SetSMSAttributes x
Prelude.Generic)

-- |
-- Create a value of 'SetSMSAttributes' 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:
--
-- 'attributes', 'setSMSAttributes_attributes' - The default settings for sending SMS messages from your account. You can
-- set values for the following attribute names:
--
-- @MonthlySpendLimit@ – The maximum amount in USD that you are willing to
-- spend each month to send SMS messages. When Amazon SNS determines that
-- sending an SMS message would incur a cost that exceeds this limit, it
-- stops sending SMS messages within minutes.
--
-- Amazon SNS stops sending SMS messages within minutes of the limit being
-- crossed. During that interval, if you continue to send SMS messages, you
-- will incur costs that exceed your limit.
--
-- By default, the spend limit is set to the maximum allowed by Amazon SNS.
-- If you want to raise the limit, submit an
-- <https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-sns SNS Limit Increase case>.
-- For __New limit value__, enter your desired monthly spend limit. In the
-- __Use Case Description__ field, explain that you are requesting an SMS
-- monthly spend limit increase.
--
-- @DeliveryStatusIAMRole@ – The ARN of the IAM role that allows Amazon SNS
-- to write logs about SMS deliveries in CloudWatch Logs. For each SMS
-- message that you send, Amazon SNS writes a log that includes the message
-- price, the success or failure status, the reason for failure (if the
-- message failed), the message dwell time, and other information.
--
-- @DeliveryStatusSuccessSamplingRate@ – The percentage of successful SMS
-- deliveries for which Amazon SNS will write logs in CloudWatch Logs. The
-- value can be an integer from 0 - 100. For example, to write logs only
-- for failed deliveries, set this value to @0@. To write logs for 10% of
-- your successful deliveries, set it to @10@.
--
-- @DefaultSenderID@ – A string, such as your business brand, that is
-- displayed as the sender on the receiving device. Support for sender IDs
-- varies by country. The sender ID can be 1 - 11 alphanumeric characters,
-- and it must contain at least one letter.
--
-- @DefaultSMSType@ – The type of SMS message that you will send by
-- default. You can assign the following values:
--
-- -   @Promotional@ – (Default) Noncritical messages, such as marketing
--     messages. Amazon SNS optimizes the message delivery to incur the
--     lowest cost.
--
-- -   @Transactional@ – Critical messages that support customer
--     transactions, such as one-time passcodes for multi-factor
--     authentication. Amazon SNS optimizes the message delivery to achieve
--     the highest reliability.
--
-- @UsageReportS3Bucket@ – The name of the Amazon S3 bucket to receive
-- daily SMS usage reports from Amazon SNS. Each day, Amazon SNS will
-- deliver a usage report as a CSV file to the bucket. The report includes
-- the following information for each SMS message that was successfully
-- delivered by your account:
--
-- -   Time that the message was published (in UTC)
--
-- -   Message ID
--
-- -   Destination phone number
--
-- -   Message type
--
-- -   Delivery status
--
-- -   Message price (in USD)
--
-- -   Part number (a message is split into multiple parts if it is too
--     long for a single message)
--
-- -   Total number of parts
--
-- To receive the report, the bucket must have a policy that allows the
-- Amazon SNS service principal to perform the @s3:PutObject@ and
-- @s3:GetBucketLocation@ actions.
--
-- For an example bucket policy and usage report, see
-- <https://docs.aws.amazon.com/sns/latest/dg/sms_stats.html Monitoring SMS Activity>
-- in the /Amazon SNS Developer Guide/.
newSetSMSAttributes ::
  SetSMSAttributes
newSetSMSAttributes :: SetSMSAttributes
newSetSMSAttributes =
  SetSMSAttributes' :: HashMap Text Text -> SetSMSAttributes
SetSMSAttributes' {$sel:attributes:SetSMSAttributes' :: HashMap Text Text
attributes = HashMap Text Text
forall a. Monoid a => a
Prelude.mempty}

-- | The default settings for sending SMS messages from your account. You can
-- set values for the following attribute names:
--
-- @MonthlySpendLimit@ – The maximum amount in USD that you are willing to
-- spend each month to send SMS messages. When Amazon SNS determines that
-- sending an SMS message would incur a cost that exceeds this limit, it
-- stops sending SMS messages within minutes.
--
-- Amazon SNS stops sending SMS messages within minutes of the limit being
-- crossed. During that interval, if you continue to send SMS messages, you
-- will incur costs that exceed your limit.
--
-- By default, the spend limit is set to the maximum allowed by Amazon SNS.
-- If you want to raise the limit, submit an
-- <https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-sns SNS Limit Increase case>.
-- For __New limit value__, enter your desired monthly spend limit. In the
-- __Use Case Description__ field, explain that you are requesting an SMS
-- monthly spend limit increase.
--
-- @DeliveryStatusIAMRole@ – The ARN of the IAM role that allows Amazon SNS
-- to write logs about SMS deliveries in CloudWatch Logs. For each SMS
-- message that you send, Amazon SNS writes a log that includes the message
-- price, the success or failure status, the reason for failure (if the
-- message failed), the message dwell time, and other information.
--
-- @DeliveryStatusSuccessSamplingRate@ – The percentage of successful SMS
-- deliveries for which Amazon SNS will write logs in CloudWatch Logs. The
-- value can be an integer from 0 - 100. For example, to write logs only
-- for failed deliveries, set this value to @0@. To write logs for 10% of
-- your successful deliveries, set it to @10@.
--
-- @DefaultSenderID@ – A string, such as your business brand, that is
-- displayed as the sender on the receiving device. Support for sender IDs
-- varies by country. The sender ID can be 1 - 11 alphanumeric characters,
-- and it must contain at least one letter.
--
-- @DefaultSMSType@ – The type of SMS message that you will send by
-- default. You can assign the following values:
--
-- -   @Promotional@ – (Default) Noncritical messages, such as marketing
--     messages. Amazon SNS optimizes the message delivery to incur the
--     lowest cost.
--
-- -   @Transactional@ – Critical messages that support customer
--     transactions, such as one-time passcodes for multi-factor
--     authentication. Amazon SNS optimizes the message delivery to achieve
--     the highest reliability.
--
-- @UsageReportS3Bucket@ – The name of the Amazon S3 bucket to receive
-- daily SMS usage reports from Amazon SNS. Each day, Amazon SNS will
-- deliver a usage report as a CSV file to the bucket. The report includes
-- the following information for each SMS message that was successfully
-- delivered by your account:
--
-- -   Time that the message was published (in UTC)
--
-- -   Message ID
--
-- -   Destination phone number
--
-- -   Message type
--
-- -   Delivery status
--
-- -   Message price (in USD)
--
-- -   Part number (a message is split into multiple parts if it is too
--     long for a single message)
--
-- -   Total number of parts
--
-- To receive the report, the bucket must have a policy that allows the
-- Amazon SNS service principal to perform the @s3:PutObject@ and
-- @s3:GetBucketLocation@ actions.
--
-- For an example bucket policy and usage report, see
-- <https://docs.aws.amazon.com/sns/latest/dg/sms_stats.html Monitoring SMS Activity>
-- in the /Amazon SNS Developer Guide/.
setSMSAttributes_attributes :: Lens.Lens' SetSMSAttributes (Prelude.HashMap Prelude.Text Prelude.Text)
setSMSAttributes_attributes :: (HashMap Text Text -> f (HashMap Text Text))
-> SetSMSAttributes -> f SetSMSAttributes
setSMSAttributes_attributes = (SetSMSAttributes -> HashMap Text Text)
-> (SetSMSAttributes -> HashMap Text Text -> SetSMSAttributes)
-> Lens
     SetSMSAttributes
     SetSMSAttributes
     (HashMap Text Text)
     (HashMap Text Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SetSMSAttributes' {HashMap Text Text
attributes :: HashMap Text Text
$sel:attributes:SetSMSAttributes' :: SetSMSAttributes -> HashMap Text Text
attributes} -> HashMap Text Text
attributes) (\s :: SetSMSAttributes
s@SetSMSAttributes' {} HashMap Text Text
a -> SetSMSAttributes
s {$sel:attributes:SetSMSAttributes' :: HashMap Text Text
attributes = HashMap Text Text
a} :: SetSMSAttributes) ((HashMap Text Text -> f (HashMap Text Text))
 -> SetSMSAttributes -> f SetSMSAttributes)
-> ((HashMap Text Text -> f (HashMap Text Text))
    -> HashMap Text Text -> f (HashMap Text Text))
-> (HashMap Text Text -> f (HashMap Text Text))
-> SetSMSAttributes
-> f SetSMSAttributes
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (HashMap Text Text -> f (HashMap Text Text))
-> HashMap Text Text -> f (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.AWSRequest SetSMSAttributes where
  type
    AWSResponse SetSMSAttributes =
      SetSMSAttributesResponse
  request :: SetSMSAttributes -> Request SetSMSAttributes
request = Service -> SetSMSAttributes -> Request SetSMSAttributes
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery Service
defaultService
  response :: Logger
-> Service
-> Proxy SetSMSAttributes
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse SetSMSAttributes)))
response =
    Text
-> (Int
    -> ResponseHeaders
    -> [Node]
    -> Either String (AWSResponse SetSMSAttributes))
-> Logger
-> Service
-> Proxy SetSMSAttributes
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse SetSMSAttributes)))
forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"SetSMSAttributesResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Int -> SetSMSAttributesResponse
SetSMSAttributesResponse'
            (Int -> SetSMSAttributesResponse)
-> Either String Int -> Either String SetSMSAttributesResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable SetSMSAttributes

instance Prelude.NFData SetSMSAttributes

instance Core.ToHeaders SetSMSAttributes where
  toHeaders :: SetSMSAttributes -> ResponseHeaders
toHeaders = ResponseHeaders -> SetSMSAttributes -> ResponseHeaders
forall a b. a -> b -> a
Prelude.const ResponseHeaders
forall a. Monoid a => a
Prelude.mempty

instance Core.ToPath SetSMSAttributes where
  toPath :: SetSMSAttributes -> ByteString
toPath = ByteString -> SetSMSAttributes -> ByteString
forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Core.ToQuery SetSMSAttributes where
  toQuery :: SetSMSAttributes -> QueryString
toQuery SetSMSAttributes' {HashMap Text Text
attributes :: HashMap Text Text
$sel:attributes:SetSMSAttributes' :: SetSMSAttributes -> HashMap Text Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"SetSMSAttributes" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"2010-03-31" :: Prelude.ByteString),
        ByteString
"attributes"
          ByteString -> QueryString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: ByteString
-> ByteString -> ByteString -> HashMap Text Text -> QueryString
forall k v.
(ToQuery k, ToQuery v) =>
ByteString
-> ByteString -> ByteString -> HashMap k v -> QueryString
Core.toQueryMap ByteString
"entry" ByteString
"key" ByteString
"value" HashMap Text Text
attributes
      ]

-- | The response for the SetSMSAttributes action.
--
-- /See:/ 'newSetSMSAttributesResponse' smart constructor.
data SetSMSAttributesResponse = SetSMSAttributesResponse'
  { -- | The response's http status code.
    SetSMSAttributesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (SetSMSAttributesResponse -> SetSMSAttributesResponse -> Bool
(SetSMSAttributesResponse -> SetSMSAttributesResponse -> Bool)
-> (SetSMSAttributesResponse -> SetSMSAttributesResponse -> Bool)
-> Eq SetSMSAttributesResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SetSMSAttributesResponse -> SetSMSAttributesResponse -> Bool
$c/= :: SetSMSAttributesResponse -> SetSMSAttributesResponse -> Bool
== :: SetSMSAttributesResponse -> SetSMSAttributesResponse -> Bool
$c== :: SetSMSAttributesResponse -> SetSMSAttributesResponse -> Bool
Prelude.Eq, ReadPrec [SetSMSAttributesResponse]
ReadPrec SetSMSAttributesResponse
Int -> ReadS SetSMSAttributesResponse
ReadS [SetSMSAttributesResponse]
(Int -> ReadS SetSMSAttributesResponse)
-> ReadS [SetSMSAttributesResponse]
-> ReadPrec SetSMSAttributesResponse
-> ReadPrec [SetSMSAttributesResponse]
-> Read SetSMSAttributesResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SetSMSAttributesResponse]
$creadListPrec :: ReadPrec [SetSMSAttributesResponse]
readPrec :: ReadPrec SetSMSAttributesResponse
$creadPrec :: ReadPrec SetSMSAttributesResponse
readList :: ReadS [SetSMSAttributesResponse]
$creadList :: ReadS [SetSMSAttributesResponse]
readsPrec :: Int -> ReadS SetSMSAttributesResponse
$creadsPrec :: Int -> ReadS SetSMSAttributesResponse
Prelude.Read, Int -> SetSMSAttributesResponse -> ShowS
[SetSMSAttributesResponse] -> ShowS
SetSMSAttributesResponse -> String
(Int -> SetSMSAttributesResponse -> ShowS)
-> (SetSMSAttributesResponse -> String)
-> ([SetSMSAttributesResponse] -> ShowS)
-> Show SetSMSAttributesResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SetSMSAttributesResponse] -> ShowS
$cshowList :: [SetSMSAttributesResponse] -> ShowS
show :: SetSMSAttributesResponse -> String
$cshow :: SetSMSAttributesResponse -> String
showsPrec :: Int -> SetSMSAttributesResponse -> ShowS
$cshowsPrec :: Int -> SetSMSAttributesResponse -> ShowS
Prelude.Show, (forall x.
 SetSMSAttributesResponse -> Rep SetSMSAttributesResponse x)
-> (forall x.
    Rep SetSMSAttributesResponse x -> SetSMSAttributesResponse)
-> Generic SetSMSAttributesResponse
forall x.
Rep SetSMSAttributesResponse x -> SetSMSAttributesResponse
forall x.
SetSMSAttributesResponse -> Rep SetSMSAttributesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep SetSMSAttributesResponse x -> SetSMSAttributesResponse
$cfrom :: forall x.
SetSMSAttributesResponse -> Rep SetSMSAttributesResponse x
Prelude.Generic)

-- |
-- Create a value of 'SetSMSAttributesResponse' 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:
--
-- 'httpStatus', 'setSMSAttributesResponse_httpStatus' - The response's http status code.
newSetSMSAttributesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  SetSMSAttributesResponse
newSetSMSAttributesResponse :: Int -> SetSMSAttributesResponse
newSetSMSAttributesResponse Int
pHttpStatus_ =
  SetSMSAttributesResponse' :: Int -> SetSMSAttributesResponse
SetSMSAttributesResponse'
    { $sel:httpStatus:SetSMSAttributesResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

-- | The response's http status code.
setSMSAttributesResponse_httpStatus :: Lens.Lens' SetSMSAttributesResponse Prelude.Int
setSMSAttributesResponse_httpStatus :: (Int -> f Int)
-> SetSMSAttributesResponse -> f SetSMSAttributesResponse
setSMSAttributesResponse_httpStatus = (SetSMSAttributesResponse -> Int)
-> (SetSMSAttributesResponse -> Int -> SetSMSAttributesResponse)
-> Lens SetSMSAttributesResponse SetSMSAttributesResponse Int Int
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SetSMSAttributesResponse' {Int
httpStatus :: Int
$sel:httpStatus:SetSMSAttributesResponse' :: SetSMSAttributesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: SetSMSAttributesResponse
s@SetSMSAttributesResponse' {} Int
a -> SetSMSAttributesResponse
s {$sel:httpStatus:SetSMSAttributesResponse' :: Int
httpStatus = Int
a} :: SetSMSAttributesResponse)

instance Prelude.NFData SetSMSAttributesResponse