{-# 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.QuickSight.DeleteTemplate
-- 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 template.
module Amazonka.QuickSight.DeleteTemplate
  ( -- * Creating a Request
    DeleteTemplate (..),
    newDeleteTemplate,

    -- * Request Lenses
    deleteTemplate_versionNumber,
    deleteTemplate_awsAccountId,
    deleteTemplate_templateId,

    -- * Destructuring the Response
    DeleteTemplateResponse (..),
    newDeleteTemplateResponse,

    -- * Response Lenses
    deleteTemplateResponse_arn,
    deleteTemplateResponse_requestId,
    deleteTemplateResponse_templateId,
    deleteTemplateResponse_status,
  )
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 Amazonka.QuickSight.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDeleteTemplate' smart constructor.
data DeleteTemplate = DeleteTemplate'
  { -- | Specifies the version of the template that you want to delete. If you
    -- don\'t provide a version number, @DeleteTemplate@ deletes all versions
    -- of the template.
    DeleteTemplate -> Maybe Natural
versionNumber :: Prelude.Maybe Prelude.Natural,
    -- | The ID of the Amazon Web Services account that contains the template
    -- that you\'re deleting.
    DeleteTemplate -> Text
awsAccountId :: Prelude.Text,
    -- | An ID for the template you want to delete.
    DeleteTemplate -> Text
templateId :: Prelude.Text
  }
  deriving (DeleteTemplate -> DeleteTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteTemplate -> DeleteTemplate -> Bool
$c/= :: DeleteTemplate -> DeleteTemplate -> Bool
== :: DeleteTemplate -> DeleteTemplate -> Bool
$c== :: DeleteTemplate -> DeleteTemplate -> Bool
Prelude.Eq, ReadPrec [DeleteTemplate]
ReadPrec DeleteTemplate
Int -> ReadS DeleteTemplate
ReadS [DeleteTemplate]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteTemplate]
$creadListPrec :: ReadPrec [DeleteTemplate]
readPrec :: ReadPrec DeleteTemplate
$creadPrec :: ReadPrec DeleteTemplate
readList :: ReadS [DeleteTemplate]
$creadList :: ReadS [DeleteTemplate]
readsPrec :: Int -> ReadS DeleteTemplate
$creadsPrec :: Int -> ReadS DeleteTemplate
Prelude.Read, Int -> DeleteTemplate -> ShowS
[DeleteTemplate] -> ShowS
DeleteTemplate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteTemplate] -> ShowS
$cshowList :: [DeleteTemplate] -> ShowS
show :: DeleteTemplate -> String
$cshow :: DeleteTemplate -> String
showsPrec :: Int -> DeleteTemplate -> ShowS
$cshowsPrec :: Int -> DeleteTemplate -> ShowS
Prelude.Show, forall x. Rep DeleteTemplate x -> DeleteTemplate
forall x. DeleteTemplate -> Rep DeleteTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteTemplate x -> DeleteTemplate
$cfrom :: forall x. DeleteTemplate -> Rep DeleteTemplate x
Prelude.Generic)

-- |
-- Create a value of 'DeleteTemplate' 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:
--
-- 'versionNumber', 'deleteTemplate_versionNumber' - Specifies the version of the template that you want to delete. If you
-- don\'t provide a version number, @DeleteTemplate@ deletes all versions
-- of the template.
--
-- 'awsAccountId', 'deleteTemplate_awsAccountId' - The ID of the Amazon Web Services account that contains the template
-- that you\'re deleting.
--
-- 'templateId', 'deleteTemplate_templateId' - An ID for the template you want to delete.
newDeleteTemplate ::
  -- | 'awsAccountId'
  Prelude.Text ->
  -- | 'templateId'
  Prelude.Text ->
  DeleteTemplate
newDeleteTemplate :: Text -> Text -> DeleteTemplate
newDeleteTemplate Text
pAwsAccountId_ Text
pTemplateId_ =
  DeleteTemplate'
    { $sel:versionNumber:DeleteTemplate' :: Maybe Natural
versionNumber = forall a. Maybe a
Prelude.Nothing,
      $sel:awsAccountId:DeleteTemplate' :: Text
awsAccountId = Text
pAwsAccountId_,
      $sel:templateId:DeleteTemplate' :: Text
templateId = Text
pTemplateId_
    }

