{-# 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.IoT.DeleteProvisioningTemplate
-- 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 provisioning template.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions DeleteProvisioningTemplate>
-- action.
module Amazonka.IoT.DeleteProvisioningTemplate
  ( -- * Creating a Request
    DeleteProvisioningTemplate (..),
    newDeleteProvisioningTemplate,

    -- * Request Lenses
    deleteProvisioningTemplate_templateName,

    -- * Destructuring the Response
    DeleteProvisioningTemplateResponse (..),
    newDeleteProvisioningTemplateResponse,

    -- * Response Lenses
    deleteProvisioningTemplateResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'DeleteProvisioningTemplate' 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:
--
-- 'templateName', 'deleteProvisioningTemplate_templateName' - The name of the fleet provision template to delete.
newDeleteProvisioningTemplate ::
  -- | 'templateName'
  Prelude.Text ->
  DeleteProvisioningTemplate
newDeleteProvisioningTemplate :: Text -> DeleteProvisioningTemplate
newDeleteProvisioningTemplate Text
pTemplateName_ =
  DeleteProvisioningTemplate'
    { $sel:templateName:DeleteProvisioningTemplate' :: Text
templateName =
        Text
pTemplateName_
    }

-- | The name of the fleet provision template to delete.
deleteProvisioningTemplate_templateName :: Lens.Lens' DeleteProvisioningTemplate Prelude.Text
deleteProvisioningTemplate_templateName :: Lens' DeleteProvisioningTemplate Text
deleteProvisioningTemplate_templateName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteProvisioningTemplate' {Text
templateName :: Text
$sel:templateName:DeleteProvisioningTemplate' :: DeleteProvisioningTemplate -> Text
templateName} -> Text
templateName) (\s :: DeleteProvisioningTemplate
s@DeleteProvisioningTemplate' {} Text
a -> DeleteProvisioningTemplate
s {$sel:templateName:DeleteProvisioningTemplate' :: Text
templateName = Text
a} :: DeleteProvisioningTemplate)

instance Core.AWSRequest DeleteProvisioningTemplate where
  type
    AWSResponse DeleteProvisioningTemplate =
      DeleteProvisioningTemplateResponse
  request :: (Service -> Service)
-> DeleteProvisioningTemplate -> Request DeleteProvisioningTemplate
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteProvisioningTemplate
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteProvisioningTemplate)))
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 -> DeleteProvisioningTemplateResponse
DeleteProvisioningTemplateResponse'
            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 DeleteProvisioningTemplate where
  hashWithSalt :: Int -> DeleteProvisioningTemplate -> Int
hashWithSalt Int
_salt DeleteProvisioningTemplate' {Text
templateName :: Text
$sel:templateName:DeleteProvisioningTemplate' :: DeleteProvisioningTemplate -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
templateName

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

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

instance Data.ToPath DeleteProvisioningTemplate where
  toPath :: DeleteProvisioningTemplate -> ByteString
toPath DeleteProvisioningTemplate' {Text
templateName :: Text
$sel:templateName:DeleteProvisioningTemplate' :: DeleteProvisioningTemplate -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/provisioning-templates/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
templateName]

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

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

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

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

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