{-# 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.Inspector.CreateAssessmentTemplate
-- 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 an assessment template for the assessment target that is
-- specified by the ARN of the assessment target. If the
-- <https://docs.aws.amazon.com/inspector/latest/userguide/inspector_slr.html service-linked role>
-- isn’t already registered, this action also creates and registers a
-- service-linked role to grant Amazon Inspector access to AWS Services
-- needed to perform security assessments.
module Amazonka.Inspector.CreateAssessmentTemplate
  ( -- * Creating a Request
    CreateAssessmentTemplate (..),
    newCreateAssessmentTemplate,

    -- * Request Lenses
    createAssessmentTemplate_userAttributesForFindings,
    createAssessmentTemplate_assessmentTargetArn,
    createAssessmentTemplate_assessmentTemplateName,
    createAssessmentTemplate_durationInSeconds,
    createAssessmentTemplate_rulesPackageArns,

    -- * Destructuring the Response
    CreateAssessmentTemplateResponse (..),
    newCreateAssessmentTemplateResponse,

    -- * Response Lenses
    createAssessmentTemplateResponse_httpStatus,
    createAssessmentTemplateResponse_assessmentTemplateArn,
  )
where

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

-- | /See:/ 'newCreateAssessmentTemplate' smart constructor.
data CreateAssessmentTemplate = CreateAssessmentTemplate'
  { -- | The user-defined attributes that are assigned to every finding that is
    -- generated by the assessment run that uses this assessment template. An
    -- attribute is a key and value pair (an Attribute object). Within an
    -- assessment template, each key must be unique.
    CreateAssessmentTemplate -> Maybe [Attribute]
userAttributesForFindings :: Prelude.Maybe [Attribute],
    -- | The ARN that specifies the assessment target for which you want to
    -- create the assessment template.
    CreateAssessmentTemplate -> Text
assessmentTargetArn :: Prelude.Text,
    -- | The user-defined name that identifies the assessment template that you
    -- want to create. You can create several assessment templates for an
    -- assessment target. The names of the assessment templates that correspond
    -- to a particular assessment target must be unique.
    CreateAssessmentTemplate -> Text
assessmentTemplateName :: Prelude.Text,
    -- | The duration of the assessment run in seconds.
    CreateAssessmentTemplate -> Natural
durationInSeconds :: Prelude.Natural,
    -- | The ARNs that specify the rules packages that you want to attach to the
    -- assessment template.
    CreateAssessmentTemplate -> [Text]
rulesPackageArns :: [Prelude.Text]
  }
  deriving (CreateAssessmentTemplate -> CreateAssessmentTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateAssessmentTemplate -> CreateAssessmentTemplate -> Bool
$c/= :: CreateAssessmentTemplate -> CreateAssessmentTemplate -> Bool
== :: CreateAssessmentTemplate -> CreateAssessmentTemplate -> Bool
$c== :: CreateAssessmentTemplate -> CreateAssessmentTemplate -> Bool
Prelude.Eq, ReadPrec [CreateAssessmentTemplate]
ReadPrec CreateAssessmentTemplate
Int -> ReadS CreateAssessmentTemplate
ReadS [CreateAssessmentTemplate]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateAssessmentTemplate]
$creadListPrec :: ReadPrec [CreateAssessmentTemplate]
readPrec :: ReadPrec CreateAssessmentTemplate
$creadPrec :: ReadPrec CreateAssessmentTemplate
readList :: ReadS [CreateAssessmentTemplate]
$creadList :: ReadS [CreateAssessmentTemplate]
readsPrec :: Int -> ReadS CreateAssessmentTemplate
$creadsPrec :: Int -> ReadS CreateAssessmentTemplate
Prelude.Read, Int -> CreateAssessmentTemplate -> ShowS
[CreateAssessmentTemplate] -> ShowS
CreateAssessmentTemplate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateAssessmentTemplate] -> ShowS
$cshowList :: [CreateAssessmentTemplate] -> ShowS
show :: CreateAssessmentTemplate -> String
$cshow :: CreateAssessmentTemplate -> String
showsPrec :: Int -> CreateAssessmentTemplate -> ShowS
$cshowsPrec :: Int -> CreateAssessmentTemplate -> ShowS
Prelude.Show, forall x.
Rep CreateAssessmentTemplate x -> CreateAssessmentTemplate
forall x.
CreateAssessmentTemplate -> Rep CreateAssessmentTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateAssessmentTemplate x -> CreateAssessmentTemplate
$cfrom :: forall x.
CreateAssessmentTemplate -> Rep CreateAssessmentTemplate x
Prelude.Generic)

-- |
-- Create a value of 'CreateAssessmentTemplate' 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:
--
-- 'userAttributesForFindings', 'createAssessmentTemplate_userAttributesForFindings' - The user-defined attributes that are assigned to every finding that is
-- generated by the assessment run that uses this assessment template. An
-- attribute is a key and value pair (an Attribute object). Within an
-- assessment template, each key must be unique.
--
-- 'assessmentTargetArn', 'createAssessmentTemplate_assessmentTargetArn' - The ARN that specifies the assessment target for which you want to
-- create the assessment template.
--
-- 'assessmentTemplateName', 'createAssessmentTemplate_assessmentTemplateName' - The user-defined name that identifies the assessment template that you
-- want to create. You can create several assessment templates for an
-- assessment target. The names of the assessment templates that correspond
-- to a particular assessment target must be unique.
--
-- 'durationInSeconds', 'createAssessmentTemplate_durationInSeconds' - The duration of the assessment run in seconds.
--
-- 'rulesPackageArns', 'createAssessmentTemplate_rulesPackageArns' - The ARNs that specify the rules packages that you want to attach to the
-- assessment template.
newCreateAssessmentTemplate ::
  -- | 'assessmentTargetArn'
  Prelude.Text ->
  -- | 'assessmentTemplateName'
  Prelude.Text ->
  -- | 'durationInSeconds'
  Prelude.Natural ->
  CreateAssessmentTemplate
newCreateAssessmentTemplate :: Text -> Text -> Natural -> CreateAssessmentTemplate
newCreateAssessmentTemplate
  Text
pAssessmentTargetArn_
  Text
pAssessmentTemplateName_
  Natural
pDurationInSeconds_ =
    CreateAssessmentTemplate'
      { $sel:userAttributesForFindings:CreateAssessmentTemplate' :: Maybe [Attribute]
userAttributesForFindings =
          forall a. Maybe a
Prelude.Nothing,
        $sel:assessmentTargetArn:CreateAssessmentTemplate' :: Text
assessmentTargetArn = Text
pAssessmentTargetArn_,
        $sel:assessmentTemplateName:CreateAssessmentTemplate' :: Text
assessmentTemplateName = Text
pAssessmentTemplateName_,
        $sel:durationInSeconds:CreateAssessmentTemplate' :: Natural
durationInSeconds = Natural
pDurationInSeconds_,
        $sel:rulesPackageArns:CreateAssessmentTemplate' :: [Text]
rulesPackageArns = forall a. Monoid a => a
Prelude.mempty
      }

-- | The user-defined attributes that are assigned to every finding that is
-- generated by the assessment run that uses this assessment template. An
-- attribute is a key and value pair (an Attribute object). Within an
-- assessment template, each key must be unique.
createAssessmentTemplate_userAttributesForFindings :: Lens.Lens' CreateAssessmentTemplate (Prelude.Maybe [Attribute])
createAssessmentTemplate_userAttributesForFindings :: Lens' CreateAssessmentTemplate (Maybe [Attribute])
createAssessmentTemplate_userAttributesForFindings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssessmentTemplate' {Maybe [Attribute]
userAttributesForFindings :: Maybe [Attribute]
$sel:userAttributesForFindings:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Maybe [Attribute]
userAttributesForFindings} -> Maybe [Attribute]
userAttributesForFindings) (\s :: CreateAssessmentTemplate
s@CreateAssessmentTemplate' {} Maybe [Attribute]
a -> CreateAssessmentTemplate
s {$sel:userAttributesForFindings:CreateAssessmentTemplate' :: Maybe [Attribute]
userAttributesForFindings = Maybe [Attribute]
a} :: CreateAssessmentTemplate) 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

-- | The ARN that specifies the assessment target for which you want to
-- create the assessment template.
createAssessmentTemplate_assessmentTargetArn :: Lens.Lens' CreateAssessmentTemplate Prelude.Text
createAssessmentTemplate_assessmentTargetArn :: Lens' CreateAssessmentTemplate Text
createAssessmentTemplate_assessmentTargetArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssessmentTemplate' {Text
assessmentTargetArn :: Text
$sel:assessmentTargetArn:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Text
assessmentTargetArn} -> Text
assessmentTargetArn) (\s :: CreateAssessmentTemplate
s@CreateAssessmentTemplate' {} Text
a -> CreateAssessmentTemplate
s {$sel:assessmentTargetArn:CreateAssessmentTemplate' :: Text
assessmentTargetArn = Text
a} :: CreateAssessmentTemplate)

-- | The user-defined name that identifies the assessment template that you
-- want to create. You can create several assessment templates for an
-- assessment target. The names of the assessment templates that correspond
-- to a particular assessment target must be unique.
createAssessmentTemplate_assessmentTemplateName :: Lens.Lens' CreateAssessmentTemplate Prelude.Text
createAssessmentTemplate_assessmentTemplateName :: Lens' CreateAssessmentTemplate Text
createAssessmentTemplate_assessmentTemplateName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssessmentTemplate' {Text
assessmentTemplateName :: Text
$sel:assessmentTemplateName:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Text
assessmentTemplateName} -> Text
assessmentTemplateName) (\s :: CreateAssessmentTemplate
s@CreateAssessmentTemplate' {} Text
a -> CreateAssessmentTemplate
s {$sel:assessmentTemplateName:CreateAssessmentTemplate' :: Text
assessmentTemplateName = Text
a} :: CreateAssessmentTemplate)

-- | The duration of the assessment run in seconds.
createAssessmentTemplate_durationInSeconds :: Lens.Lens' CreateAssessmentTemplate Prelude.Natural
createAssessmentTemplate_durationInSeconds :: Lens' CreateAssessmentTemplate Natural
createAssessmentTemplate_durationInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssessmentTemplate' {Natural
durationInSeconds :: Natural
$sel:durationInSeconds:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Natural
durationInSeconds} -> Natural
durationInSeconds) (\s :: CreateAssessmentTemplate
s@CreateAssessmentTemplate' {} Natural
a -> CreateAssessmentTemplate
s {$sel:durationInSeconds:CreateAssessmentTemplate' :: Natural
durationInSeconds = Natural
a} :: CreateAssessmentTemplate)

-- | The ARNs that specify the rules packages that you want to attach to the
-- assessment template.
createAssessmentTemplate_rulesPackageArns :: Lens.Lens' CreateAssessmentTemplate [Prelude.Text]
createAssessmentTemplate_rulesPackageArns :: Lens' CreateAssessmentTemplate [Text]
createAssessmentTemplate_rulesPackageArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssessmentTemplate' {[Text]
rulesPackageArns :: [Text]
$sel:rulesPackageArns:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> [Text]
rulesPackageArns} -> [Text]
rulesPackageArns) (\s :: CreateAssessmentTemplate
s@CreateAssessmentTemplate' {} [Text]
a -> CreateAssessmentTemplate
s {$sel:rulesPackageArns:CreateAssessmentTemplate' :: [Text]
rulesPackageArns = [Text]
a} :: CreateAssessmentTemplate) 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

instance Core.AWSRequest CreateAssessmentTemplate where
  type
    AWSResponse CreateAssessmentTemplate =
      CreateAssessmentTemplateResponse
  request :: (Service -> Service)
-> CreateAssessmentTemplate -> Request CreateAssessmentTemplate
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 CreateAssessmentTemplate
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateAssessmentTemplate)))
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 -> CreateAssessmentTemplateResponse
CreateAssessmentTemplateResponse'
            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
"assessmentTemplateArn")
      )

instance Prelude.Hashable CreateAssessmentTemplate where
  hashWithSalt :: Int -> CreateAssessmentTemplate -> Int
hashWithSalt Int
_salt CreateAssessmentTemplate' {Natural
[Text]
Maybe [Attribute]
Text
rulesPackageArns :: [Text]
durationInSeconds :: Natural
assessmentTemplateName :: Text
assessmentTargetArn :: Text
userAttributesForFindings :: Maybe [Attribute]
$sel:rulesPackageArns:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> [Text]
$sel:durationInSeconds:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Natural
$sel:assessmentTemplateName:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Text
$sel:assessmentTargetArn:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Text
$sel:userAttributesForFindings:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Maybe [Attribute]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Attribute]
userAttributesForFindings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
assessmentTargetArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
assessmentTemplateName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
durationInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Text]
rulesPackageArns

instance Prelude.NFData CreateAssessmentTemplate where
  rnf :: CreateAssessmentTemplate -> ()
rnf CreateAssessmentTemplate' {Natural
[Text]
Maybe [Attribute]
Text
rulesPackageArns :: [Text]
durationInSeconds :: Natural
assessmentTemplateName :: Text
assessmentTargetArn :: Text
userAttributesForFindings :: Maybe [Attribute]
$sel:rulesPackageArns:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> [Text]
$sel:durationInSeconds:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Natural
$sel:assessmentTemplateName:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Text
$sel:assessmentTargetArn:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Text
$sel:userAttributesForFindings:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Maybe [Attribute]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Attribute]
userAttributesForFindings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
assessmentTargetArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
assessmentTemplateName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
durationInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Text]
rulesPackageArns

instance Data.ToHeaders CreateAssessmentTemplate where
  toHeaders :: CreateAssessmentTemplate -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"InspectorService.CreateAssessmentTemplate" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateAssessmentTemplate where
  toJSON :: CreateAssessmentTemplate -> Value
toJSON CreateAssessmentTemplate' {Natural
[Text]
Maybe [Attribute]
Text
rulesPackageArns :: [Text]
durationInSeconds :: Natural
assessmentTemplateName :: Text
assessmentTargetArn :: Text
userAttributesForFindings :: Maybe [Attribute]
$sel:rulesPackageArns:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> [Text]
$sel:durationInSeconds:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Natural
$sel:assessmentTemplateName:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Text
$sel:assessmentTargetArn:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Text
$sel:userAttributesForFindings:CreateAssessmentTemplate' :: CreateAssessmentTemplate -> Maybe [Attribute]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"userAttributesForFindings" 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 [Attribute]
userAttributesForFindings,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"assessmentTargetArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
assessmentTargetArn),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"assessmentTemplateName"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
assessmentTemplateName
              ),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"durationInSeconds" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Natural
durationInSeconds),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"rulesPackageArns" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [Text]
rulesPackageArns)
          ]
      )

instance Data.ToPath CreateAssessmentTemplate where
  toPath :: CreateAssessmentTemplate -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

-- |
-- Create a value of 'CreateAssessmentTemplateResponse' 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', 'createAssessmentTemplateResponse_httpStatus' - The response's http status code.
--
-- 'assessmentTemplateArn', 'createAssessmentTemplateResponse_assessmentTemplateArn' - The ARN that specifies the assessment template that is created.
newCreateAssessmentTemplateResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'assessmentTemplateArn'
  Prelude.Text ->
  CreateAssessmentTemplateResponse
newCreateAssessmentTemplateResponse :: Int -> Text -> CreateAssessmentTemplateResponse
newCreateAssessmentTemplateResponse
  Int
pHttpStatus_
  Text
pAssessmentTemplateArn_ =
    CreateAssessmentTemplateResponse'
      { $sel:httpStatus:CreateAssessmentTemplateResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:assessmentTemplateArn:CreateAssessmentTemplateResponse' :: Text
assessmentTemplateArn =
          Text
pAssessmentTemplateArn_
      }

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

-- | The ARN that specifies the assessment template that is created.
createAssessmentTemplateResponse_assessmentTemplateArn :: Lens.Lens' CreateAssessmentTemplateResponse Prelude.Text
createAssessmentTemplateResponse_assessmentTemplateArn :: Lens' CreateAssessmentTemplateResponse Text
createAssessmentTemplateResponse_assessmentTemplateArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssessmentTemplateResponse' {Text
assessmentTemplateArn :: Text
$sel:assessmentTemplateArn:CreateAssessmentTemplateResponse' :: CreateAssessmentTemplateResponse -> Text
assessmentTemplateArn} -> Text
assessmentTemplateArn) (\s :: CreateAssessmentTemplateResponse
s@CreateAssessmentTemplateResponse' {} Text
a -> CreateAssessmentTemplateResponse
s {$sel:assessmentTemplateArn:CreateAssessmentTemplateResponse' :: Text
assessmentTemplateArn = Text
a} :: CreateAssessmentTemplateResponse)

instance
  Prelude.NFData
    CreateAssessmentTemplateResponse
  where
  rnf :: CreateAssessmentTemplateResponse -> ()
rnf CreateAssessmentTemplateResponse' {Int
Text
assessmentTemplateArn :: Text
httpStatus :: Int
$sel:assessmentTemplateArn:CreateAssessmentTemplateResponse' :: CreateAssessmentTemplateResponse -> Text
$sel:httpStatus:CreateAssessmentTemplateResponse' :: CreateAssessmentTemplateResponse -> 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
assessmentTemplateArn