-- | Specifies the version of the template that you want to delete. If you
-- don\'t provide a version number, @DeleteTemplate@ deletes all versions
-- of the template.
deleteTemplate_versionNumber :: Lens.Lens' DeleteTemplate (Prelude.Maybe Prelude.Natural)
deleteTemplate_versionNumber :: Lens' DeleteTemplate (Maybe Natural)
deleteTemplate_versionNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTemplate' {Maybe Natural
versionNumber :: Maybe Natural
$sel:versionNumber:DeleteTemplate' :: DeleteTemplate -> Maybe Natural
versionNumber} -> Maybe Natural
versionNumber) (\s :: DeleteTemplate
s@DeleteTemplate' {} Maybe Natural
a -> DeleteTemplate
s {$sel:versionNumber:DeleteTemplate' :: Maybe Natural
versionNumber = Maybe Natural
a} :: DeleteTemplate)

-- | The ID of the Amazon Web Services account that contains the template
-- that you\'re deleting.
deleteTemplate_awsAccountId :: Lens.Lens' DeleteTemplate Prelude.Text
deleteTemplate_awsAccountId :: Lens' DeleteTemplate Text
deleteTemplate_awsAccountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTemplate' {Text
awsAccountId :: Text
$sel:awsAccountId:DeleteTemplate' :: DeleteTemplate -> Text
awsAccountId} -> Text
awsAccountId) (\s :: DeleteTemplate
s@DeleteTemplate' {} Text
a -> DeleteTemplate
s {$sel:awsAccountId:DeleteTemplate' :: Text
awsAccountId = Text
a} :: DeleteTemplate)

-- | An ID for the template you want to delete.
deleteTemplate_templateId :: Lens.Lens' DeleteTemplate Prelude.Text
deleteTemplate_templateId :: Lens' DeleteTemplate Text
deleteTemplate_templateId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTemplate' {Text
templateId :: Text
$sel:templateId:DeleteTemplate' :: DeleteTemplate -> Text
templateId} -> Text
templateId) (\s :: DeleteTemplate
s@DeleteTemplate' {} Text
a -> DeleteTemplate
s {$sel:templateId:DeleteTemplate' :: Text
templateId = Text
a} :: DeleteTemplate)

instance Core.AWSRequest DeleteTemplate where
  type
    AWSResponse DeleteTemplate =
      DeleteTemplateResponse
  request :: (Service -> Service) -> DeleteTemplate -> Request DeleteTemplate
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 DeleteTemplate
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteTemplate)))
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
-> Maybe Text -> Maybe Text -> Int -> DeleteTemplateResponse
DeleteTemplateResponse'
            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
"Arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"RequestId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"TemplateId")
            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 DeleteTemplate where
  hashWithSalt :: Int -> DeleteTemplate -> Int
hashWithSalt Int
_salt DeleteTemplate' {Maybe Natural
Text
templateId :: Text
awsAccountId :: Text
versionNumber :: Maybe Natural
$sel:templateId:DeleteTemplate' :: DeleteTemplate -> Text
$sel:awsAccountId:DeleteTemplate' :: DeleteTemplate -> Text
$sel:versionNumber:DeleteTemplate' :: DeleteTemplate -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
versionNumber
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
awsAccountId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
templateId

instance Prelude.NFData DeleteTemplate where
  rnf :: DeleteTemplate -> ()
rnf DeleteTemplate' {Maybe Natural
Text
templateId :: Text
awsAccountId :: Text
versionNumber :: Maybe Natural
$sel:templateId:DeleteTemplate' :: DeleteTemplate -> Text
$sel:awsAccountId:DeleteTemplate' :: DeleteTemplate -> Text
$sel:versionNumber:DeleteTemplate' :: DeleteTemplate -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
versionNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
awsAccountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
templateId

instance Data.ToHeaders DeleteTemplate where
  toHeaders :: DeleteTemplate -> 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.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DeleteTemplate where
  toPath :: DeleteTemplate -> ByteString
