{-# 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.SecurityLake.CreateSubscriptionNotificationConfiguration
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Notifies the subscriber when new data is written to the data lake for
-- the sources that the subscriber consumes in Security Lake.
module Amazonka.SecurityLake.CreateSubscriptionNotificationConfiguration
  ( -- * Creating a Request
    CreateSubscriptionNotificationConfiguration (..),
    newCreateSubscriptionNotificationConfiguration,

    -- * Request Lenses
    createSubscriptionNotificationConfiguration_createSqs,
    createSubscriptionNotificationConfiguration_httpsApiKeyName,
    createSubscriptionNotificationConfiguration_httpsApiKeyValue,
    createSubscriptionNotificationConfiguration_httpsMethod,
    createSubscriptionNotificationConfiguration_roleArn,
    createSubscriptionNotificationConfiguration_subscriptionEndpoint,
    createSubscriptionNotificationConfiguration_subscriptionId,

    -- * Destructuring the Response
    CreateSubscriptionNotificationConfigurationResponse (..),
    newCreateSubscriptionNotificationConfigurationResponse,

    -- * Response Lenses
    createSubscriptionNotificationConfigurationResponse_queueArn,
    createSubscriptionNotificationConfigurationResponse_httpStatus,
  )
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SecurityLake.Types

-- | /See:/ 'newCreateSubscriptionNotificationConfiguration' smart constructor.
data CreateSubscriptionNotificationConfiguration = CreateSubscriptionNotificationConfiguration'
  { -- | Create an Amazon Simple Queue Service queue.
    CreateSubscriptionNotificationConfiguration -> Maybe Bool
createSqs :: Prelude.Maybe Prelude.Bool,
    -- | The key name for the notification subscription.
    CreateSubscriptionNotificationConfiguration -> Maybe Text
httpsApiKeyName :: Prelude.Maybe Prelude.Text,
    -- | The key value for the notification subscription.
    CreateSubscriptionNotificationConfiguration -> Maybe Text
httpsApiKeyValue :: Prelude.Maybe Prelude.Text,
    -- | The HTTPS method used for the notification subscription.
    CreateSubscriptionNotificationConfiguration -> Maybe HttpsMethod
httpsMethod :: Prelude.Maybe HttpsMethod,
    -- | The Amazon Resource Name (ARN) of the EventBridge API destinations IAM
    -- role that you created.
    CreateSubscriptionNotificationConfiguration -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | The subscription endpoint in Security Lake. If you prefer notification
    -- with an HTTPs endpoint, populate this field.
    CreateSubscriptionNotificationConfiguration -> Maybe Text
subscriptionEndpoint :: Prelude.Maybe Prelude.Text,
    -- | The subscription ID for the notification subscription\/
    CreateSubscriptionNotificationConfiguration -> Text
subscriptionId :: Prelude.Text
  }
  deriving (CreateSubscriptionNotificationConfiguration
-> CreateSubscriptionNotificationConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateSubscriptionNotificationConfiguration
-> CreateSubscriptionNotificationConfiguration -> Bool
$c/= :: CreateSubscriptionNotificationConfiguration
-> CreateSubscriptionNotificationConfiguration -> Bool
== :: CreateSubscriptionNotificationConfiguration
-> CreateSubscriptionNotificationConfiguration -> Bool
$c== :: CreateSubscriptionNotificationConfiguration
-> CreateSubscriptionNotificationConfiguration -> Bool
Prelude.Eq, ReadPrec [CreateSubscriptionNotificationConfiguration]
ReadPrec CreateSubscriptionNotificationConfiguration
Int -> ReadS CreateSubscriptionNotificationConfiguration
ReadS [CreateSubscriptionNotificationConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateSubscriptionNotificationConfiguration]
$creadListPrec :: ReadPrec [CreateSubscriptionNotificationConfiguration]
readPrec :: ReadPrec CreateSubscriptionNotificationConfiguration
$creadPrec :: ReadPrec CreateSubscriptionNotificationConfiguration
readList :: ReadS [CreateSubscriptionNotificationConfiguration]
$creadList :: ReadS [CreateSubscriptionNotificationConfiguration]
readsPrec :: Int -> ReadS CreateSubscriptionNotificationConfiguration
$creadsPrec :: Int -> ReadS CreateSubscriptionNotificationConfiguration
Prelude.Read, Int -> CreateSubscriptionNotificationConfiguration -> ShowS
[CreateSubscriptionNotificationConfiguration] -> ShowS
CreateSubscriptionNotificationConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateSubscriptionNotificationConfiguration] -> ShowS
$cshowList :: [CreateSubscriptionNotificationConfiguration] -> ShowS
show :: CreateSubscriptionNotificationConfiguration -> String
$cshow :: CreateSubscriptionNotificationConfiguration -> String
showsPrec :: Int -> CreateSubscriptionNotificationConfiguration -> ShowS
$cshowsPrec :: Int -> CreateSubscriptionNotificationConfiguration -> ShowS
Prelude.Show, forall x.
Rep CreateSubscriptionNotificationConfiguration x
-> CreateSubscriptionNotificationConfiguration
forall x.
CreateSubscriptionNotificationConfiguration
-> Rep CreateSubscriptionNotificationConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateSubscriptionNotificationConfiguration x
-> CreateSubscriptionNotificationConfiguration
$cfrom :: forall x.
CreateSubscriptionNotificationConfiguration
-> Rep CreateSubscriptionNotificationConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'CreateSubscriptionNotificationConfiguration' 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:
--
-- 'createSqs', 'createSubscriptionNotificationConfiguration_createSqs' - Create an Amazon Simple Queue Service queue.
--
-- 'httpsApiKeyName', 'createSubscriptionNotificationConfiguration_httpsApiKeyName' - The key name for the notification subscription.
--
-- 'httpsApiKeyValue', 'createSubscriptionNotificationConfiguration_httpsApiKeyValue' - The key value for the notification subscription.
--
-- 'httpsMethod', 'createSubscriptionNotificationConfiguration_httpsMethod' - The HTTPS method used for the notification subscription.
--
-- 'roleArn', 'createSubscriptionNotificationConfiguration_roleArn' - The Amazon Resource Name (ARN) of the EventBridge API destinations IAM
-- role that you created.
--
-- 'subscriptionEndpoint', 'createSubscriptionNotificationConfiguration_subscriptionEndpoint' - The subscription endpoint in Security Lake. If you prefer notification
-- with an HTTPs endpoint, populate this field.
--
-- 'subscriptionId', 'createSubscriptionNotificationConfiguration_subscriptionId' - The subscription ID for the notification subscription\/
newCreateSubscriptionNotificationConfiguration ::
  -- | 'subscriptionId'
  Prelude.Text ->
  CreateSubscriptionNotificationConfiguration
newCreateSubscriptionNotificationConfiguration :: Text -> CreateSubscriptionNotificationConfiguration
newCreateSubscriptionNotificationConfiguration
  Text
pSubscriptionId_ =
    CreateSubscriptionNotificationConfiguration'
      { $sel:createSqs:CreateSubscriptionNotificationConfiguration' :: Maybe Bool
createSqs =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpsApiKeyName:CreateSubscriptionNotificationConfiguration' :: Maybe Text
httpsApiKeyName =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpsApiKeyValue:CreateSubscriptionNotificationConfiguration' :: Maybe Text
httpsApiKeyValue =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpsMethod:CreateSubscriptionNotificationConfiguration' :: Maybe HttpsMethod
httpsMethod = forall a. Maybe a
Prelude.Nothing,
        $sel:roleArn:CreateSubscriptionNotificationConfiguration' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
        $sel:subscriptionEndpoint:CreateSubscriptionNotificationConfiguration' :: Maybe Text
subscriptionEndpoint =
          forall a. Maybe a
Prelude.Nothing,
        $sel:subscriptionId:CreateSubscriptionNotificationConfiguration' :: Text
subscriptionId =
          Text
pSubscriptionId_
      }

-- | Create an Amazon Simple Queue Service queue.
createSubscriptionNotificationConfiguration_createSqs :: Lens.Lens' CreateSubscriptionNotificationConfiguration (Prelude.Maybe Prelude.Bool)
createSubscriptionNotificationConfiguration_createSqs :: Lens' CreateSubscriptionNotificationConfiguration (Maybe Bool)
createSubscriptionNotificationConfiguration_createSqs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSubscriptionNotificationConfiguration' {Maybe Bool
createSqs :: Maybe Bool
$sel:createSqs:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Bool
createSqs} -> Maybe Bool
createSqs) (\s :: CreateSubscriptionNotificationConfiguration
s@CreateSubscriptionNotificationConfiguration' {} Maybe Bool
a -> CreateSubscriptionNotificationConfiguration
s {$sel:createSqs:CreateSubscriptionNotificationConfiguration' :: Maybe Bool
createSqs = Maybe Bool
a} :: CreateSubscriptionNotificationConfiguration)

-- | The key name for the notification subscription.
createSubscriptionNotificationConfiguration_httpsApiKeyName :: Lens.Lens' CreateSubscriptionNotificationConfiguration (Prelude.Maybe Prelude.Text)
createSubscriptionNotificationConfiguration_httpsApiKeyName :: Lens' CreateSubscriptionNotificationConfiguration (Maybe Text)
createSubscriptionNotificationConfiguration_httpsApiKeyName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSubscriptionNotificationConfiguration' {Maybe Text
httpsApiKeyName :: Maybe Text
$sel:httpsApiKeyName:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
httpsApiKeyName} -> Maybe Text
httpsApiKeyName) (\s :: CreateSubscriptionNotificationConfiguration
s@CreateSubscriptionNotificationConfiguration' {} Maybe Text
a -> CreateSubscriptionNotificationConfiguration
s {$sel:httpsApiKeyName:CreateSubscriptionNotificationConfiguration' :: Maybe Text
httpsApiKeyName = Maybe Text
a} :: CreateSubscriptionNotificationConfiguration)

-- | The key value for the notification subscription.
createSubscriptionNotificationConfiguration_httpsApiKeyValue :: Lens.Lens' CreateSubscriptionNotificationConfiguration (Prelude.Maybe Prelude.Text)
createSubscriptionNotificationConfiguration_httpsApiKeyValue :: Lens' CreateSubscriptionNotificationConfiguration (Maybe Text)
createSubscriptionNotificationConfiguration_httpsApiKeyValue = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSubscriptionNotificationConfiguration' {Maybe Text
httpsApiKeyValue :: Maybe Text
$sel:httpsApiKeyValue:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
httpsApiKeyValue} -> Maybe Text
httpsApiKeyValue) (\s :: CreateSubscriptionNotificationConfiguration
s@CreateSubscriptionNotificationConfiguration' {} Maybe Text
a -> CreateSubscriptionNotificationConfiguration
s {$sel:httpsApiKeyValue:CreateSubscriptionNotificationConfiguration' :: Maybe Text
httpsApiKeyValue = Maybe Text
a} :: CreateSubscriptionNotificationConfiguration)

-- | The HTTPS method used for the notification subscription.
createSubscriptionNotificationConfiguration_httpsMethod :: Lens.Lens' CreateSubscriptionNotificationConfiguration (Prelude.Maybe HttpsMethod)
createSubscriptionNotificationConfiguration_httpsMethod :: Lens'
  CreateSubscriptionNotificationConfiguration (Maybe HttpsMethod)
createSubscriptionNotificationConfiguration_httpsMethod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSubscriptionNotificationConfiguration' {Maybe HttpsMethod
httpsMethod :: Maybe HttpsMethod
$sel:httpsMethod:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe HttpsMethod
httpsMethod} -> Maybe HttpsMethod
httpsMethod) (\s :: CreateSubscriptionNotificationConfiguration
s@CreateSubscriptionNotificationConfiguration' {} Maybe HttpsMethod
a -> CreateSubscriptionNotificationConfiguration
s {$sel:httpsMethod:CreateSubscriptionNotificationConfiguration' :: Maybe HttpsMethod
httpsMethod = Maybe HttpsMethod
a} :: CreateSubscriptionNotificationConfiguration)

-- | The Amazon Resource Name (ARN) of the EventBridge API destinations IAM
-- role that you created.
createSubscriptionNotificationConfiguration_roleArn :: Lens.Lens' CreateSubscriptionNotificationConfiguration (Prelude.Maybe Prelude.Text)
createSubscriptionNotificationConfiguration_roleArn :: Lens' CreateSubscriptionNotificationConfiguration (Maybe Text)
createSubscriptionNotificationConfiguration_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSubscriptionNotificationConfiguration' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: CreateSubscriptionNotificationConfiguration
s@CreateSubscriptionNotificationConfiguration' {} Maybe Text
a -> CreateSubscriptionNotificationConfiguration
s {$sel:roleArn:CreateSubscriptionNotificationConfiguration' :: Maybe Text
roleArn = Maybe Text
a} :: CreateSubscriptionNotificationConfiguration)

-- | The subscription endpoint in Security Lake. If you prefer notification
-- with an HTTPs endpoint, populate this field.
createSubscriptionNotificationConfiguration_subscriptionEndpoint :: Lens.Lens' CreateSubscriptionNotificationConfiguration (Prelude.Maybe Prelude.Text)
createSubscriptionNotificationConfiguration_subscriptionEndpoint :: Lens' CreateSubscriptionNotificationConfiguration (Maybe Text)
createSubscriptionNotificationConfiguration_subscriptionEndpoint = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSubscriptionNotificationConfiguration' {Maybe Text
subscriptionEndpoint :: Maybe Text
$sel:subscriptionEndpoint:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
subscriptionEndpoint} -> Maybe Text
subscriptionEndpoint) (\s :: CreateSubscriptionNotificationConfiguration
s@CreateSubscriptionNotificationConfiguration' {} Maybe Text
a -> CreateSubscriptionNotificationConfiguration
s {$sel:subscriptionEndpoint:CreateSubscriptionNotificationConfiguration' :: Maybe Text
subscriptionEndpoint = Maybe Text
a} :: CreateSubscriptionNotificationConfiguration)

-- | The subscription ID for the notification subscription\/
createSubscriptionNotificationConfiguration_subscriptionId :: Lens.Lens' CreateSubscriptionNotificationConfiguration Prelude.Text
createSubscriptionNotificationConfiguration_subscriptionId :: Lens' CreateSubscriptionNotificationConfiguration Text
createSubscriptionNotificationConfiguration_subscriptionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSubscriptionNotificationConfiguration' {Text
subscriptionId :: Text
$sel:subscriptionId:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Text
subscriptionId} -> Text
subscriptionId) (\s :: CreateSubscriptionNotificationConfiguration
s@CreateSubscriptionNotificationConfiguration' {} Text
a -> CreateSubscriptionNotificationConfiguration
s {$sel:subscriptionId:CreateSubscriptionNotificationConfiguration' :: Text
subscriptionId = Text
a} :: CreateSubscriptionNotificationConfiguration)

instance
  Core.AWSRequest
    CreateSubscriptionNotificationConfiguration
  where
  type
    AWSResponse
      CreateSubscriptionNotificationConfiguration =
      CreateSubscriptionNotificationConfigurationResponse
  request :: (Service -> Service)
-> CreateSubscriptionNotificationConfiguration
-> Request CreateSubscriptionNotificationConfiguration
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateSubscriptionNotificationConfiguration
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse CreateSubscriptionNotificationConfiguration)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Int -> CreateSubscriptionNotificationConfigurationResponse
CreateSubscriptionNotificationConfigurationResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"queueArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    CreateSubscriptionNotificationConfiguration
  where
  hashWithSalt :: Int -> CreateSubscriptionNotificationConfiguration -> Int
hashWithSalt
    Int
_salt
    CreateSubscriptionNotificationConfiguration' {Maybe Bool
Maybe Text
Maybe HttpsMethod
Text
subscriptionId :: Text
subscriptionEndpoint :: Maybe Text
roleArn :: Maybe Text
httpsMethod :: Maybe HttpsMethod
httpsApiKeyValue :: Maybe Text
httpsApiKeyName :: Maybe Text
createSqs :: Maybe Bool
$sel:subscriptionId:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Text
$sel:subscriptionEndpoint:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:roleArn:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:httpsMethod:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe HttpsMethod
$sel:httpsApiKeyValue:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:httpsApiKeyName:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:createSqs:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Bool
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
createSqs
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
httpsApiKeyName
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
httpsApiKeyValue
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HttpsMethod
httpsMethod
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
roleArn
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subscriptionEndpoint
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
subscriptionId

instance
  Prelude.NFData
    CreateSubscriptionNotificationConfiguration
  where
  rnf :: CreateSubscriptionNotificationConfiguration -> ()
rnf CreateSubscriptionNotificationConfiguration' {Maybe Bool
Maybe Text
Maybe HttpsMethod
Text
subscriptionId :: Text
subscriptionEndpoint :: Maybe Text
roleArn :: Maybe Text
httpsMethod :: Maybe HttpsMethod
httpsApiKeyValue :: Maybe Text
httpsApiKeyName :: Maybe Text
createSqs :: Maybe Bool
$sel:subscriptionId:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Text
$sel:subscriptionEndpoint:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:roleArn:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:httpsMethod:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe HttpsMethod
$sel:httpsApiKeyValue:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:httpsApiKeyName:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:createSqs:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
createSqs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
httpsApiKeyName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
httpsApiKeyValue
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HttpsMethod
httpsMethod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subscriptionEndpoint
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
subscriptionId

instance
  Data.ToHeaders
    CreateSubscriptionNotificationConfiguration
  where
  toHeaders :: CreateSubscriptionNotificationConfiguration -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToJSON
    CreateSubscriptionNotificationConfiguration
  where
  toJSON :: CreateSubscriptionNotificationConfiguration -> Value
toJSON
    CreateSubscriptionNotificationConfiguration' {Maybe Bool
Maybe Text
Maybe HttpsMethod
Text
subscriptionId :: Text
subscriptionEndpoint :: Maybe Text
roleArn :: Maybe Text
httpsMethod :: Maybe HttpsMethod
httpsApiKeyValue :: Maybe Text
httpsApiKeyName :: Maybe Text
createSqs :: Maybe Bool
$sel:subscriptionId:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Text
$sel:subscriptionEndpoint:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:roleArn:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:httpsMethod:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe HttpsMethod
$sel:httpsApiKeyValue:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:httpsApiKeyName:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:createSqs:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Bool
..} =
      [Pair] -> Value
Data.object
        ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
            [ (Key
"createSqs" 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 Bool
createSqs,
              (Key
"httpsApiKeyName" 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
httpsApiKeyName,
              (Key
"httpsApiKeyValue" 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
httpsApiKeyValue,
              (Key
"httpsMethod" 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 HttpsMethod
httpsMethod,
              (Key
"roleArn" 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
roleArn,
              (Key
"subscriptionEndpoint" 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
subscriptionEndpoint
            ]
        )

instance
  Data.ToPath
    CreateSubscriptionNotificationConfiguration
  where
  toPath :: CreateSubscriptionNotificationConfiguration -> ByteString
toPath
    CreateSubscriptionNotificationConfiguration' {Maybe Bool
Maybe Text
Maybe HttpsMethod
Text
subscriptionId :: Text
subscriptionEndpoint :: Maybe Text
roleArn :: Maybe Text
httpsMethod :: Maybe HttpsMethod
httpsApiKeyValue :: Maybe Text
httpsApiKeyName :: Maybe Text
createSqs :: Maybe Bool
$sel:subscriptionId:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Text
$sel:subscriptionEndpoint:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:roleArn:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:httpsMethod:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe HttpsMethod
$sel:httpsApiKeyValue:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:httpsApiKeyName:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Text
$sel:createSqs:CreateSubscriptionNotificationConfiguration' :: CreateSubscriptionNotificationConfiguration -> Maybe Bool
..} =
      forall a. Monoid a => [a] -> a
Prelude.mconcat
        [ ByteString
"/subscription-notifications/",
          forall a. ToByteString a => a -> ByteString
Data.toBS Text
subscriptionId
        ]

instance
  Data.ToQuery
    CreateSubscriptionNotificationConfiguration
  where
  toQuery :: CreateSubscriptionNotificationConfiguration -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newCreateSubscriptionNotificationConfigurationResponse' smart constructor.
data CreateSubscriptionNotificationConfigurationResponse = CreateSubscriptionNotificationConfigurationResponse'
  { -- | Returns the Amazon Resource Name (ARN) of the queue.
    CreateSubscriptionNotificationConfigurationResponse -> Maybe Text
queueArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateSubscriptionNotificationConfigurationResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateSubscriptionNotificationConfigurationResponse
-> CreateSubscriptionNotificationConfigurationResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateSubscriptionNotificationConfigurationResponse
-> CreateSubscriptionNotificationConfigurationResponse -> Bool
$c/= :: CreateSubscriptionNotificationConfigurationResponse
-> CreateSubscriptionNotificationConfigurationResponse -> Bool
== :: CreateSubscriptionNotificationConfigurationResponse
-> CreateSubscriptionNotificationConfigurationResponse -> Bool
$c== :: CreateSubscriptionNotificationConfigurationResponse
-> CreateSubscriptionNotificationConfigurationResponse -> Bool
Prelude.Eq, ReadPrec [CreateSubscriptionNotificationConfigurationResponse]
ReadPrec CreateSubscriptionNotificationConfigurationResponse
Int -> ReadS CreateSubscriptionNotificationConfigurationResponse
ReadS [CreateSubscriptionNotificationConfigurationResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateSubscriptionNotificationConfigurationResponse]
$creadListPrec :: ReadPrec [CreateSubscriptionNotificationConfigurationResponse]
readPrec :: ReadPrec CreateSubscriptionNotificationConfigurationResponse
$creadPrec :: ReadPrec CreateSubscriptionNotificationConfigurationResponse
readList :: ReadS [CreateSubscriptionNotificationConfigurationResponse]
$creadList :: ReadS [CreateSubscriptionNotificationConfigurationResponse]
readsPrec :: Int -> ReadS CreateSubscriptionNotificationConfigurationResponse
$creadsPrec :: Int -> ReadS CreateSubscriptionNotificationConfigurationResponse
Prelude.Read, Int -> CreateSubscriptionNotificationConfigurationResponse -> ShowS
[CreateSubscriptionNotificationConfigurationResponse] -> ShowS
CreateSubscriptionNotificationConfigurationResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateSubscriptionNotificationConfigurationResponse] -> ShowS
$cshowList :: [CreateSubscriptionNotificationConfigurationResponse] -> ShowS
show :: CreateSubscriptionNotificationConfigurationResponse -> String
$cshow :: CreateSubscriptionNotificationConfigurationResponse -> String
showsPrec :: Int -> CreateSubscriptionNotificationConfigurationResponse -> ShowS
$cshowsPrec :: Int -> CreateSubscriptionNotificationConfigurationResponse -> ShowS
Prelude.Show, forall x.
Rep CreateSubscriptionNotificationConfigurationResponse x
-> CreateSubscriptionNotificationConfigurationResponse
forall x.
CreateSubscriptionNotificationConfigurationResponse
-> Rep CreateSubscriptionNotificationConfigurationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateSubscriptionNotificationConfigurationResponse x
-> CreateSubscriptionNotificationConfigurationResponse
$cfrom :: forall x.
CreateSubscriptionNotificationConfigurationResponse
-> Rep CreateSubscriptionNotificationConfigurationResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateSubscriptionNotificationConfigurationResponse' 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:
--
-- 'queueArn', 'createSubscriptionNotificationConfigurationResponse_queueArn' - Returns the Amazon Resource Name (ARN) of the queue.
--
-- 'httpStatus', 'createSubscriptionNotificationConfigurationResponse_httpStatus' - The response's http status code.
newCreateSubscriptionNotificationConfigurationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateSubscriptionNotificationConfigurationResponse
newCreateSubscriptionNotificationConfigurationResponse :: Int -> CreateSubscriptionNotificationConfigurationResponse
newCreateSubscriptionNotificationConfigurationResponse
  Int
pHttpStatus_ =
    CreateSubscriptionNotificationConfigurationResponse'
      { $sel:queueArn:CreateSubscriptionNotificationConfigurationResponse' :: Maybe Text
queueArn =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:CreateSubscriptionNotificationConfigurationResponse' :: Int
httpStatus =
          Int
pHttpStatus_
      }

-- | Returns the Amazon Resource Name (ARN) of the queue.
createSubscriptionNotificationConfigurationResponse_queueArn :: Lens.Lens' CreateSubscriptionNotificationConfigurationResponse (Prelude.Maybe Prelude.Text)
createSubscriptionNotificationConfigurationResponse_queueArn :: Lens'
  CreateSubscriptionNotificationConfigurationResponse (Maybe Text)
createSubscriptionNotificationConfigurationResponse_queueArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSubscriptionNotificationConfigurationResponse' {Maybe Text
queueArn :: Maybe Text
$sel:queueArn:CreateSubscriptionNotificationConfigurationResponse' :: CreateSubscriptionNotificationConfigurationResponse -> Maybe Text
queueArn} -> Maybe Text
queueArn) (\s :: CreateSubscriptionNotificationConfigurationResponse
s@CreateSubscriptionNotificationConfigurationResponse' {} Maybe Text
a -> CreateSubscriptionNotificationConfigurationResponse
s {$sel:queueArn:CreateSubscriptionNotificationConfigurationResponse' :: Maybe Text
queueArn = Maybe Text
a} :: CreateSubscriptionNotificationConfigurationResponse)

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

instance
  Prelude.NFData
    CreateSubscriptionNotificationConfigurationResponse
  where
  rnf :: CreateSubscriptionNotificationConfigurationResponse -> ()
rnf
    CreateSubscriptionNotificationConfigurationResponse' {Int
Maybe Text
httpStatus :: Int
queueArn :: Maybe Text
$sel:httpStatus:CreateSubscriptionNotificationConfigurationResponse' :: CreateSubscriptionNotificationConfigurationResponse -> Int
$sel:queueArn:CreateSubscriptionNotificationConfigurationResponse' :: CreateSubscriptionNotificationConfigurationResponse -> Maybe Text
..} =
      forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
queueArn
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus