{-# 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.Panorama.CreateNodeFromTemplateJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a camera stream node.
module Amazonka.Panorama.CreateNodeFromTemplateJob
  ( -- * Creating a Request
    CreateNodeFromTemplateJob (..),
    newCreateNodeFromTemplateJob,

    -- * Request Lenses
    createNodeFromTemplateJob_jobTags,
    createNodeFromTemplateJob_nodeDescription,
    createNodeFromTemplateJob_nodeName,
    createNodeFromTemplateJob_outputPackageName,
    createNodeFromTemplateJob_outputPackageVersion,
    createNodeFromTemplateJob_templateParameters,
    createNodeFromTemplateJob_templateType,

    -- * Destructuring the Response
    CreateNodeFromTemplateJobResponse (..),
    newCreateNodeFromTemplateJobResponse,

    -- * Response Lenses
    createNodeFromTemplateJobResponse_httpStatus,
    createNodeFromTemplateJobResponse_jobId,
  )
where

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

-- | /See:/ 'newCreateNodeFromTemplateJob' smart constructor.
data CreateNodeFromTemplateJob = CreateNodeFromTemplateJob'
  { -- | Tags for the job.
    CreateNodeFromTemplateJob -> Maybe [JobResourceTags]
jobTags :: Prelude.Maybe [JobResourceTags],
    -- | A description for the node.
    CreateNodeFromTemplateJob -> Maybe Text
nodeDescription :: Prelude.Maybe Prelude.Text,
    -- | A name for the node.
    CreateNodeFromTemplateJob -> Text
nodeName :: Prelude.Text,
    -- | An output package name for the node.
    CreateNodeFromTemplateJob -> Text
outputPackageName :: Prelude.Text,
    -- | An output package version for the node.
    CreateNodeFromTemplateJob -> Text
outputPackageVersion :: Prelude.Text,
    -- | Template parameters for the node.
    CreateNodeFromTemplateJob -> HashMap Text (Sensitive Text)
templateParameters :: Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text),
    -- | The type of node.
    CreateNodeFromTemplateJob -> TemplateType
templateType :: TemplateType
  }
  deriving (CreateNodeFromTemplateJob -> CreateNodeFromTemplateJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateNodeFromTemplateJob -> CreateNodeFromTemplateJob -> Bool
$c/= :: CreateNodeFromTemplateJob -> CreateNodeFromTemplateJob -> Bool
== :: CreateNodeFromTemplateJob -> CreateNodeFromTemplateJob -> Bool
$c== :: CreateNodeFromTemplateJob -> CreateNodeFromTemplateJob -> Bool
Prelude.Eq, Int -> CreateNodeFromTemplateJob -> ShowS
[CreateNodeFromTemplateJob] -> ShowS
CreateNodeFromTemplateJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateNodeFromTemplateJob] -> ShowS
$cshowList :: [CreateNodeFromTemplateJob] -> ShowS
show :: CreateNodeFromTemplateJob -> String
$cshow :: CreateNodeFromTemplateJob -> String
showsPrec :: Int -> CreateNodeFromTemplateJob -> ShowS
$cshowsPrec :: Int -> CreateNodeFromTemplateJob -> ShowS
Prelude.Show, forall x.
Rep CreateNodeFromTemplateJob x -> CreateNodeFromTemplateJob
forall x.
CreateNodeFromTemplateJob -> Rep CreateNodeFromTemplateJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateNodeFromTemplateJob x -> CreateNodeFromTemplateJob
$cfrom :: forall x.
CreateNodeFromTemplateJob -> Rep CreateNodeFromTemplateJob x
Prelude.Generic)

-- |
-- Create a value of 'CreateNodeFromTemplateJob' 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:
--
-- 'jobTags', 'createNodeFromTemplateJob_jobTags' - Tags for the job.
--
-- 'nodeDescription', 'createNodeFromTemplateJob_nodeDescription' - A description for the node.
--
-- 'nodeName', 'createNodeFromTemplateJob_nodeName' - A name for the node.
--
-- 'outputPackageName', 'createNodeFromTemplateJob_outputPackageName' - An output package name for the node.
--
-- 'outputPackageVersion', 'createNodeFromTemplateJob_outputPackageVersion' - An output package version for the node.
--
-- 'templateParameters', 'createNodeFromTemplateJob_templateParameters' - Template parameters for the node.
--
-- 'templateType', 'createNodeFromTemplateJob_templateType' - The type of node.
newCreateNodeFromTemplateJob ::
  -- | 'nodeName'
  Prelude.Text ->
  -- | 'outputPackageName'
  Prelude.Text ->
  -- | 'outputPackageVersion'
  Prelude.Text ->
  -- | 'templateType'
  TemplateType ->
  CreateNodeFromTemplateJob