toPath DeleteTemplate' {Maybe Natural
Text
templateId :: Text
awsAccountId :: Text
versionNumber :: Maybe Natural
$sel:templateId:DeleteTemplate' :: DeleteTemplate -> Text
$sel:awsAccountId:DeleteTemplate' :: DeleteTemplate -> Text
$sel:versionNumber:DeleteTemplate' :: DeleteTemplate -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/accounts/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
awsAccountId,
        ByteString
"/templates/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
templateId
      ]

instance Data.ToQuery DeleteTemplate where
  toQuery :: DeleteTemplate -> QueryString
toQuery DeleteTemplate' {Maybe Natural
Text
templateId :: Text
awsAccountId :: Text
versionNumber :: Maybe Natural
$sel:templateId:DeleteTemplate' :: DeleteTemplate -> Text
$sel:awsAccountId:DeleteTemplate' :: DeleteTemplate -> Text
$sel:versionNumber:DeleteTemplate' :: DeleteTemplate -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"version-number" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
versionNumber]

-- | /See:/ 'newDeleteTemplateResponse' smart constructor.
data DeleteTemplateResponse = DeleteTemplateResponse'
  { -- | The Amazon Resource Name (ARN) of the resource.
    DeleteTemplateResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services request ID for this operation.
    DeleteTemplateResponse -> Maybe Text
requestId :: Prelude.Maybe Prelude.Text,
    -- | An ID for the template.
    DeleteTemplateResponse -> Maybe Text
templateId :: Prelude.Maybe Prelude.Text,
    -- | The HTTP status of the request.
    DeleteTemplateResponse -> Int
status :: Prelude.Int
  }
  deriving (DeleteTemplateResponse -> DeleteTemplateResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteTemplateResponse -> DeleteTemplateResponse -> Bool
$c/= :: DeleteTemplateResponse -> DeleteTemplateResponse -> Bool
== :: DeleteTemplateResponse -> DeleteTemplateResponse -> Bool
$c== :: DeleteTemplateResponse -> DeleteTemplateResponse -> Bool
Prelude.Eq, ReadPrec [DeleteTemplateResponse]
ReadPrec DeleteTemplateResponse
Int -> ReadS DeleteTemplateResponse
ReadS [DeleteTemplateResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteTemplateResponse]
$creadListPrec :: ReadPrec [DeleteTemplateResponse]
readPrec :: ReadPrec DeleteTemplateResponse
$creadPrec :: ReadPrec DeleteTemplateResponse
readList :: ReadS [DeleteTemplateResponse]
$creadList :: ReadS [DeleteTemplateResponse]
readsPrec :: Int -> ReadS DeleteTemplateResponse
$creadsPrec :: Int -> ReadS DeleteTemplateResponse
Prelude.Read, Int -> DeleteTemplateResponse -> ShowS
[DeleteTemplateResponse] -> ShowS
DeleteTemplateResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteTemplateResponse] -> ShowS
$cshowList :: [DeleteTemplateResponse] -> ShowS
show :: DeleteTemplateResponse -> String
$cshow :: DeleteTemplateResponse -> String
showsPrec :: Int -> DeleteTemplateResponse -> ShowS
$cshowsPrec :: Int -> DeleteTemplateResponse -> ShowS
Prelude.Show, forall x. Rep DeleteTemplateResponse x -> DeleteTemplateResponse
forall x. DeleteTemplateResponse -> Rep DeleteTemplateResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteTemplateResponse x -> DeleteTemplateResponse
$cfrom :: forall x. DeleteTemplateResponse -> Rep DeleteTemplateResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteTemplateResponse' 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:
--
-- 'arn', 'deleteTemplateResponse_arn' - The Amazon Resource Name (ARN) of the resource.
--
-- 'requestId', 'deleteTemplateResponse_requestId' - The Amazon Web Services request ID for this operation.
--
-- 'templateId', 'deleteTemplateResponse_templateId' - An ID for the template.
--
-- 'status', 'deleteTemplateResponse_status' - The HTTP status of the request.
newDeleteTemplateResponse ::
  -- | 'status'
  Prelude.Int ->
  DeleteTemplateResponse
