{-# 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.UpdateProvisioningTemplate
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a provisioning template.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions UpdateProvisioningTemplate>
-- action.
module Amazonka.IoT.UpdateProvisioningTemplate
  ( -- * Creating a Request
    UpdateProvisioningTemplate (..),
    newUpdateProvisioningTemplate,

    -- * Request Lenses
    updateProvisioningTemplate_defaultVersionId,
    updateProvisioningTemplate_description,
    updateProvisioningTemplate_enabled,
    updateProvisioningTemplate_preProvisioningHook,
    updateProvisioningTemplate_provisioningRoleArn,
    updateProvisioningTemplate_removePreProvisioningHook,
    updateProvisioningTemplate_templateName,

    -- * Destructuring the Response
    UpdateProvisioningTemplateResponse (..),
    newUpdateProvisioningTemplateResponse,

    -- * Response Lenses
    updateProvisioningTemplateResponse_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:/ 'newUpdateProvisioningTemplate' smart constructor.
data UpdateProvisioningTemplate = UpdateProvisioningTemplate'
  { -- | The ID of the default provisioning template version.
    UpdateProvisioningTemplate -> Maybe Int
defaultVersionId :: Prelude.Maybe Prelude.Int,
    -- | The description of the provisioning template.
    UpdateProvisioningTemplate -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | True to enable the provisioning template, otherwise false.
    UpdateProvisioningTemplate -> Maybe Bool
enabled :: Prelude.Maybe Prelude.Bool,
    -- | Updates the pre-provisioning hook template. Only supports template of
    -- type @FLEET_PROVISIONING@. For more information about provisioning
    -- template types, see
    -- <https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html#iot-CreateProvisioningTemplate-request-type type>.
    UpdateProvisioningTemplate -> Maybe ProvisioningHook
preProvisioningHook :: Prelude.Maybe ProvisioningHook,
    -- | The ARN of the role associated with the provisioning template. This IoT
    -- role grants permission to provision a device.
    UpdateProvisioningTemplate -> Maybe Text
provisioningRoleArn :: Prelude.Maybe Prelude.Text,
    -- | Removes pre-provisioning hook template.
    UpdateProvisioningTemplate -> Maybe Bool
removePreProvisioningHook :: Prelude.Maybe Prelude.Bool,
    -- | The name of the provisioning template.
    UpdateProvisioningTemplate -> Text
templateName :: Prelude.Text
  }
  deriving (UpdateProvisioningTemplate -> UpdateProvisioningTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateProvisioningTemplate -> UpdateProvisioningTemplate -> Bool
$c/= :: UpdateProvisioningTemplate -> UpdateProvisioningTemplate -> Bool
== :: UpdateProvisioningTemplate -> UpdateProvisioningTemplate -> Bool
$c== :: UpdateProvisioningTemplate -> UpdateProvisioningTemplate -> Bool
Prelude.Eq, ReadPrec [UpdateProvisioningTemplate]
ReadPrec UpdateProvisioningTemplate
Int -> ReadS UpdateProvisioningTemplate
ReadS [UpdateProvisioningTemplate]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateProvisioningTemplate]
$creadListPrec :: ReadPrec [UpdateProvisioningTemplate]
readPrec :: ReadPrec UpdateProvisioningTemplate
$creadPrec :: ReadPrec UpdateProvisioningTemplate
readList :: ReadS [UpdateProvisioningTemplate]
$creadList :: ReadS [UpdateProvisioningTemplate]
readsPrec :: Int -> ReadS UpdateProvisioningTemplate
$creadsPrec :: Int -> ReadS UpdateProvisioningTemplate
Prelude.Read, Int -> UpdateProvisioningTemplate -> ShowS
[UpdateProvisioningTemplate] -> ShowS
UpdateProvisioningTemplate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateProvisioningTemplate] -> ShowS
$cshowList :: [UpdateProvisioningTemplate] -> ShowS
show :: UpdateProvisioningTemplate -> String
$cshow :: UpdateProvisioningTemplate -> String
showsPrec :: Int -> UpdateProvisioningTemplate -> ShowS
$cshowsPrec :: Int -> UpdateProvisioningTemplate -> ShowS
Prelude.Show, forall x.
Rep UpdateProvisioningTemplate x -> UpdateProvisioningTemplate
forall x.
UpdateProvisioningTemplate -> Rep UpdateProvisioningTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateProvisioningTemplate x -> UpdateProvisioningTemplate
$cfrom :: forall x.
UpdateProvisioningTemplate -> Rep UpdateProvisioningTemplate x
Prelude.Generic)

-- |
-- Create a value of 'UpdateProvisioningTemplate' 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:
--
-- 'defaultVersionId', 'updateProvisioningTemplate_defaultVersionId' - The ID of the default provisioning template version.
--
-- 'description', 'updateProvisioningTemplate_description' - The description of the provisioning template.
--
-- 'enabled', 'updateProvisioningTemplate_enabled' - True to enable the provisioning template, otherwise false.
--
-- 'preProvisioningHook', 'updateProvisioningTemplate_preProvisioningHook' - Updates the pre-provisioning hook template. Only supports template of
-- type @FLEET_PROVISIONING@. For more information about provisioning
-- template types, see
-- <https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html#iot-CreateProvisioningTemplate-request-type type>.
--
-- 'provisioningRoleArn', 'updateProvisioningTemplate_provisioningRoleArn' - The ARN of the role associated with the provisioning template. This IoT
-- role grants permission to provision a device.
--
-- 'removePreProvisioningHook', 'updateProvisioningTemplate_removePreProvisioningHook' - Removes pre-provisioning hook template.
--
-- 'templateName', 'updateProvisioningTemplate_templateName' - The name of the provisioning template.
newUpdateProvisioningTemplate ::
  -- | 'templateName'
  Prelude.Text ->
  UpdateProvisioningTemplate
newUpdateProvisioningTemplate :: Text -> UpdateProvisioningTemplate
newUpdateProvisioningTemplate Text
pTemplateName_ =
  UpdateProvisioningTemplate'
    { $sel:defaultVersionId:UpdateProvisioningTemplate' :: Maybe Int
defaultVersionId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:description:UpdateProvisioningTemplate' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:enabled:UpdateProvisioningTemplate' :: Maybe Bool
enabled = forall a. Maybe a
Prelude.Nothing,
      $sel:preProvisioningHook:UpdateProvisioningTemplate' :: Maybe ProvisioningHook
preProvisioningHook = forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningRoleArn:UpdateProvisioningTemplate' :: Maybe Text
provisioningRoleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:removePreProvisioningHook:UpdateProvisioningTemplate' :: Maybe Bool
removePreProvisioningHook = forall a. Maybe a
Prelude.Nothing,
      $sel:templateName:UpdateProvisioningTemplate' :: Text
templateName = Text
pTemplateName_
    }

-- | The ID of the default provisioning template version.
updateProvisioningTemplate_defaultVersionId :: Lens.Lens' UpdateProvisioningTemplate (Prelude.Maybe Prelude.Int)
updateProvisioningTemplate_defaultVersionId :: Lens' UpdateProvisioningTemplate (Maybe Int)
updateProvisioningTemplate_defaultVersionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningTemplate' {Maybe Int
defaultVersionId :: Maybe Int
$sel:defaultVersionId:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Int
defaultVersionId} -> Maybe Int
defaultVersionId) (\s :: UpdateProvisioningTemplate
s@UpdateProvisioningTemplate' {} Maybe Int
a -> UpdateProvisioningTemplate
s {$sel:defaultVersionId:UpdateProvisioningTemplate' :: Maybe Int
defaultVersionId = Maybe Int
a} :: UpdateProvisioningTemplate)

-- | The description of the provisioning template.
updateProvisioningTemplate_description :: Lens.Lens' UpdateProvisioningTemplate (Prelude.Maybe Prelude.Text)
updateProvisioningTemplate_description :: Lens' UpdateProvisioningTemplate (Maybe Text)
updateProvisioningTemplate_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningTemplate' {Maybe Text
description :: Maybe Text
$sel:description:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateProvisioningTemplate
s@UpdateProvisioningTemplate' {} Maybe Text
a -> UpdateProvisioningTemplate
s {$sel:description:UpdateProvisioningTemplate' :: Maybe Text
description = Maybe Text
a} :: UpdateProvisioningTemplate)

-- | True to enable the provisioning template, otherwise false.
updateProvisioningTemplate_enabled :: Lens.Lens' UpdateProvisioningTemplate (Prelude.Maybe Prelude.Bool)
updateProvisioningTemplate_enabled :: Lens' UpdateProvisioningTemplate (Maybe Bool)
updateProvisioningTemplate_enabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningTemplate' {Maybe Bool
enabled :: Maybe Bool
$sel:enabled:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
enabled} -> Maybe Bool
enabled) (\s :: UpdateProvisioningTemplate
s@UpdateProvisioningTemplate' {} Maybe Bool
a -> UpdateProvisioningTemplate
s {$sel:enabled:UpdateProvisioningTemplate' :: Maybe Bool
enabled = Maybe Bool
a} :: UpdateProvisioningTemplate)

-- | Updates the pre-provisioning hook template. Only supports template of
-- type @FLEET_PROVISIONING@. For more information about provisioning
-- template types, see
-- <https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningTemplate.html#iot-CreateProvisioningTemplate-request-type type>.
updateProvisioningTemplate_preProvisioningHook :: Lens.Lens' UpdateProvisioningTemplate (Prelude.Maybe ProvisioningHook)
updateProvisioningTemplate_preProvisioningHook :: Lens' UpdateProvisioningTemplate (Maybe ProvisioningHook)
updateProvisioningTemplate_preProvisioningHook = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningTemplate' {Maybe ProvisioningHook
preProvisioningHook :: Maybe ProvisioningHook
$sel:preProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe ProvisioningHook
preProvisioningHook} -> Maybe ProvisioningHook
preProvisioningHook) (\s :: UpdateProvisioningTemplate
s@UpdateProvisioningTemplate' {} Maybe ProvisioningHook
a -> UpdateProvisioningTemplate
s {$sel:preProvisioningHook:UpdateProvisioningTemplate' :: Maybe ProvisioningHook
preProvisioningHook = Maybe ProvisioningHook
a} :: UpdateProvisioningTemplate)

-- | The ARN of the role associated with the provisioning template. This IoT
-- role grants permission to provision a device.
updateProvisioningTemplate_provisioningRoleArn :: Lens.Lens' UpdateProvisioningTemplate (Prelude.Maybe Prelude.Text)
updateProvisioningTemplate_provisioningRoleArn :: Lens' UpdateProvisioningTemplate (Maybe Text)
updateProvisioningTemplate_provisioningRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningTemplate' {Maybe Text
provisioningRoleArn :: Maybe Text
$sel:provisioningRoleArn:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
provisioningRoleArn} -> Maybe Text
provisioningRoleArn) (\s :: UpdateProvisioningTemplate
s@UpdateProvisioningTemplate' {} Maybe Text
a -> UpdateProvisioningTemplate
s {$sel:provisioningRoleArn:UpdateProvisioningTemplate' :: Maybe Text
provisioningRoleArn = Maybe Text
a} :: UpdateProvisioningTemplate)

-- | Removes pre-provisioning hook template.
updateProvisioningTemplate_removePreProvisioningHook :: Lens.Lens' UpdateProvisioningTemplate (Prelude.Maybe Prelude.Bool)
updateProvisioningTemplate_removePreProvisioningHook :: Lens' UpdateProvisioningTemplate (Maybe Bool)
updateProvisioningTemplate_removePreProvisioningHook = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningTemplate' {Maybe Bool
removePreProvisioningHook :: Maybe Bool
$sel:removePreProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
removePreProvisioningHook} -> Maybe Bool
removePreProvisioningHook) (\s :: UpdateProvisioningTemplate
s@UpdateProvisioningTemplate' {} Maybe Bool
a -> UpdateProvisioningTemplate
s {$sel:removePreProvisioningHook:UpdateProvisioningTemplate' :: Maybe Bool
removePreProvisioningHook = Maybe Bool
a} :: UpdateProvisioningTemplate)

-- | The name of the provisioning template.
updateProvisioningTemplate_templateName :: Lens.Lens' UpdateProvisioningTemplate Prelude.Text
updateProvisioningTemplate_templateName :: Lens' UpdateProvisioningTemplate Text
updateProvisioningTemplate_templateName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningTemplate' {Text
templateName :: Text
$sel:templateName:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Text
templateName} -> Text
templateName) (\s :: UpdateProvisioningTemplate
s@UpdateProvisioningTemplate' {} Text
a -> UpdateProvisioningTemplate
s {$sel:templateName:UpdateProvisioningTemplate' :: Text
templateName = Text
a} :: UpdateProvisioningTemplate)

