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

    -- * Request Lenses
    describeProvisioningTemplate_templateName,

    -- * Destructuring the Response
    DescribeProvisioningTemplateResponse (..),
    newDescribeProvisioningTemplateResponse,

    -- * Response Lenses
    describeProvisioningTemplateResponse_creationDate,
    describeProvisioningTemplateResponse_defaultVersionId,
    describeProvisioningTemplateResponse_description,
    describeProvisioningTemplateResponse_enabled,
    describeProvisioningTemplateResponse_lastModifiedDate,
    describeProvisioningTemplateResponse_preProvisioningHook,
    describeProvisioningTemplateResponse_provisioningRoleArn,
    describeProvisioningTemplateResponse_templateArn,
    describeProvisioningTemplateResponse_templateBody,
    describeProvisioningTemplateResponse_templateName,
    describeProvisioningTemplateResponse_type,
    describeProvisioningTemplateResponse_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:/ 'newDescribeProvisioningTemplate' smart constructor.
data DescribeProvisioningTemplate = DescribeProvisioningTemplate'
  { -- | The name of the provisioning template.
    DescribeProvisioningTemplate -> Text
templateName :: Prelude.Text
  }
  deriving (DescribeProvisioningTemplate
-> DescribeProvisioningTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeProvisioningTemplate
-> DescribeProvisioningTemplate -> Bool
$c/= :: DescribeProvisioningTemplate
-> DescribeProvisioningTemplate -> Bool
== :: DescribeProvisioningTemplate
-> DescribeProvisioningTemplate -> Bool
$c== :: DescribeProvisioningTemplate
-> DescribeProvisioningTemplate -> Bool
Prelude.Eq, ReadPrec [DescribeProvisioningTemplate]
ReadPrec DescribeProvisioningTemplate
Int -> ReadS DescribeProvisioningTemplate
ReadS [DescribeProvisioningTemplate]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeProvisioningTemplate]
$creadListPrec :: ReadPrec [DescribeProvisioningTemplate]
readPrec :: ReadPrec DescribeProvisioningTemplate
$creadPrec :: ReadPrec DescribeProvisioningTemplate
readList :: ReadS [DescribeProvisioningTemplate]
$creadList :: ReadS [DescribeProvisioningTemplate]
readsPrec :: Int -> ReadS DescribeProvisioningTemplate
$creadsPrec :: Int -> ReadS DescribeProvisioningTemplate
Prelude.Read, Int -> DescribeProvisioningTemplate -> ShowS
[DescribeProvisioningTemplate] -> ShowS
DescribeProvisioningTemplate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeProvisioningTemplate] -> ShowS
$cshowList :: [DescribeProvisioningTemplate] -> ShowS
show :: DescribeProvisioningTemplate -> String
$cshow :: DescribeProvisioningTemplate -> String
showsPrec :: Int -> DescribeProvisioningTemplate -> ShowS
$cshowsPrec :: Int -> DescribeProvisioningTemplate -> ShowS
Prelude.Show, forall x.
Rep DescribeProvisioningTemplate x -> DescribeProvisioningTemplate
forall x.
DescribeProvisioningTemplate -> Rep DescribeProvisioningTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeProvisioningTemplate x -> DescribeProvisioningTemplate
$cfrom :: forall x.
DescribeProvisioningTemplate -> Rep DescribeProvisioningTemplate x
Prelude.Generic)

-- |
-- Create a value of 'DescribeProvisioningTemplate' 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', 'describeProvisioningTemplate_templateName' - The name of the provisioning template.
newDescribeProvisioningTemplate ::
  -- | 'templateName'
  Prelude.Text ->
  DescribeProvisioningTemplate
newDescribeProvisioningTemplate :: Text -> DescribeProvisioningTemplate
newDescribeProvisioningTemplate Text
pTemplateName_ =
  DescribeProvisioningTemplate'
    { $sel:templateName:DescribeProvisioningTemplate' :: Text
templateName =
        Text
pTemplateName_
    }

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

instance Core.AWSRequest DescribeProvisioningTemplate where
  type
    AWSResponse DescribeProvisioningTemplate =
      DescribeProvisioningTemplateResponse
  request :: (Service -> Service)