newDeleteTemplateResponse :: Int -> DeleteTemplateResponse
newDeleteTemplateResponse Int
pStatus_ =
  DeleteTemplateResponse'
    { $sel:arn:DeleteTemplateResponse' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:requestId:DeleteTemplateResponse' :: Maybe Text
requestId = forall a. Maybe a
Prelude.Nothing,
      $sel:templateId:DeleteTemplateResponse' :: Maybe Text
templateId = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DeleteTemplateResponse' :: Int
status = Int
pStatus_
    }

-- | The Amazon Resource Name (ARN) of the resource.
deleteTemplateResponse_arn :: Lens.Lens' DeleteTemplateResponse (Prelude.Maybe Prelude.Text)
deleteTemplateResponse_arn :: Lens' DeleteTemplateResponse (Maybe Text)
deleteTemplateResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTemplateResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:DeleteTemplateResponse' :: DeleteTemplateResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: DeleteTemplateResponse
s@DeleteTemplateResponse' {} Maybe Text
a -> DeleteTemplateResponse
s {$sel:arn:DeleteTemplateResponse' :: Maybe Text
arn = Maybe Text
a} :: DeleteTemplateResponse)

-- | The Amazon Web Services request ID for this operation.
deleteTemplateResponse_requestId :: Lens.Lens' DeleteTemplateResponse (Prelude.Maybe Prelude.Text)
deleteTemplateResponse_requestId :: Lens' DeleteTemplateResponse (Maybe Text)
deleteTemplateResponse_requestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTemplateResponse' {Maybe Text
requestId :: Maybe Text
$sel:requestId:DeleteTemplateResponse' :: DeleteTemplateResponse -> Maybe Text
requestId} -> Maybe Text
requestId) (\s :: DeleteTemplateResponse
s@DeleteTemplateResponse' {} Maybe Text
a -> DeleteTemplateResponse
s {$sel:requestId:DeleteTemplateResponse' :: Maybe Text
requestId = Maybe Text
a} :: DeleteTemplateResponse)

-- | An ID for the template.
deleteTemplateResponse_templateId :: Lens.Lens' DeleteTemplateResponse (Prelude.Maybe Prelude.Text)
deleteTemplateResponse_templateId :: Lens' DeleteTemplateResponse (Maybe Text)
deleteTemplateResponse_templateId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTemplateResponse' {Maybe Text
templateId :: Maybe Text
$sel:templateId:DeleteTemplateResponse' :: DeleteTemplateResponse -> Maybe Text
templateId} -> Maybe Text
templateId) (\s :: DeleteTemplateResponse
s@DeleteTemplateResponse' {} Maybe Text
a -> DeleteTemplateResponse
s {$sel:templateId:DeleteTemplateResponse' :: Maybe Text
templateId = Maybe Text
a} :: DeleteTemplateResponse)

-- | The HTTP status of the request.
deleteTemplateResponse_status :: Lens.Lens' DeleteTemplateResponse Prelude.Int
deleteTemplateResponse_status :: Lens' DeleteTemplateResponse Int
deleteTemplateResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTemplateResponse' {Int
status :: Int
$sel:status:DeleteTemplateResponse' :: DeleteTemplateResponse -> Int
status} -> Int
status) (\s :: DeleteTemplateResponse
s@DeleteTemplateResponse' {} Int
a -> DeleteTemplateResponse
s {$sel:status:DeleteTemplateResponse' :: Int
status = Int
a} :: DeleteTemplateResponse)

instance Prelude.NFData DeleteTemplateResponse where
  rnf :: DeleteTemplateResponse -> ()
rnf DeleteTemplateResponse' {Int
Maybe Text
status :: Int
templateId :: Maybe Text
requestId :: Maybe Text
arn :: Maybe Text
$sel:status:DeleteTemplateResponse' :: DeleteTemplateResponse -> Int
$sel:templateId:DeleteTemplateResponse' :: DeleteTemplateResponse -> Maybe Text
$sel:requestId:DeleteTemplateResponse' :: DeleteTemplateResponse -> Maybe Text
$sel:arn:DeleteTemplateResponse' :: DeleteTemplateResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
requestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
templateId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
status