instance Core.AWSRequest UpdateProvisioningTemplate where
  type
    AWSResponse UpdateProvisioningTemplate =
      UpdateProvisioningTemplateResponse
  request :: (Service -> Service)
-> UpdateProvisioningTemplate -> Request UpdateProvisioningTemplate
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.patchJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateProvisioningTemplate
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateProvisioningTemplate)))
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 -> UpdateProvisioningTemplateResponse
UpdateProvisioningTemplateResponse'
            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 UpdateProvisioningTemplate where
  hashWithSalt :: Int -> UpdateProvisioningTemplate -> Int
hashWithSalt Int
_salt UpdateProvisioningTemplate' {Maybe Bool
Maybe Int
Maybe Text
Maybe ProvisioningHook
Text
templateName :: Text
removePreProvisioningHook :: Maybe Bool
provisioningRoleArn :: Maybe Text
preProvisioningHook :: Maybe ProvisioningHook
enabled :: Maybe Bool
description :: Maybe Text
defaultVersionId :: Maybe Int
$sel:templateName:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Text
$sel:removePreProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
$sel:provisioningRoleArn:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
$sel:preProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe ProvisioningHook
$sel:enabled:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
$sel:description:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
$sel:defaultVersionId:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
defaultVersionId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProvisioningHook
preProvisioningHook
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
provisioningRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
removePreProvisioningHook
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
templateName

instance Prelude.NFData UpdateProvisioningTemplate where
  rnf :: UpdateProvisioningTemplate -> ()
rnf UpdateProvisioningTemplate' {Maybe Bool
Maybe Int
Maybe Text
Maybe ProvisioningHook
Text
templateName :: Text
removePreProvisioningHook :: Maybe Bool
provisioningRoleArn :: Maybe Text
preProvisioningHook :: Maybe ProvisioningHook
enabled :: Maybe Bool
description :: Maybe Text
defaultVersionId :: Maybe Int
$sel:templateName:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Text
$sel:removePreProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
$sel:provisioningRoleArn:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
$sel:preProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe ProvisioningHook
$sel:enabled:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
$sel:description:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
$sel:defaultVersionId:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
defaultVersionId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProvisioningHook
preProvisioningHook
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
provisioningRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
removePreProvisioningHook
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
templateName

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

instance Data.ToJSON UpdateProvisioningTemplate where
  toJSON :: UpdateProvisioningTemplate -> Value
toJSON UpdateProvisioningTemplate' {Maybe Bool
Maybe Int
Maybe Text
Maybe ProvisioningHook
Text
templateName :: Text
removePreProvisioningHook :: Maybe Bool
provisioningRoleArn :: Maybe Text
preProvisioningHook :: Maybe ProvisioningHook
enabled :: Maybe Bool
description :: Maybe Text
defaultVersionId :: Maybe Int
$sel:templateName:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Text
$sel:removePreProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
$sel:provisioningRoleArn:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
$sel:preProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe ProvisioningHook
$sel:enabled:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
$sel:description:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
$sel:defaultVersionId:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Int
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"defaultVersionId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
defaultVersionId,
            (Key
"description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"enabled" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
enabled,
            (Key
"preProvisioningHook" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ProvisioningHook
preProvisioningHook,
            (Key
"provisioningRoleArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
provisioningRoleArn,
            (Key
"removePreProvisioningHook" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
removePreProvisioningHook
          ]
      )

instance Data.ToPath UpdateProvisioningTemplate where
  toPath :: UpdateProvisioningTemplate -> ByteString
toPath UpdateProvisioningTemplate' {Maybe Bool
Maybe Int
Maybe Text
Maybe ProvisioningHook
Text
templateName :: Text
removePreProvisioningHook :: Maybe Bool
provisioningRoleArn :: Maybe Text
preProvisioningHook :: Maybe ProvisioningHook
enabled :: Maybe Bool
description :: Maybe Text
defaultVersionId :: Maybe Int
$sel:templateName:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Text
$sel:removePreProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
$sel:provisioningRoleArn:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
$sel:preProvisioningHook:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe ProvisioningHook
$sel:enabled:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Bool
$sel:description:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Text
$sel:defaultVersionId:UpdateProvisioningTemplate' :: UpdateProvisioningTemplate -> Maybe Int
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/provisioning-templates/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
templateName]

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

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

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

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

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