-> DescribeProvisioningTemplate
-> Request DescribeProvisioningTemplate
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeProvisioningTemplate
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeProvisioningTemplate)))
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 POSIX
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe POSIX
-> Maybe ProvisioningHook
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe TemplateType
-> Int
-> DescribeProvisioningTemplateResponse
DescribeProvisioningTemplateResponse'
            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
"creationDate")
            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
"defaultVersionId")
            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
"description")
            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
"enabled")
            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
"lastModifiedDate")
            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
"preProvisioningHook")
            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
"provisioningRoleArn")
            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
"templateArn")
            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
"templateBody")
            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
"templateName")
            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
"type")
            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
    DescribeProvisioningTemplate
  where
  hashWithSalt :: Int -> DescribeProvisioningTemplate -> Int
hashWithSalt Int
_salt DescribeProvisioningTemplate' {Text
templateName :: Text
$sel:templateName:DescribeProvisioningTemplate' :: DescribeProvisioningTemplate -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
templateName

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

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

instance Data.ToPath DescribeProvisioningTemplate where
  toPath :: DescribeProvisioningTemplate -> ByteString
toPath DescribeProvisioningTemplate' {Text
templateName :: Text
$sel:templateName:DescribeProvisioningTemplate' :: DescribeProvisioningTemplate -> 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 DescribeProvisioningTemplate where
  toQuery :: DescribeProvisioningTemplate -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeProvisioningTemplateResponse' smart constructor.
data DescribeProvisioningTemplateResponse = DescribeProvisioningTemplateResponse'
  { -- | The date when the provisioning template was created.
    DescribeProvisioningTemplateResponse -> Maybe POSIX
creationDate :: Prelude.Maybe Data.POSIX,
    -- | The default fleet template version ID.
    DescribeProvisioningTemplateResponse -> Maybe Int
defaultVersionId :: Prelude.Maybe Prelude.Int,
    -- | The description of the provisioning template.
    DescribeProvisioningTemplateResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | True if the provisioning template is enabled, otherwise false.
    DescribeProvisioningTemplateResponse -> Maybe Bool
enabled :: Prelude.Maybe Prelude.Bool,
    -- | The date when the provisioning template was last modified.
    DescribeProvisioningTemplateResponse -> Maybe POSIX
lastModifiedDate :: Prelude.Maybe Data.POSIX,
    -- | Gets information about a pre-provisioned hook.
    DescribeProvisioningTemplateResponse -> 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.
    DescribeProvisioningTemplateResponse -> Maybe Text
provisioningRoleArn :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the provisioning template.
    DescribeProvisioningTemplateResponse -> Maybe Text
templateArn :: Prelude.Maybe Prelude.Text,
    -- | The JSON formatted contents of the provisioning template.
    DescribeProvisioningTemplateResponse -> Maybe Text
templateBody :: Prelude.Maybe Prelude.Text,
    -- | The name of the provisioning template.
    DescribeProvisioningTemplateResponse -> Maybe Text
templateName :: Prelude.Maybe Prelude.Text,
    -- | The type you define in a provisioning template. You can create a
    -- template with only one type. You can\'t change the template type after
    -- its creation. The default value is @FLEET_PROVISIONING@. For more
    -- information about provisioning template, see:
    -- <https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html Provisioning template>.
    DescribeProvisioningTemplateResponse -> Maybe TemplateType
type' :: Prelude.Maybe TemplateType,
    -- | The response's http status code.
    DescribeProvisioningTemplateResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeProvisioningTemplateResponse
-> DescribeProvisioningTemplateResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeProvisioningTemplateResponse
-> DescribeProvisioningTemplateResponse -> Bool
$c/= :: DescribeProvisioningTemplateResponse
-> DescribeProvisioningTemplateResponse -> Bool
== :: DescribeProvisioningTemplateResponse
-> DescribeProvisioningTemplateResponse -> Bool
$c== :: DescribeProvisioningTemplateResponse
-> DescribeProvisioningTemplateResponse -> Bool
Prelude.Eq, ReadPrec [DescribeProvisioningTemplateResponse]
ReadPrec DescribeProvisioningTemplateResponse
Int -> ReadS DescribeProvisioningTemplateResponse
ReadS [DescribeProvisioningTemplateResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeProvisioningTemplateResponse]
$creadListPrec :: ReadPrec [DescribeProvisioningTemplateResponse]
readPrec :: ReadPrec DescribeProvisioningTemplateResponse
$creadPrec :: ReadPrec DescribeProvisioningTemplateResponse
readList :: ReadS [DescribeProvisioningTemplateResponse]
$creadList :: ReadS [DescribeProvisioningTemplateResponse]
readsPrec :: Int -> ReadS DescribeProvisioningTemplateResponse
$creadsPrec :: Int -> ReadS DescribeProvisioningTemplateResponse
Prelude.Read, Int -> DescribeProvisioningTemplateResponse -> ShowS
[DescribeProvisioningTemplateResponse] -> ShowS
DescribeProvisioningTemplateResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeProvisioningTemplateResponse] -> ShowS
$cshowList :: [DescribeProvisioningTemplateResponse] -> ShowS
show :: DescribeProvisioningTemplateResponse -> String
$cshow :: DescribeProvisioningTemplateResponse -> String
showsPrec :: Int -> DescribeProvisioningTemplateResponse -> ShowS
$cshowsPrec :: Int -> DescribeProvisioningTemplateResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeProvisioningTemplateResponse x
-> DescribeProvisioningTemplateResponse
forall x.
DescribeProvisioningTemplateResponse
-> Rep DescribeProvisioningTemplateResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeProvisioningTemplateResponse x
-> DescribeProvisioningTemplateResponse
$cfrom :: forall x.
DescribeProvisioningTemplateResponse
-> Rep DescribeProvisioningTemplateResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeProvisioningTemplateResponse' 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:
--
-- 'creationDate', 'describeProvisioningTemplateResponse_creationDate' - The date when the provisioning template was created.
--
-- 'defaultVersionId', 'describeProvisioningTemplateResponse_defaultVersionId' - The default fleet template version ID.
--
-- 'description', 'describeProvisioningTemplateResponse_description' - The description of the provisioning template.
--
-- 'enabled', 'describeProvisioningTemplateResponse_enabled' - True if the provisioning template is enabled, otherwise false.
--
-- 'lastModifiedDate', 'describeProvisioningTemplateResponse_lastModifiedDate' - The date when the provisioning template was last modified.
--
-- 'preProvisioningHook', 'describeProvisioningTemplateResponse_preProvisioningHook' - Gets information about a pre-provisioned hook.
--
-- 'provisioningRoleArn', 'describeProvisioningTemplateResponse_provisioningRoleArn' - The ARN of the role associated with the provisioning template. This IoT
-- role grants permission to provision a device.
--
-- 'templateArn', 'describeProvisioningTemplateResponse_templateArn' - The ARN of the provisioning template.
--
-- 'templateBody', 'describeProvisioningTemplateResponse_templateBody' - The JSON formatted contents of the provisioning template.
--
-- 'templateName', 'describeProvisioningTemplateResponse_templateName' - The name of the provisioning template.
--
-- 'type'', 'describeProvisioningTemplateResponse_type' - The type you define in a provisioning template. You can create a
-- template with only one type. You can\'t change the template type after
-- its creation. The default value is @FLEET_PROVISIONING@. For more
-- information about provisioning template, see:
-- <https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html Provisioning template>.
--
-- 'httpStatus', 'describeProvisioningTemplateResponse_httpStatus' - The response's http status code.
newDescribeProvisioningTemplateResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeProvisioningTemplateResponse
newDescribeProvisioningTemplateResponse :: Int -> DescribeProvisioningTemplateResponse
newDescribeProvisioningTemplateResponse Int
pHttpStatus_ =
  DescribeProvisioningTemplateResponse'
    { $sel:creationDate:DescribeProvisioningTemplateResponse' :: Maybe POSIX
creationDate =
        forall a. Maybe a
Prelude.Nothing,
      $sel:defaultVersionId:DescribeProvisioningTemplateResponse' :: Maybe Int
defaultVersionId = forall a. Maybe a
Prelude.Nothing,
      $sel:description:DescribeProvisioningTemplateResponse' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:enabled:DescribeProvisioningTemplateResponse' :: Maybe Bool
enabled = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedDate:DescribeProvisioningTemplateResponse' :: Maybe POSIX
lastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:preProvisioningHook:DescribeProvisioningTemplateResponse' :: Maybe ProvisioningHook
preProvisioningHook = forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningRoleArn:DescribeProvisioningTemplateResponse' :: Maybe Text
provisioningRoleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:templateArn:DescribeProvisioningTemplateResponse' :: Maybe Text
templateArn = forall a. Maybe a
Prelude.Nothing,
      $sel:templateBody:DescribeProvisioningTemplateResponse' :: Maybe Text
templateBody = forall a. Maybe a
Prelude.Nothing,
      $sel:templateName:DescribeProvisioningTemplateResponse' :: Maybe Text
templateName = forall a. Maybe a
Prelude.Nothing,
      $sel:type':DescribeProvisioningTemplateResponse' :: Maybe TemplateType
type' = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeProvisioningTemplateResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The date when the provisioning template was created.
describeProvisioningTemplateResponse_creationDate :: Lens.Lens' DescribeProvisioningTemplateResponse (Prelude.Maybe Prelude.UTCTime)
describeProvisioningTemplateResponse_creationDate :: Lens' DescribeProvisioningTemplateResponse (Maybe UTCTime)
describeProvisioningTemplateResponse_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeProvisioningTemplateResponse' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: DescribeProvisioningTemplateResponse
s@DescribeProvisioningTemplateResponse' {} Maybe POSIX
a -> DescribeProvisioningTemplateResponse
s {$sel:creationDate:DescribeProvisioningTemplateResponse' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: DescribeProvisioningTemplateResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The default fleet template version ID.
describeProvisioningTemplateResponse_defaultVersionId :: Lens.Lens' DescribeProvisioningTemplateResponse (Prelude.Maybe Prelude.Int)
describeProvisioningTemplateResponse_defaultVersionId :: Lens' DescribeProvisioningTemplateResponse (Maybe Int)
describeProvisioningTemplateResponse_defaultVersionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeProvisioningTemplateResponse' {Maybe Int
defaultVersionId :: Maybe Int
$sel:defaultVersionId:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe Int
defaultVersionId} -> Maybe Int
defaultVersionId) (\s :: DescribeProvisioningTemplateResponse
s@DescribeProvisioningTemplateResponse' {} Maybe Int
a -> DescribeProvisioningTemplateResponse
s {$sel:defaultVersionId:DescribeProvisioningTemplateResponse' :: Maybe Int
defaultVersionId = Maybe Int
a} :: DescribeProvisioningTemplateResponse)

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

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

-- | The date when the provisioning template was last modified.
describeProvisioningTemplateResponse_lastModifiedDate :: Lens.Lens' DescribeProvisioningTemplateResponse (Prelude.Maybe Prelude.UTCTime)
describeProvisioningTemplateResponse_lastModifiedDate :: Lens' DescribeProvisioningTemplateResponse (Maybe UTCTime)
describeProvisioningTemplateResponse_lastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeProvisioningTemplateResponse' {Maybe POSIX
lastModifiedDate :: Maybe POSIX
$sel:lastModifiedDate:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe POSIX
lastModifiedDate} -> Maybe POSIX
lastModifiedDate) (\s :: DescribeProvisioningTemplateResponse
s@DescribeProvisioningTemplateResponse' {} Maybe POSIX
a -> DescribeProvisioningTemplateResponse
s {$sel:lastModifiedDate:DescribeProvisioningTemplateResponse' :: Maybe POSIX
lastModifiedDate = Maybe POSIX
a} :: DescribeProvisioningTemplateResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Gets information about a pre-provisioned hook.
describeProvisioningTemplateResponse_preProvisioningHook :: Lens.Lens' DescribeProvisioningTemplateResponse (Prelude.Maybe ProvisioningHook)
describeProvisioningTemplateResponse_preProvisioningHook :: Lens' DescribeProvisioningTemplateResponse (Maybe ProvisioningHook)
describeProvisioningTemplateResponse_preProvisioningHook = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeProvisioningTemplateResponse' {Maybe ProvisioningHook
preProvisioningHook :: Maybe ProvisioningHook
$sel:preProvisioningHook:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe ProvisioningHook
preProvisioningHook} -> Maybe ProvisioningHook
preProvisioningHook) (\s :: DescribeProvisioningTemplateResponse
s@DescribeProvisioningTemplateResponse' {} Maybe ProvisioningHook
a -> DescribeProvisioningTemplateResponse
s {$sel:preProvisioningHook:DescribeProvisioningTemplateResponse' :: Maybe ProvisioningHook
preProvisioningHook = Maybe ProvisioningHook
a} :: DescribeProvisioningTemplateResponse)

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

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

-- | The JSON formatted contents of the provisioning template.
describeProvisioningTemplateResponse_templateBody :: Lens.Lens' DescribeProvisioningTemplateResponse (Prelude.Maybe Prelude.Text)
describeProvisioningTemplateResponse_templateBody :: Lens' DescribeProvisioningTemplateResponse (Maybe Text)
describeProvisioningTemplateResponse_templateBody = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeProvisioningTemplateResponse' {Maybe Text
templateBody :: Maybe Text
$sel:templateBody:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe Text
templateBody} -> Maybe Text
templateBody) (\s :: DescribeProvisioningTemplateResponse
s@DescribeProvisioningTemplateResponse' {} Maybe Text
a -> DescribeProvisioningTemplateResponse
s {$sel:templateBody:DescribeProvisioningTemplateResponse' :: Maybe Text
templateBody = Maybe Text
a} :: DescribeProvisioningTemplateResponse)

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

-- | The type you define in a provisioning template. You can create a
-- template with only one type. You can\'t change the template type after
-- its creation. The default value is @FLEET_PROVISIONING@. For more
-- information about provisioning template, see:
-- <https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html Provisioning template>.
describeProvisioningTemplateResponse_type :: Lens.Lens' DescribeProvisioningTemplateResponse (Prelude.Maybe TemplateType)
describeProvisioningTemplateResponse_type :: Lens' DescribeProvisioningTemplateResponse (Maybe TemplateType)
describeProvisioningTemplateResponse_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeProvisioningTemplateResponse' {Maybe TemplateType
type' :: Maybe TemplateType
$sel:type':DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe TemplateType
type'} -> Maybe TemplateType
type') (\s :: DescribeProvisioningTemplateResponse
s@DescribeProvisioningTemplateResponse' {} Maybe TemplateType
a -> DescribeProvisioningTemplateResponse
s {$sel:type':DescribeProvisioningTemplateResponse' :: Maybe TemplateType
type' = Maybe TemplateType
a} :: DescribeProvisioningTemplateResponse)

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

instance
  Prelude.NFData
    DescribeProvisioningTemplateResponse
  where
  rnf :: DescribeProvisioningTemplateResponse -> ()
rnf DescribeProvisioningTemplateResponse' {Int
Maybe Bool
Maybe Int
Maybe Text
Maybe POSIX
Maybe ProvisioningHook
Maybe TemplateType
httpStatus :: Int
type' :: Maybe TemplateType
templateName :: Maybe Text
templateBody :: Maybe Text
templateArn :: Maybe Text
provisioningRoleArn :: Maybe Text
preProvisioningHook :: Maybe ProvisioningHook
lastModifiedDate :: Maybe POSIX
enabled :: Maybe Bool
description :: Maybe Text
defaultVersionId :: Maybe Int
creationDate :: Maybe POSIX
$sel:httpStatus:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Int
$sel:type':DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe TemplateType
$sel:templateName:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe Text
$sel:templateBody:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe Text
$sel:templateArn:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe Text
$sel:provisioningRoleArn:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe Text
$sel:preProvisioningHook:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe ProvisioningHook
$sel:lastModifiedDate:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe POSIX
$sel:enabled:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe Bool
$sel:description:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe Text
$sel:defaultVersionId:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe Int
$sel:creationDate:DescribeProvisioningTemplateResponse' :: DescribeProvisioningTemplateResponse -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 POSIX
lastModifiedDate
      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 Text
templateArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
templateBody
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
templateName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TemplateType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus