{-# 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.ServiceCatalog.CreateProvisioningArtifact
-- 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 provisioning artifact (also known as a version) for the
-- specified product.
--
-- You cannot create a provisioning artifact for a product that was shared
-- with you.
--
-- The user or role that performs this operation must have the
-- @cloudformation:GetTemplate@ IAM policy permission. This policy
-- permission is required when using the @ImportFromPhysicalId@ template
-- source in the information data section.
module Amazonka.ServiceCatalog.CreateProvisioningArtifact
  ( -- * Creating a Request
    CreateProvisioningArtifact (..),
    newCreateProvisioningArtifact,

    -- * Request Lenses
    createProvisioningArtifact_acceptLanguage,
    createProvisioningArtifact_productId,
    createProvisioningArtifact_parameters,
    createProvisioningArtifact_idempotencyToken,

    -- * Destructuring the Response
    CreateProvisioningArtifactResponse (..),
    newCreateProvisioningArtifactResponse,

    -- * Response Lenses
    createProvisioningArtifactResponse_info,
    createProvisioningArtifactResponse_provisioningArtifactDetail,
    createProvisioningArtifactResponse_status,
    createProvisioningArtifactResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateProvisioningArtifact' smart constructor.
data CreateProvisioningArtifact = CreateProvisioningArtifact'
  { -- | The language code.
    --
    -- -   @en@ - English (default)
    --
    -- -   @jp@ - Japanese
    --
    -- -   @zh@ - Chinese
    CreateProvisioningArtifact -> Maybe Text
acceptLanguage :: Prelude.Maybe Prelude.Text,
    -- | The product identifier.
    CreateProvisioningArtifact -> Text
productId :: Prelude.Text,
    -- | The configuration for the provisioning artifact.
    CreateProvisioningArtifact -> ProvisioningArtifactProperties
parameters :: ProvisioningArtifactProperties,
    -- | A unique identifier that you provide to ensure idempotency. If multiple
    -- requests differ only by the idempotency token, the same response is
    -- returned for each repeated request.
    CreateProvisioningArtifact -> Text
idempotencyToken :: Prelude.Text
  }
  deriving (CreateProvisioningArtifact -> CreateProvisioningArtifact -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateProvisioningArtifact -> CreateProvisioningArtifact -> Bool
$c/= :: CreateProvisioningArtifact -> CreateProvisioningArtifact -> Bool
== :: CreateProvisioningArtifact -> CreateProvisioningArtifact -> Bool
$c== :: CreateProvisioningArtifact -> CreateProvisioningArtifact -> Bool
Prelude.Eq, ReadPrec [CreateProvisioningArtifact]
ReadPrec CreateProvisioningArtifact
Int -> ReadS CreateProvisioningArtifact
ReadS [CreateProvisioningArtifact]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateProvisioningArtifact]
$creadListPrec :: ReadPrec [CreateProvisioningArtifact]
readPrec :: ReadPrec CreateProvisioningArtifact
$creadPrec :: ReadPrec CreateProvisioningArtifact
readList :: ReadS [CreateProvisioningArtifact]
$creadList :: ReadS [CreateProvisioningArtifact]
readsPrec :: Int -> ReadS CreateProvisioningArtifact
$creadsPrec :: Int -> ReadS CreateProvisioningArtifact
Prelude.Read, Int -> CreateProvisioningArtifact -> ShowS
[CreateProvisioningArtifact] -> ShowS
CreateProvisioningArtifact -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateProvisioningArtifact] -> ShowS
$cshowList :: [CreateProvisioningArtifact] -> ShowS
show :: CreateProvisioningArtifact -> String
$cshow :: CreateProvisioningArtifact -> String
showsPrec :: Int -> CreateProvisioningArtifact -> ShowS
$cshowsPrec :: Int -> CreateProvisioningArtifact -> ShowS
Prelude.Show, forall x.
Rep CreateProvisioningArtifact x -> CreateProvisioningArtifact
forall x.
CreateProvisioningArtifact -> Rep CreateProvisioningArtifact x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateProvisioningArtifact x -> CreateProvisioningArtifact
$cfrom :: forall x.
CreateProvisioningArtifact -> Rep CreateProvisioningArtifact x
Prelude.Generic)

