{-# 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.FraudDetector.DeleteEventType
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes an event type.
--
-- You cannot delete an event type that is used in a detector or a model.
--
-- When you delete an event type, Amazon Fraud Detector permanently deletes
-- that event type and the data is no longer stored in Amazon Fraud
-- Detector.
module Amazonka.FraudDetector.DeleteEventType
  ( -- * Creating a Request
    DeleteEventType (..),
    newDeleteEventType,

    -- * Request Lenses
    deleteEventType_name,

    -- * Destructuring the Response
    DeleteEventTypeResponse (..),
    newDeleteEventTypeResponse,

    -- * Response Lenses
    deleteEventTypeResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.FraudDetector.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDeleteEventType' smart constructor.
data DeleteEventType = DeleteEventType'
  { -- | The name of the event type to delete.
    DeleteEventType -> Text
name :: Prelude.Text
  }
  deriving (DeleteEventType -> DeleteEventType -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteEventType -> DeleteEventType -> Bool
$c/= :: DeleteEventType -> DeleteEventType -> Bool
== :: DeleteEventType -> DeleteEventType -> Bool
$c== :: DeleteEventType -> DeleteEventType -> Bool
Prelude.Eq, ReadPrec [DeleteEventType]
ReadPrec DeleteEventType
Int -> ReadS DeleteEventType
ReadS [DeleteEventType]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteEventType]
$creadListPrec :: ReadPrec [DeleteEventType]
readPrec :: ReadPrec DeleteEventType
$creadPrec :: ReadPrec DeleteEventType
readList :: ReadS [DeleteEventType]
$creadList :: ReadS [DeleteEventType]
readsPrec :: Int -> ReadS DeleteEventType
$creadsPrec :: Int -> ReadS DeleteEventType
Prelude.Read, Int -> DeleteEventType -> ShowS
[DeleteEventType] -> ShowS
DeleteEventType -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteEventType] -> ShowS
$cshowList :: [DeleteEventType] -> ShowS
show :: DeleteEventType -> String
$cshow :: DeleteEventType -> String
showsPrec :: Int -> DeleteEventType -> ShowS
$cshowsPrec :: Int -> DeleteEventType -> ShowS
Prelude.Show, forall x. Rep DeleteEventType x -> DeleteEventType
forall x. DeleteEventType -> Rep DeleteEventType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteEventType x -> DeleteEventType
$cfrom :: forall x. DeleteEventType -> Rep DeleteEventType x
Prelude.Generic)

-- |
-- Create a value of 'DeleteEventType' 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:
--
-- 'name', 'deleteEventType_name' - The name of the event type to delete.
newDeleteEventType ::
  -- | 'name'
  Prelude.Text ->
  DeleteEventType
newDeleteEventType :: Text -> DeleteEventType
newDeleteEventType Text
pName_ =
  DeleteEventType' {$sel:name:DeleteEventType' :: Text
name = Text
pName_}

-- | The name of the event type to delete.
deleteEventType_name :: Lens.Lens' DeleteEventType Prelude.Text
deleteEventType_name :: Lens' DeleteEventType Text
deleteEventType_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteEventType' {Text
name :: Text
$sel:name:DeleteEventType' :: DeleteEventType -> Text
name} -> Text
name) (\s :: DeleteEventType
s@DeleteEventType' {} Text
a -> DeleteEventType
s {$sel:name:DeleteEventType' :: Text
name = Text
a} :: DeleteEventType)

instance Core.AWSRequest DeleteEventType where
  type
    AWSResponse DeleteEventType =
      DeleteEventTypeResponse
  request :: (Service -> Service) -> DeleteEventType -> Request DeleteEventType
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 DeleteEventType
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteEventType)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> DeleteEventTypeResponse
DeleteEventTypeResponse'
            forall (f :: * -> *) a b. Functor 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 DeleteEventType where
  hashWithSalt :: Int -> DeleteEventType -> Int
hashWithSalt Int
_salt DeleteEventType' {Text
name :: Text
$sel:name:DeleteEventType' :: DeleteEventType -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance Prelude.NFData DeleteEventType where
  rnf :: DeleteEventType -> ()
rnf DeleteEventType' {Text
name :: Text
$sel:name:DeleteEventType' :: DeleteEventType -> Text
..} = forall a. NFData a => a -> ()
Prelude.rnf Text
name

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

instance Data.ToJSON DeleteEventType where
  toJSON :: DeleteEventType -> Value
toJSON DeleteEventType' {Text
name :: Text
$sel:name:DeleteEventType' :: DeleteEventType -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name)]
      )

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

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

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

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

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

instance Prelude.NFData DeleteEventTypeResponse where
  rnf :: DeleteEventTypeResponse -> ()
rnf DeleteEventTypeResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeleteEventTypeResponse' :: DeleteEventTypeResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus