{-# 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.LookoutEquipment.DeleteLabel
-- 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 a label.
module Amazonka.LookoutEquipment.DeleteLabel
  ( -- * Creating a Request
    DeleteLabel (..),
    newDeleteLabel,

    -- * Request Lenses
    deleteLabel_labelGroupName,
    deleteLabel_labelId,

    -- * Destructuring the Response
    DeleteLabelResponse (..),
    newDeleteLabelResponse,
  )
where

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

-- | /See:/ 'newDeleteLabel' smart constructor.
data DeleteLabel = DeleteLabel'
  { -- | The name of the label group that contains the label that you want to
    -- delete. Data in this field will be retained for service usage. Follow
    -- best practices for the security of your data.
    DeleteLabel -> Text
labelGroupName :: Prelude.Text,
    -- | The ID of the label that you want to delete.
    DeleteLabel -> Text
labelId :: Prelude.Text
  }
  deriving (DeleteLabel -> DeleteLabel -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteLabel -> DeleteLabel -> Bool
$c/= :: DeleteLabel -> DeleteLabel -> Bool
== :: DeleteLabel -> DeleteLabel -> Bool
$c== :: DeleteLabel -> DeleteLabel -> Bool
Prelude.Eq, ReadPrec [DeleteLabel]
ReadPrec DeleteLabel
Int -> ReadS DeleteLabel
ReadS [DeleteLabel]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteLabel]
$creadListPrec :: ReadPrec [DeleteLabel]
readPrec :: ReadPrec DeleteLabel
$creadPrec :: ReadPrec DeleteLabel
readList :: ReadS [DeleteLabel]
$creadList :: ReadS [DeleteLabel]
readsPrec :: Int -> ReadS DeleteLabel
$creadsPrec :: Int -> ReadS DeleteLabel
Prelude.Read, Int -> DeleteLabel -> ShowS
[DeleteLabel] -> ShowS
DeleteLabel -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteLabel] -> ShowS
$cshowList :: [DeleteLabel] -> ShowS
show :: DeleteLabel -> String
$cshow :: DeleteLabel -> String
showsPrec :: Int -> DeleteLabel -> ShowS
$cshowsPrec :: Int -> DeleteLabel -> ShowS
Prelude.Show, forall x. Rep DeleteLabel x -> DeleteLabel
forall x. DeleteLabel -> Rep DeleteLabel x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteLabel x -> DeleteLabel
$cfrom :: forall x. DeleteLabel -> Rep DeleteLabel x
Prelude.Generic)

-- |
-- Create a value of 'DeleteLabel' 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:
--
-- 'labelGroupName', 'deleteLabel_labelGroupName' - The name of the label group that contains the label that you want to
-- delete. Data in this field will be retained for service usage. Follow
-- best practices for the security of your data.
--
-- 'labelId', 'deleteLabel_labelId' - The ID of the label that you want to delete.
newDeleteLabel ::
  -- | 'labelGroupName'
  Prelude.Text ->
  -- | 'labelId'
  Prelude.Text ->
  DeleteLabel
newDeleteLabel :: Text -> Text -> DeleteLabel
newDeleteLabel Text
pLabelGroupName_ Text
pLabelId_ =
  DeleteLabel'
    { $sel:labelGroupName:DeleteLabel' :: Text
labelGroupName = Text
pLabelGroupName_,
      $sel:labelId:DeleteLabel' :: Text
labelId = Text
pLabelId_
    }

-- | The name of the label group that contains the label that you want to
-- delete. Data in this field will be retained for service usage. Follow
-- best practices for the security of your data.
deleteLabel_labelGroupName :: Lens.Lens' DeleteLabel Prelude.Text
deleteLabel_labelGroupName :: Lens' DeleteLabel Text
deleteLabel_labelGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteLabel' {Text
labelGroupName :: Text
$sel:labelGroupName:DeleteLabel' :: DeleteLabel -> Text
labelGroupName} -> Text
labelGroupName) (\s :: DeleteLabel
s@DeleteLabel' {} Text
a -> DeleteLabel
s {$sel:labelGroupName:DeleteLabel' :: Text
labelGroupName = Text
a} :: DeleteLabel)

-- | The ID of the label that you want to delete.
deleteLabel_labelId :: Lens.Lens' DeleteLabel Prelude.Text
deleteLabel_labelId :: Lens' DeleteLabel Text
deleteLabel_labelId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteLabel' {Text
labelId :: Text
$sel:labelId:DeleteLabel' :: DeleteLabel -> Text
labelId} -> Text
labelId) (\s :: DeleteLabel
s@DeleteLabel' {} Text
a -> DeleteLabel
s {$sel:labelId:DeleteLabel' :: Text
labelId = Text
a} :: DeleteLabel)

instance Core.AWSRequest DeleteLabel where
  type AWSResponse DeleteLabel = DeleteLabelResponse
  request :: (Service -> Service) -> DeleteLabel -> Request DeleteLabel
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 DeleteLabel
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteLabel)))
response = forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull DeleteLabelResponse
DeleteLabelResponse'

instance Prelude.Hashable DeleteLabel where
  hashWithSalt :: Int -> DeleteLabel -> Int
hashWithSalt Int
_salt DeleteLabel' {Text
labelId :: Text
labelGroupName :: Text
$sel:labelId:DeleteLabel' :: DeleteLabel -> Text
$sel:labelGroupName:DeleteLabel' :: DeleteLabel -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
labelGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
labelId

instance Prelude.NFData DeleteLabel where
  rnf :: DeleteLabel -> ()
rnf DeleteLabel' {Text
labelId :: Text
labelGroupName :: Text
$sel:labelId:DeleteLabel' :: DeleteLabel -> Text
$sel:labelGroupName:DeleteLabel' :: DeleteLabel -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
labelGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
labelId

instance Data.ToHeaders DeleteLabel where
  toHeaders :: DeleteLabel -> [Header]
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 -> [Header]
Data.=# ( ByteString
"AWSLookoutEquipmentFrontendService.DeleteLabel" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

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

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

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

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

-- |
-- Create a value of 'DeleteLabelResponse' 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.
newDeleteLabelResponse ::
  DeleteLabelResponse
newDeleteLabelResponse :: DeleteLabelResponse
newDeleteLabelResponse = DeleteLabelResponse
DeleteLabelResponse'

instance Prelude.NFData DeleteLabelResponse where
  rnf :: DeleteLabelResponse -> ()
rnf DeleteLabelResponse
_ = ()