newCreateNodeFromTemplateJob :: Text -> Text -> Text -> TemplateType -> CreateNodeFromTemplateJob
newCreateNodeFromTemplateJob
  Text
pNodeName_
  Text
pOutputPackageName_
  Text
pOutputPackageVersion_
  TemplateType
pTemplateType_ =
    CreateNodeFromTemplateJob'
      { $sel:jobTags:CreateNodeFromTemplateJob' :: Maybe [JobResourceTags]
jobTags =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nodeDescription:CreateNodeFromTemplateJob' :: Maybe Text
nodeDescription = forall a. Maybe a
Prelude.Nothing,
        $sel:nodeName:CreateNodeFromTemplateJob' :: Text
nodeName = Text
pNodeName_,
        $sel:outputPackageName:CreateNodeFromTemplateJob' :: Text
outputPackageName = Text
pOutputPackageName_,
        $sel:outputPackageVersion:CreateNodeFromTemplateJob' :: Text
outputPackageVersion = Text
pOutputPackageVersion_,
        $sel:templateParameters:CreateNodeFromTemplateJob' :: HashMap Text (Sensitive Text)
templateParameters = forall a. Monoid a => a
Prelude.mempty,
        $sel:templateType:CreateNodeFromTemplateJob' :: TemplateType
templateType = TemplateType
pTemplateType_
      }

-- | Tags for the job.
createNodeFromTemplateJob_jobTags :: Lens.Lens' CreateNodeFromTemplateJob (Prelude.Maybe [JobResourceTags])
createNodeFromTemplateJob_jobTags :: Lens' CreateNodeFromTemplateJob (Maybe [JobResourceTags])
createNodeFromTemplateJob_jobTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateNodeFromTemplateJob' {Maybe [JobResourceTags]
jobTags :: Maybe [JobResourceTags]
$sel:jobTags:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Maybe [JobResourceTags]
jobTags} -> Maybe [JobResourceTags]
jobTags) (\s :: CreateNodeFromTemplateJob
s@CreateNodeFromTemplateJob' {} Maybe [JobResourceTags]
a -> CreateNodeFromTemplateJob
s {$sel:jobTags:CreateNodeFromTemplateJob' :: Maybe [JobResourceTags]
jobTags = Maybe [JobResourceTags]
a} :: CreateNodeFromTemplateJob) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A description for the node.
createNodeFromTemplateJob_nodeDescription :: Lens.Lens' CreateNodeFromTemplateJob (Prelude.Maybe Prelude.Text)
createNodeFromTemplateJob_nodeDescription :: Lens' CreateNodeFromTemplateJob (Maybe Text)
createNodeFromTemplateJob_nodeDescription = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateNodeFromTemplateJob' {Maybe Text
nodeDescription :: Maybe Text
$sel:nodeDescription:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Maybe Text
nodeDescription} -> Maybe Text
nodeDescription) (\s :: CreateNodeFromTemplateJob
s@CreateNodeFromTemplateJob' {} Maybe Text
a -> CreateNodeFromTemplateJob
s {$sel:nodeDescription:CreateNodeFromTemplateJob' :: Maybe Text
nodeDescription = Maybe Text
a} :: CreateNodeFromTemplateJob)

-- | A name for the node.
createNodeFromTemplateJob_nodeName :: Lens.Lens' CreateNodeFromTemplateJob Prelude.Text
createNodeFromTemplateJob_nodeName :: Lens' CreateNodeFromTemplateJob Text
createNodeFromTemplateJob_nodeName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateNodeFromTemplateJob' {Text
nodeName :: Text
$sel:nodeName:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
nodeName} -> Text
nodeName) (\s :: CreateNodeFromTemplateJob
s@CreateNodeFromTemplateJob' {} Text
a -> CreateNodeFromTemplateJob
s {$sel:nodeName:CreateNodeFromTemplateJob' :: Text
nodeName = Text
a} :: CreateNodeFromTemplateJob)

-- | An output package name for the node.
createNodeFromTemplateJob_outputPackageName :: Lens.Lens' CreateNodeFromTemplateJob Prelude.Text
createNodeFromTemplateJob_outputPackageName :: Lens' CreateNodeFromTemplateJob Text
createNodeFromTemplateJob_outputPackageName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateNodeFromTemplateJob' {Text
outputPackageName :: Text
$sel:outputPackageName:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
outputPackageName} -> Text
outputPackageName) (\s :: CreateNodeFromTemplateJob
s@CreateNodeFromTemplateJob' {} Text
a -> CreateNodeFromTemplateJob
s {$sel:outputPackageName:CreateNodeFromTemplateJob' :: Text
outputPackageName = Text
a} :: CreateNodeFromTemplateJob)

-- | An output package version for the node.
createNodeFromTemplateJob_outputPackageVersion :: Lens.Lens' CreateNodeFromTemplateJob Prelude.Text
createNodeFromTemplateJob_outputPackageVersion :: Lens' CreateNodeFromTemplateJob Text
createNodeFromTemplateJob_outputPackageVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateNodeFromTemplateJob' {Text
outputPackageVersion :: Text
$sel:outputPackageVersion:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
outputPackageVersion} -> Text
outputPackageVersion) (\s :: CreateNodeFromTemplateJob
s@CreateNodeFromTemplateJob' {} Text
a -> CreateNodeFromTemplateJob
s {$sel:outputPackageVersion:CreateNodeFromTemplateJob' :: Text
outputPackageVersion = Text
a} :: CreateNodeFromTemplateJob)

-- | Template parameters for the node.
createNodeFromTemplateJob_templateParameters :: Lens.Lens' CreateNodeFromTemplateJob (Prelude.HashMap Prelude.Text Prelude.Text)
createNodeFromTemplateJob_templateParameters :: Lens' CreateNodeFromTemplateJob (HashMap Text Text)
createNodeFromTemplateJob_templateParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateNodeFromTemplateJob' {HashMap Text (Sensitive Text)
templateParameters :: HashMap Text (Sensitive Text)
$sel:templateParameters:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> HashMap Text (Sensitive Text)
templateParameters} -> HashMap Text (Sensitive Text)
templateParameters) (\s :: CreateNodeFromTemplateJob
s@CreateNodeFromTemplateJob' {} HashMap Text (Sensitive Text)
a -> CreateNodeFromTemplateJob
s {$sel:templateParameters:CreateNodeFromTemplateJob' :: HashMap Text (Sensitive Text)
templateParameters = HashMap Text (Sensitive Text)
a} :: CreateNodeFromTemplateJob) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The type of node.
createNodeFromTemplateJob_templateType :: Lens.Lens' CreateNodeFromTemplateJob TemplateType
createNodeFromTemplateJob_templateType :: Lens' CreateNodeFromTemplateJob TemplateType
createNodeFromTemplateJob_templateType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateNodeFromTemplateJob' {TemplateType
templateType :: TemplateType
$sel:templateType:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> TemplateType
templateType} -> TemplateType
templateType) (\s :: CreateNodeFromTemplateJob
s@CreateNodeFromTemplateJob' {} TemplateType
a -> CreateNodeFromTemplateJob
s {$sel:templateType:CreateNodeFromTemplateJob' :: TemplateType
templateType = TemplateType
a} :: CreateNodeFromTemplateJob)

instance Core.AWSRequest CreateNodeFromTemplateJob where
  type
    AWSResponse CreateNodeFromTemplateJob =
      CreateNodeFromTemplateJobResponse
  request :: (Service -> Service)
-> CreateNodeFromTemplateJob -> Request CreateNodeFromTemplateJob
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateNodeFromTemplateJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateNodeFromTemplateJob)))
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 ->
          Int -> Text -> CreateNodeFromTemplateJobResponse
CreateNodeFromTemplateJobResponse'
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"JobId")
      )

instance Prelude.Hashable CreateNodeFromTemplateJob where
  hashWithSalt :: Int -> CreateNodeFromTemplateJob -> Int
hashWithSalt Int
_salt CreateNodeFromTemplateJob' {Maybe [JobResourceTags]
Maybe Text
Text
HashMap Text (Sensitive Text)
TemplateType
templateType :: TemplateType
templateParameters :: HashMap Text (Sensitive Text)
outputPackageVersion :: Text
outputPackageName :: Text
nodeName :: Text
nodeDescription :: Maybe Text
jobTags :: Maybe [JobResourceTags]
$sel:templateType:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> TemplateType
$sel:templateParameters:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> HashMap Text (Sensitive Text)
$sel:outputPackageVersion:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
$sel:outputPackageName:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
$sel:nodeName:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
$sel:nodeDescription:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Maybe Text
$sel:jobTags:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Maybe [JobResourceTags]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [JobResourceTags]
jobTags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nodeDescription
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
nodeName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
outputPackageName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
outputPackageVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` HashMap Text (Sensitive Text)
templateParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` TemplateType
templateType

instance Prelude.NFData CreateNodeFromTemplateJob where
  rnf :: CreateNodeFromTemplateJob -> ()
rnf CreateNodeFromTemplateJob' {Maybe [JobResourceTags]
Maybe Text
Text
HashMap Text (Sensitive Text)
TemplateType
templateType :: TemplateType
templateParameters :: HashMap Text (Sensitive Text)
outputPackageVersion :: Text
outputPackageName :: Text
nodeName :: Text
nodeDescription :: Maybe Text
jobTags :: Maybe [JobResourceTags]
$sel:templateType:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> TemplateType
$sel:templateParameters:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> HashMap Text (Sensitive Text)
$sel:outputPackageVersion:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
$sel:outputPackageName:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
$sel:nodeName:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
$sel:nodeDescription:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Maybe Text
$sel:jobTags:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Maybe [JobResourceTags]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [JobResourceTags]
jobTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nodeDescription
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
nodeName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
outputPackageName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
outputPackageVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf HashMap Text (Sensitive Text)
templateParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf TemplateType
templateType

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

instance Data.ToJSON CreateNodeFromTemplateJob where
  toJSON :: CreateNodeFromTemplateJob -> Value
toJSON CreateNodeFromTemplateJob' {Maybe [JobResourceTags]
Maybe Text
Text
HashMap Text (Sensitive Text)
TemplateType
templateType :: TemplateType
templateParameters :: HashMap Text (Sensitive Text)
outputPackageVersion :: Text
outputPackageName :: Text
nodeName :: Text
nodeDescription :: Maybe Text
jobTags :: Maybe [JobResourceTags]
$sel:templateType:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> TemplateType
$sel:templateParameters:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> HashMap Text (Sensitive Text)
$sel:outputPackageVersion:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
$sel:outputPackageName:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
$sel:nodeName:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Text
$sel:nodeDescription:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Maybe Text
$sel:jobTags:CreateNodeFromTemplateJob' :: CreateNodeFromTemplateJob -> Maybe [JobResourceTags]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"JobTags" 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 [JobResourceTags]
jobTags,
            (Key
"NodeDescription" 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
nodeDescription,
            forall a. a -> Maybe a
Prelude.Just (Key
"NodeName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
nodeName),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"OutputPackageName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
outputPackageName),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"OutputPackageVersion"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
outputPackageVersion
              ),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"TemplateParameters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= HashMap Text (Sensitive Text)
templateParameters),
            forall a. a -> Maybe a
Prelude.Just (Key
"TemplateType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= TemplateType
templateType)
          ]
      )

instance Data.ToPath CreateNodeFromTemplateJob where
  toPath :: CreateNodeFromTemplateJob -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/packages/template-job"

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

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

-- |
-- Create a value of 'CreateNodeFromTemplateJobResponse' 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', 'createNodeFromTemplateJobResponse_httpStatus' - The response's http status code.
--
-- 'jobId', 'createNodeFromTemplateJobResponse_jobId' - The job\'s ID.
newCreateNodeFromTemplateJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'jobId'
  Prelude.Text ->
  CreateNodeFromTemplateJobResponse
newCreateNodeFromTemplateJobResponse :: Int -> Text -> CreateNodeFromTemplateJobResponse
newCreateNodeFromTemplateJobResponse
  Int
pHttpStatus_
  Text
pJobId_ =
    CreateNodeFromTemplateJobResponse'
      { $sel:httpStatus:CreateNodeFromTemplateJobResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:jobId:CreateNodeFromTemplateJobResponse' :: Text
jobId = Text
pJobId_
      }

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

-- | The job\'s ID.
createNodeFromTemplateJobResponse_jobId :: Lens.Lens' CreateNodeFromTemplateJobResponse Prelude.Text
createNodeFromTemplateJobResponse_jobId :: Lens' CreateNodeFromTemplateJobResponse Text
createNodeFromTemplateJobResponse_jobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateNodeFromTemplateJobResponse' {Text
jobId :: Text
$sel:jobId:CreateNodeFromTemplateJobResponse' :: CreateNodeFromTemplateJobResponse -> Text
jobId} -> Text
jobId) (\s :: CreateNodeFromTemplateJobResponse
s@CreateNodeFromTemplateJobResponse' {} Text
a -> CreateNodeFromTemplateJobResponse
s {$sel:jobId:CreateNodeFromTemplateJobResponse' :: Text
jobId = Text
a} :: CreateNodeFromTemplateJobResponse)

instance
  Prelude.NFData
    CreateNodeFromTemplateJobResponse
  where
  rnf :: CreateNodeFromTemplateJobResponse -> ()
rnf CreateNodeFromTemplateJobResponse' {Int
Text
jobId :: Text
httpStatus :: Int
$sel:jobId:CreateNodeFromTemplateJobResponse' :: CreateNodeFromTemplateJobResponse -> Text
$sel:httpStatus:CreateNodeFromTemplateJobResponse' :: CreateNodeFromTemplateJobResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
jobId