-- |
-- Create a value of 'CreateProvisioningArtifact' 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:
--
-- 'acceptLanguage', 'createProvisioningArtifact_acceptLanguage' - The language code.
--
-- -   @en@ - English (default)
--
-- -   @jp@ - Japanese
--
-- -   @zh@ - Chinese
--
-- 'productId', 'createProvisioningArtifact_productId' - The product identifier.
--
-- 'parameters', 'createProvisioningArtifact_parameters' - The configuration for the provisioning artifact.
--
-- 'idempotencyToken', 'createProvisioningArtifact_idempotencyToken' - A unique identifier that you provide to ensure idempotency. If multiple
-- requests differ only by the idempotency token, the same response is
-- returned for each repeated request.
newCreateProvisioningArtifact ::
  -- | 'productId'
  Prelude.Text ->
  -- | 'parameters'
  ProvisioningArtifactProperties ->
  -- | 'idempotencyToken'
  Prelude.Text ->
  CreateProvisioningArtifact
newCreateProvisioningArtifact :: Text
-> ProvisioningArtifactProperties
-> Text
-> CreateProvisioningArtifact
newCreateProvisioningArtifact
  Text
pProductId_
  ProvisioningArtifactProperties
pParameters_
  Text
pIdempotencyToken_ =
    CreateProvisioningArtifact'
      { $sel:acceptLanguage:CreateProvisioningArtifact' :: Maybe Text
acceptLanguage =
          forall a. Maybe a
Prelude.Nothing,
        $sel:productId:CreateProvisioningArtifact' :: Text
productId = Text
pProductId_,
        $sel:parameters:CreateProvisioningArtifact' :: ProvisioningArtifactProperties
parameters = ProvisioningArtifactProperties
pParameters_,
        $sel:idempotencyToken:CreateProvisioningArtifact' :: Text
idempotencyToken = Text
pIdempotencyToken_
      }

-- | The language code.
--
-- -   @en@ - English (default)
--
-- -   @jp@ - Japanese
--
-- -   @zh@ - Chinese
createProvisioningArtifact_acceptLanguage :: Lens.Lens' CreateProvisioningArtifact (Prelude.Maybe Prelude.Text)
createProvisioningArtifact_acceptLanguage :: Lens' CreateProvisioningArtifact (Maybe Text)
createProvisioningArtifact_acceptLanguage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateProvisioningArtifact' {Maybe Text
acceptLanguage :: Maybe Text
$sel:acceptLanguage:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Maybe Text
acceptLanguage} -> Maybe Text
acceptLanguage) (\s :: CreateProvisioningArtifact
s@CreateProvisioningArtifact' {} Maybe Text
a -> CreateProvisioningArtifact
s {$sel:acceptLanguage:CreateProvisioningArtifact' :: Maybe Text
acceptLanguage = Maybe Text
a} :: CreateProvisioningArtifact)

-- | The product identifier.
createProvisioningArtifact_productId :: Lens.Lens' CreateProvisioningArtifact Prelude.Text
createProvisioningArtifact_productId :: Lens' CreateProvisioningArtifact Text
createProvisioningArtifact_productId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateProvisioningArtifact' {Text
productId :: Text
$sel:productId:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Text
productId} -> Text
productId) (\s :: CreateProvisioningArtifact
s@CreateProvisioningArtifact' {} Text
a -> CreateProvisioningArtifact
s {$sel:productId:CreateProvisioningArtifact' :: Text
productId = Text
a} :: CreateProvisioningArtifact)

-- | The configuration for the provisioning artifact.
createProvisioningArtifact_parameters :: Lens.Lens' CreateProvisioningArtifact ProvisioningArtifactProperties
createProvisioningArtifact_parameters :: Lens' CreateProvisioningArtifact ProvisioningArtifactProperties
createProvisioningArtifact_parameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateProvisioningArtifact' {ProvisioningArtifactProperties
parameters :: ProvisioningArtifactProperties
$sel:parameters:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> ProvisioningArtifactProperties
parameters} -> ProvisioningArtifactProperties
parameters) (\s :: CreateProvisioningArtifact
s@CreateProvisioningArtifact' {} ProvisioningArtifactProperties
a -> CreateProvisioningArtifact
s {$sel:parameters:CreateProvisioningArtifact' :: ProvisioningArtifactProperties
parameters = ProvisioningArtifactProperties
a} :: CreateProvisioningArtifact)

-- | A unique identifier that you provide to ensure idempotency. If multiple
-- requests differ only by the idempotency token, the same response is
-- returned for each repeated request.
createProvisioningArtifact_idempotencyToken :: Lens.Lens' CreateProvisioningArtifact Prelude.Text
createProvisioningArtifact_idempotencyToken :: Lens' CreateProvisioningArtifact Text
createProvisioningArtifact_idempotencyToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateProvisioningArtifact' {Text
idempotencyToken :: Text
$sel:idempotencyToken:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Text
idempotencyToken} -> Text
idempotencyToken) (\s :: CreateProvisioningArtifact
s@CreateProvisioningArtifact' {} Text
a -> CreateProvisioningArtifact
s {$sel:idempotencyToken:CreateProvisioningArtifact' :: Text
idempotencyToken = Text
a} :: CreateProvisioningArtifact)

