packages feed

amazonka-securitylake-2.0: gen/Amazonka/SecurityLake/CreateSubscriptionNotificationConfiguration.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.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.
    createSqs :: Prelude.Maybe Prelude.Bool,
    -- | The key name for the notification subscription.
    httpsApiKeyName :: Prelude.Maybe Prelude.Text,
    -- | The key value for the notification subscription.
    httpsApiKeyValue :: Prelude.Maybe Prelude.Text,
    -- | The HTTPS method used for the notification subscription.
    httpsMethod :: Prelude.Maybe HttpsMethod,
    -- | The Amazon Resource Name (ARN) of the EventBridge API destinations IAM
    -- role that you created.
    roleArn :: Prelude.Maybe Prelude.Text,
    -- | The subscription endpoint in Security Lake. If you prefer notification
    -- with an HTTPs endpoint, populate this field.
    subscriptionEndpoint :: Prelude.Maybe Prelude.Text,
    -- | The subscription ID for the notification subscription\/
    subscriptionId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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
  pSubscriptionId_ =
    CreateSubscriptionNotificationConfiguration'
      { createSqs =
          Prelude.Nothing,
        httpsApiKeyName =
          Prelude.Nothing,
        httpsApiKeyValue =
          Prelude.Nothing,
        httpsMethod = Prelude.Nothing,
        roleArn = Prelude.Nothing,
        subscriptionEndpoint =
          Prelude.Nothing,
        subscriptionId =
          pSubscriptionId_
      }

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

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

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

-- | The HTTPS method used for the notification subscription.
createSubscriptionNotificationConfiguration_httpsMethod :: Lens.Lens' CreateSubscriptionNotificationConfiguration (Prelude.Maybe HttpsMethod)
createSubscriptionNotificationConfiguration_httpsMethod = Lens.lens (\CreateSubscriptionNotificationConfiguration' {httpsMethod} -> httpsMethod) (\s@CreateSubscriptionNotificationConfiguration' {} a -> s {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.lens (\CreateSubscriptionNotificationConfiguration' {roleArn} -> roleArn) (\s@CreateSubscriptionNotificationConfiguration' {} a -> s {roleArn = 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.lens (\CreateSubscriptionNotificationConfiguration' {subscriptionEndpoint} -> subscriptionEndpoint) (\s@CreateSubscriptionNotificationConfiguration' {} a -> s {subscriptionEndpoint = a} :: CreateSubscriptionNotificationConfiguration)

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

instance
  Core.AWSRequest
    CreateSubscriptionNotificationConfiguration
  where
  type
    AWSResponse
      CreateSubscriptionNotificationConfiguration =
      CreateSubscriptionNotificationConfigurationResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          CreateSubscriptionNotificationConfigurationResponse'
            Prelude.<$> (x Data..?> "queueArn")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance
  Prelude.Hashable
    CreateSubscriptionNotificationConfiguration
  where
  hashWithSalt
    _salt
    CreateSubscriptionNotificationConfiguration' {..} =
      _salt
        `Prelude.hashWithSalt` createSqs
        `Prelude.hashWithSalt` httpsApiKeyName
        `Prelude.hashWithSalt` httpsApiKeyValue
        `Prelude.hashWithSalt` httpsMethod
        `Prelude.hashWithSalt` roleArn
        `Prelude.hashWithSalt` subscriptionEndpoint
        `Prelude.hashWithSalt` subscriptionId

instance
  Prelude.NFData
    CreateSubscriptionNotificationConfiguration
  where
  rnf CreateSubscriptionNotificationConfiguration' {..} =
    Prelude.rnf createSqs
      `Prelude.seq` Prelude.rnf httpsApiKeyName
      `Prelude.seq` Prelude.rnf httpsApiKeyValue
      `Prelude.seq` Prelude.rnf httpsMethod
      `Prelude.seq` Prelude.rnf roleArn
      `Prelude.seq` Prelude.rnf subscriptionEndpoint
      `Prelude.seq` Prelude.rnf subscriptionId

instance
  Data.ToHeaders
    CreateSubscriptionNotificationConfiguration
  where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToJSON
    CreateSubscriptionNotificationConfiguration
  where
  toJSON
    CreateSubscriptionNotificationConfiguration' {..} =
      Data.object
        ( Prelude.catMaybes
            [ ("createSqs" Data..=) Prelude.<$> createSqs,
              ("httpsApiKeyName" Data..=)
                Prelude.<$> httpsApiKeyName,
              ("httpsApiKeyValue" Data..=)
                Prelude.<$> httpsApiKeyValue,
              ("httpsMethod" Data..=) Prelude.<$> httpsMethod,
              ("roleArn" Data..=) Prelude.<$> roleArn,
              ("subscriptionEndpoint" Data..=)
                Prelude.<$> subscriptionEndpoint
            ]
        )

instance
  Data.ToPath
    CreateSubscriptionNotificationConfiguration
  where
  toPath
    CreateSubscriptionNotificationConfiguration' {..} =
      Prelude.mconcat
        [ "/subscription-notifications/",
          Data.toBS subscriptionId
        ]

instance
  Data.ToQuery
    CreateSubscriptionNotificationConfiguration
  where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newCreateSubscriptionNotificationConfigurationResponse' smart constructor.
data CreateSubscriptionNotificationConfigurationResponse = CreateSubscriptionNotificationConfigurationResponse'
  { -- | Returns the Amazon Resource Name (ARN) of the queue.
    queueArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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
  pHttpStatus_ =
    CreateSubscriptionNotificationConfigurationResponse'
      { queueArn =
          Prelude.Nothing,
        httpStatus =
          pHttpStatus_
      }

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

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

instance
  Prelude.NFData
    CreateSubscriptionNotificationConfigurationResponse
  where
  rnf
    CreateSubscriptionNotificationConfigurationResponse' {..} =
      Prelude.rnf queueArn
        `Prelude.seq` Prelude.rnf httpStatus