instance Core.AWSRequest CreateProvisioningArtifact where
  type
    AWSResponse CreateProvisioningArtifact =
      CreateProvisioningArtifactResponse
  request :: (Service -> Service)
-> CreateProvisioningArtifact -> Request CreateProvisioningArtifact
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 CreateProvisioningArtifact
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateProvisioningArtifact)))
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 (HashMap Text Text)
-> Maybe ProvisioningArtifactDetail
-> Maybe RequestStatus
-> Int
-> CreateProvisioningArtifactResponse
CreateProvisioningArtifactResponse'
            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
"Info" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            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
"ProvisioningArtifactDetail")
            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
"Status")
            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 CreateProvisioningArtifact where
  hashWithSalt :: Int -> CreateProvisioningArtifact -> Int
hashWithSalt Int
_salt CreateProvisioningArtifact' {Maybe Text
Text
ProvisioningArtifactProperties
idempotencyToken :: Text
parameters :: ProvisioningArtifactProperties
productId :: Text
acceptLanguage :: Maybe Text
$sel:idempotencyToken:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Text
$sel:parameters:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> ProvisioningArtifactProperties
$sel:productId:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Text
$sel:acceptLanguage:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
acceptLanguage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
productId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ProvisioningArtifactProperties
parameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
idempotencyToken

instance Prelude.NFData CreateProvisioningArtifact where
  rnf :: CreateProvisioningArtifact -> ()
rnf CreateProvisioningArtifact' {Maybe Text
Text
ProvisioningArtifactProperties
idempotencyToken :: Text
parameters :: ProvisioningArtifactProperties
productId :: Text
acceptLanguage :: Maybe Text
$sel:idempotencyToken:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Text
$sel:parameters:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> ProvisioningArtifactProperties
$sel:productId:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Text
$sel:acceptLanguage:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
acceptLanguage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
productId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ProvisioningArtifactProperties
parameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
idempotencyToken

instance Data.ToHeaders CreateProvisioningArtifact where
  toHeaders :: CreateProvisioningArtifact -> 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
"AWS242ServiceCatalogService.CreateProvisioningArtifact" ::
                          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 CreateProvisioningArtifact where
  toJSON :: CreateProvisioningArtifact -> Value
toJSON CreateProvisioningArtifact' {Maybe Text
Text
ProvisioningArtifactProperties
idempotencyToken :: Text
parameters :: ProvisioningArtifactProperties
productId :: Text
acceptLanguage :: Maybe Text
$sel:idempotencyToken:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Text
$sel:parameters:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> ProvisioningArtifactProperties
$sel:productId:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Text
$sel:acceptLanguage:CreateProvisioningArtifact' :: CreateProvisioningArtifact -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AcceptLanguage" 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
acceptLanguage,
            forall a. a -> Maybe a
Prelude.Just (Key
"ProductId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
productId),
            forall a. a -> Maybe a
Prelude.Just (Key
"Parameters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ProvisioningArtifactProperties
parameters),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"IdempotencyToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
idempotencyToken)
          ]
      )

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

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

-- | /See:/ 'newCreateProvisioningArtifactResponse' smart constructor.
data CreateProvisioningArtifactResponse = CreateProvisioningArtifactResponse'
  { -- | Specify the template source with one of the following options, but not
    -- both. Keys accepted: [ @LoadTemplateFromURL@, @ImportFromPhysicalId@ ].
    --
    -- Use the URL of the CloudFormation template in Amazon S3 or GitHub in
    -- JSON format.
    --
    -- @LoadTemplateFromURL@
    --
    -- Use the URL of the CloudFormation template in Amazon S3 or GitHub in
    -- JSON format.
    --
    -- @ImportFromPhysicalId@
    --
    -- Use the physical id of the resource that contains the template;
    -- currently supports CloudFormation stack ARN.
    CreateProvisioningArtifactResponse -> Maybe (HashMap Text Text)
info :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Information about the provisioning artifact.
    CreateProvisioningArtifactResponse
-> Maybe ProvisioningArtifactDetail
provisioningArtifactDetail :: Prelude.Maybe ProvisioningArtifactDetail,
    -- | The status of the current request.
    CreateProvisioningArtifactResponse -> Maybe RequestStatus
status :: Prelude.Maybe RequestStatus,
    -- | The response's http status code.
    CreateProvisioningArtifactResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateProvisioningArtifactResponse
-> CreateProvisioningArtifactResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateProvisioningArtifactResponse
-> CreateProvisioningArtifactResponse -> Bool
$c/= :: CreateProvisioningArtifactResponse
-> CreateProvisioningArtifactResponse -> Bool
== :: CreateProvisioningArtifactResponse
-> CreateProvisioningArtifactResponse -> Bool
$c== :: CreateProvisioningArtifactResponse
-> CreateProvisioningArtifactResponse -> Bool
Prelude.Eq, ReadPrec [CreateProvisioningArtifactResponse]
ReadPrec CreateProvisioningArtifactResponse
Int -> ReadS CreateProvisioningArtifactResponse
ReadS [CreateProvisioningArtifactResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateProvisioningArtifactResponse]
$creadListPrec :: ReadPrec [CreateProvisioningArtifactResponse]
readPrec :: ReadPrec CreateProvisioningArtifactResponse
$creadPrec :: ReadPrec CreateProvisioningArtifactResponse
readList :: ReadS [CreateProvisioningArtifactResponse]
$creadList :: ReadS [CreateProvisioningArtifactResponse]
readsPrec :: Int -> ReadS CreateProvisioningArtifactResponse
$creadsPrec :: Int -> ReadS CreateProvisioningArtifactResponse
Prelude.Read, Int -> CreateProvisioningArtifactResponse -> ShowS
[CreateProvisioningArtifactResponse] -> ShowS
CreateProvisioningArtifactResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateProvisioningArtifactResponse] -> ShowS
$cshowList :: [CreateProvisioningArtifactResponse] -> ShowS
show :: CreateProvisioningArtifactResponse -> String
$cshow :: CreateProvisioningArtifactResponse -> String
showsPrec :: Int -> CreateProvisioningArtifactResponse -> ShowS
$cshowsPrec :: Int -> CreateProvisioningArtifactResponse -> ShowS
Prelude.Show, forall x.
Rep CreateProvisioningArtifactResponse x
-> CreateProvisioningArtifactResponse
forall x.
CreateProvisioningArtifactResponse
-> Rep CreateProvisioningArtifactResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateProvisioningArtifactResponse x
-> CreateProvisioningArtifactResponse
$cfrom :: forall x.
CreateProvisioningArtifactResponse
-> Rep CreateProvisioningArtifactResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateProvisioningArtifactResponse' 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:
--
-- 'info', 'createProvisioningArtifactResponse_info' - Specify the template source with one of the following options, but not
-- both. Keys accepted: [ @LoadTemplateFromURL@, @ImportFromPhysicalId@ ].
--
-- Use the URL of the CloudFormation template in Amazon S3 or GitHub in
-- JSON format.
--
-- @LoadTemplateFromURL@
--
-- Use the URL of the CloudFormation template in Amazon S3 or GitHub in
-- JSON format.
--
-- @ImportFromPhysicalId@
--
-- Use the physical id of the resource that contains the template;
-- currently supports CloudFormation stack ARN.
--
-- 'provisioningArtifactDetail', 'createProvisioningArtifactResponse_provisioningArtifactDetail' - Information about the provisioning artifact.
--
-- 'status', 'createProvisioningArtifactResponse_status' - The status of the current request.
--
-- 'httpStatus', 'createProvisioningArtifactResponse_httpStatus' - The response's http status code.
newCreateProvisioningArtifactResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateProvisioningArtifactResponse
newCreateProvisioningArtifactResponse :: Int -> CreateProvisioningArtifactResponse
newCreateProvisioningArtifactResponse Int
pHttpStatus_ =
  CreateProvisioningArtifactResponse'
    { $sel:info:CreateProvisioningArtifactResponse' :: Maybe (HashMap Text Text)
info =
        forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningArtifactDetail:CreateProvisioningArtifactResponse' :: Maybe ProvisioningArtifactDetail
provisioningArtifactDetail =
        forall a. Maybe a
Prelude.Nothing,
      $sel:status:CreateProvisioningArtifactResponse' :: Maybe RequestStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateProvisioningArtifactResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Specify the template source with one of the following options, but not
-- both. Keys accepted: [ @LoadTemplateFromURL@, @ImportFromPhysicalId@ ].
--
-- Use the URL of the CloudFormation template in Amazon S3 or GitHub in
-- JSON format.
--
-- @LoadTemplateFromURL@
--
-- Use the URL of the CloudFormation template in Amazon S3 or GitHub in
-- JSON format.
--
-- @ImportFromPhysicalId@
--
-- Use the physical id of the resource that contains the template;
-- currently supports CloudFormation stack ARN.
createProvisioningArtifactResponse_info :: Lens.Lens' CreateProvisioningArtifactResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createProvisioningArtifactResponse_info :: Lens'
  CreateProvisioningArtifactResponse (Maybe (HashMap Text Text))
createProvisioningArtifactResponse_info = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateProvisioningArtifactResponse' {Maybe (HashMap Text Text)
info :: Maybe (HashMap Text Text)
$sel:info:CreateProvisioningArtifactResponse' :: CreateProvisioningArtifactResponse -> Maybe (HashMap Text Text)
info} -> Maybe (HashMap Text Text)
info) (\s :: CreateProvisioningArtifactResponse
s@CreateProvisioningArtifactResponse' {} Maybe (HashMap Text Text)
a -> CreateProvisioningArtifactResponse
s {$sel:info:CreateProvisioningArtifactResponse' :: Maybe (HashMap Text Text)
info = Maybe (HashMap Text Text)
a} :: CreateProvisioningArtifactResponse) 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

-- | Information about the provisioning artifact.
createProvisioningArtifactResponse_provisioningArtifactDetail :: Lens.Lens' CreateProvisioningArtifactResponse (Prelude.Maybe ProvisioningArtifactDetail)
createProvisioningArtifactResponse_provisioningArtifactDetail :: Lens'
  CreateProvisioningArtifactResponse
  (Maybe ProvisioningArtifactDetail)
createProvisioningArtifactResponse_provisioningArtifactDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateProvisioningArtifactResponse' {Maybe ProvisioningArtifactDetail
provisioningArtifactDetail :: Maybe ProvisioningArtifactDetail
$sel:provisioningArtifactDetail:CreateProvisioningArtifactResponse' :: CreateProvisioningArtifactResponse
-> Maybe ProvisioningArtifactDetail
provisioningArtifactDetail} -> Maybe ProvisioningArtifactDetail
provisioningArtifactDetail) (\s :: CreateProvisioningArtifactResponse
s@CreateProvisioningArtifactResponse' {} Maybe ProvisioningArtifactDetail
a -> CreateProvisioningArtifactResponse
s {$sel:provisioningArtifactDetail:CreateProvisioningArtifactResponse' :: Maybe ProvisioningArtifactDetail
provisioningArtifactDetail = Maybe ProvisioningArtifactDetail
a} :: CreateProvisioningArtifactResponse)

-- | The status of the current request.
createProvisioningArtifactResponse_status :: Lens.Lens' CreateProvisioningArtifactResponse (Prelude.Maybe RequestStatus)
createProvisioningArtifactResponse_status :: Lens' CreateProvisioningArtifactResponse (Maybe RequestStatus)
createProvisioningArtifactResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateProvisioningArtifactResponse' {Maybe RequestStatus
status :: Maybe RequestStatus
$sel:status:CreateProvisioningArtifactResponse' :: CreateProvisioningArtifactResponse -> Maybe RequestStatus
status} -> Maybe RequestStatus
status) (\s :: CreateProvisioningArtifactResponse
s@CreateProvisioningArtifactResponse' {} Maybe RequestStatus
a -> CreateProvisioningArtifactResponse
s {$sel:status:CreateProvisioningArtifactResponse' :: Maybe RequestStatus
status = Maybe RequestStatus
a} :: CreateProvisioningArtifactResponse)

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

instance
  Prelude.NFData
    CreateProvisioningArtifactResponse
  where
  rnf :: CreateProvisioningArtifactResponse -> ()
rnf CreateProvisioningArtifactResponse' {Int
Maybe (HashMap Text Text)
Maybe ProvisioningArtifactDetail
Maybe RequestStatus
httpStatus :: Int
status :: Maybe RequestStatus
provisioningArtifactDetail :: Maybe ProvisioningArtifactDetail
info :: Maybe (HashMap Text Text)
$sel:httpStatus:CreateProvisioningArtifactResponse' :: CreateProvisioningArtifactResponse -> Int
$sel:status:CreateProvisioningArtifactResponse' :: CreateProvisioningArtifactResponse -> Maybe RequestStatus
$sel:provisioningArtifactDetail:CreateProvisioningArtifactResponse' :: CreateProvisioningArtifactResponse
-> Maybe ProvisioningArtifactDetail
$sel:info:CreateProvisioningArtifactResponse' :: CreateProvisioningArtifactResponse -> Maybe (HashMap Text Text)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
info
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProvisioningArtifactDetail
provisioningArtifactDetail
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RequestStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus