{-# 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.UpdateProvisioningArtifact
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates the specified provisioning artifact (also known as a version)
-- for the specified product.
--
-- You cannot update a provisioning artifact for a product that was shared
-- with you.
module Amazonka.ServiceCatalog.UpdateProvisioningArtifact
  ( -- * Creating a Request
    UpdateProvisioningArtifact (..),
    newUpdateProvisioningArtifact,

    -- * Request Lenses
    updateProvisioningArtifact_acceptLanguage,
    updateProvisioningArtifact_active,
    updateProvisioningArtifact_description,
    updateProvisioningArtifact_guidance,
    updateProvisioningArtifact_name,
    updateProvisioningArtifact_productId,
    updateProvisioningArtifact_provisioningArtifactId,

    -- * Destructuring the Response
    UpdateProvisioningArtifactResponse (..),
    newUpdateProvisioningArtifactResponse,

    -- * Response Lenses
    updateProvisioningArtifactResponse_info,
    updateProvisioningArtifactResponse_provisioningArtifactDetail,
    updateProvisioningArtifactResponse_status,
    updateProvisioningArtifactResponse_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:/ 'newUpdateProvisioningArtifact' smart constructor.
data UpdateProvisioningArtifact = UpdateProvisioningArtifact'
  { -- | The language code.
    --
    -- -   @en@ - English (default)
    --
    -- -   @jp@ - Japanese
    --
    -- -   @zh@ - Chinese
    UpdateProvisioningArtifact -> Maybe Text
acceptLanguage :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether the product version is active.
    --
    -- Inactive provisioning artifacts are invisible to end users. End users
    -- cannot launch or update a provisioned product from an inactive
    -- provisioning artifact.
    UpdateProvisioningArtifact -> Maybe Bool
active :: Prelude.Maybe Prelude.Bool,
    -- | The updated description of the provisioning artifact.
    UpdateProvisioningArtifact -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Information set by the administrator to provide guidance to end users
    -- about which provisioning artifacts to use.
    --
    -- The @DEFAULT@ value indicates that the product version is active.
    --
    -- The administrator can set the guidance to @DEPRECATED@ to inform users
    -- that the product version is deprecated. Users are able to make updates
    -- to a provisioned product of a deprecated version but cannot launch new
    -- provisioned products using a deprecated version.
    UpdateProvisioningArtifact -> Maybe ProvisioningArtifactGuidance
guidance :: Prelude.Maybe ProvisioningArtifactGuidance,
    -- | The updated name of the provisioning artifact.
    UpdateProvisioningArtifact -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The product identifier.
    UpdateProvisioningArtifact -> Text
productId :: Prelude.Text,
    -- | The identifier of the provisioning artifact.
    UpdateProvisioningArtifact -> Text
provisioningArtifactId :: Prelude.Text
  }
  deriving (UpdateProvisioningArtifact -> UpdateProvisioningArtifact -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateProvisioningArtifact -> UpdateProvisioningArtifact -> Bool
$c/= :: UpdateProvisioningArtifact -> UpdateProvisioningArtifact -> Bool
== :: UpdateProvisioningArtifact -> UpdateProvisioningArtifact -> Bool
$c== :: UpdateProvisioningArtifact -> UpdateProvisioningArtifact -> Bool
Prelude.Eq, ReadPrec [UpdateProvisioningArtifact]
ReadPrec UpdateProvisioningArtifact
Int -> ReadS UpdateProvisioningArtifact
ReadS [UpdateProvisioningArtifact]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateProvisioningArtifact]
$creadListPrec :: ReadPrec [UpdateProvisioningArtifact]
readPrec :: ReadPrec UpdateProvisioningArtifact
$creadPrec :: ReadPrec UpdateProvisioningArtifact
readList :: ReadS [UpdateProvisioningArtifact]
$creadList :: ReadS [UpdateProvisioningArtifact]
readsPrec :: Int -> ReadS UpdateProvisioningArtifact
$creadsPrec :: Int -> ReadS UpdateProvisioningArtifact
Prelude.Read, Int -> UpdateProvisioningArtifact -> ShowS
[UpdateProvisioningArtifact] -> ShowS
UpdateProvisioningArtifact -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateProvisioningArtifact] -> ShowS
$cshowList :: [UpdateProvisioningArtifact] -> ShowS
show :: UpdateProvisioningArtifact -> String
$cshow :: UpdateProvisioningArtifact -> String
showsPrec :: Int -> UpdateProvisioningArtifact -> ShowS
$cshowsPrec :: Int -> UpdateProvisioningArtifact -> ShowS
Prelude.Show, forall x.
Rep UpdateProvisioningArtifact x -> UpdateProvisioningArtifact
forall x.
UpdateProvisioningArtifact -> Rep UpdateProvisioningArtifact x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateProvisioningArtifact x -> UpdateProvisioningArtifact
$cfrom :: forall x.
UpdateProvisioningArtifact -> Rep UpdateProvisioningArtifact x
Prelude.Generic)

-- |
-- Create a value of 'UpdateProvisioningArtifact' 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', 'updateProvisioningArtifact_acceptLanguage' - The language code.
--
-- -   @en@ - English (default)
--
-- -   @jp@ - Japanese
--
-- -   @zh@ - Chinese
--
-- 'active', 'updateProvisioningArtifact_active' - Indicates whether the product version is active.
--
-- Inactive provisioning artifacts are invisible to end users. End users
-- cannot launch or update a provisioned product from an inactive
-- provisioning artifact.
--
-- 'description', 'updateProvisioningArtifact_description' - The updated description of the provisioning artifact.
--
-- 'guidance', 'updateProvisioningArtifact_guidance' - Information set by the administrator to provide guidance to end users
-- about which provisioning artifacts to use.
--
-- The @DEFAULT@ value indicates that the product version is active.
--
-- The administrator can set the guidance to @DEPRECATED@ to inform users
-- that the product version is deprecated. Users are able to make updates
-- to a provisioned product of a deprecated version but cannot launch new
-- provisioned products using a deprecated version.
--
-- 'name', 'updateProvisioningArtifact_name' - The updated name of the provisioning artifact.
--
-- 'productId', 'updateProvisioningArtifact_productId' - The product identifier.
--
-- 'provisioningArtifactId', 'updateProvisioningArtifact_provisioningArtifactId' - The identifier of the provisioning artifact.
newUpdateProvisioningArtifact ::
  -- | 'productId'
  Prelude.Text ->
  -- | 'provisioningArtifactId'
  Prelude.Text ->
  UpdateProvisioningArtifact
newUpdateProvisioningArtifact :: Text -> Text -> UpdateProvisioningArtifact
newUpdateProvisioningArtifact
  Text
pProductId_
  Text
pProvisioningArtifactId_ =
    UpdateProvisioningArtifact'
      { $sel:acceptLanguage:UpdateProvisioningArtifact' :: Maybe Text
acceptLanguage =
          forall a. Maybe a
Prelude.Nothing,
        $sel:active:UpdateProvisioningArtifact' :: Maybe Bool
active = forall a. Maybe a
Prelude.Nothing,
        $sel:description:UpdateProvisioningArtifact' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
        $sel:guidance:UpdateProvisioningArtifact' :: Maybe ProvisioningArtifactGuidance
guidance = forall a. Maybe a
Prelude.Nothing,
        $sel:name:UpdateProvisioningArtifact' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
        $sel:productId:UpdateProvisioningArtifact' :: Text
productId = Text
pProductId_,
        $sel:provisioningArtifactId:UpdateProvisioningArtifact' :: Text
provisioningArtifactId =
          Text
pProvisioningArtifactId_
      }

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

-- | Indicates whether the product version is active.
--
-- Inactive provisioning artifacts are invisible to end users. End users
-- cannot launch or update a provisioned product from an inactive
-- provisioning artifact.
updateProvisioningArtifact_active :: Lens.Lens' UpdateProvisioningArtifact (Prelude.Maybe Prelude.Bool)
updateProvisioningArtifact_active :: Lens' UpdateProvisioningArtifact (Maybe Bool)
updateProvisioningArtifact_active = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningArtifact' {Maybe Bool
active :: Maybe Bool
$sel:active:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Bool
active} -> Maybe Bool
active) (\s :: UpdateProvisioningArtifact
s@UpdateProvisioningArtifact' {} Maybe Bool
a -> UpdateProvisioningArtifact
s {$sel:active:UpdateProvisioningArtifact' :: Maybe Bool
active = Maybe Bool
a} :: UpdateProvisioningArtifact)

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

-- | Information set by the administrator to provide guidance to end users
-- about which provisioning artifacts to use.
--
-- The @DEFAULT@ value indicates that the product version is active.
--
-- The administrator can set the guidance to @DEPRECATED@ to inform users
-- that the product version is deprecated. Users are able to make updates
-- to a provisioned product of a deprecated version but cannot launch new
-- provisioned products using a deprecated version.
updateProvisioningArtifact_guidance :: Lens.Lens' UpdateProvisioningArtifact (Prelude.Maybe ProvisioningArtifactGuidance)
updateProvisioningArtifact_guidance :: Lens'
  UpdateProvisioningArtifact (Maybe ProvisioningArtifactGuidance)
updateProvisioningArtifact_guidance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningArtifact' {Maybe ProvisioningArtifactGuidance
guidance :: Maybe ProvisioningArtifactGuidance
$sel:guidance:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe ProvisioningArtifactGuidance
guidance} -> Maybe ProvisioningArtifactGuidance
guidance) (\s :: UpdateProvisioningArtifact
s@UpdateProvisioningArtifact' {} Maybe ProvisioningArtifactGuidance
a -> UpdateProvisioningArtifact
s {$sel:guidance:UpdateProvisioningArtifact' :: Maybe ProvisioningArtifactGuidance
guidance = Maybe ProvisioningArtifactGuidance
a} :: UpdateProvisioningArtifact)

-- | The updated name of the provisioning artifact.
updateProvisioningArtifact_name :: Lens.Lens' UpdateProvisioningArtifact (Prelude.Maybe Prelude.Text)
updateProvisioningArtifact_name :: Lens' UpdateProvisioningArtifact (Maybe Text)
updateProvisioningArtifact_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningArtifact' {Maybe Text
name :: Maybe Text
$sel:name:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Text
name} -> Maybe Text
name) (\s :: UpdateProvisioningArtifact
s@UpdateProvisioningArtifact' {} Maybe Text
a -> UpdateProvisioningArtifact
s {$sel:name:UpdateProvisioningArtifact' :: Maybe Text
name = Maybe Text
a} :: UpdateProvisioningArtifact)

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

-- | The identifier of the provisioning artifact.
updateProvisioningArtifact_provisioningArtifactId :: Lens.Lens' UpdateProvisioningArtifact Prelude.Text
updateProvisioningArtifact_provisioningArtifactId :: Lens' UpdateProvisioningArtifact Text
updateProvisioningArtifact_provisioningArtifactId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningArtifact' {Text
provisioningArtifactId :: Text
$sel:provisioningArtifactId:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Text
provisioningArtifactId} -> Text
provisioningArtifactId) (\s :: UpdateProvisioningArtifact
s@UpdateProvisioningArtifact' {} Text
a -> UpdateProvisioningArtifact
s {$sel:provisioningArtifactId:UpdateProvisioningArtifact' :: Text
provisioningArtifactId = Text
a} :: UpdateProvisioningArtifact)

instance Core.AWSRequest UpdateProvisioningArtifact where
  type
    AWSResponse UpdateProvisioningArtifact =
      UpdateProvisioningArtifactResponse
  request :: (Service -> Service)
-> UpdateProvisioningArtifact -> Request UpdateProvisioningArtifact
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 UpdateProvisioningArtifact
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateProvisioningArtifact)))
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
-> UpdateProvisioningArtifactResponse
UpdateProvisioningArtifactResponse'
            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 UpdateProvisioningArtifact where
  hashWithSalt :: Int -> UpdateProvisioningArtifact -> Int
hashWithSalt Int
_salt UpdateProvisioningArtifact' {Maybe Bool
Maybe Text
Maybe ProvisioningArtifactGuidance
Text
provisioningArtifactId :: Text
productId :: Text
name :: Maybe Text
guidance :: Maybe ProvisioningArtifactGuidance
description :: Maybe Text
active :: Maybe Bool
acceptLanguage :: Maybe Text
$sel:provisioningArtifactId:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Text
$sel:productId:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Text
$sel:name:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Text
$sel:guidance:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe ProvisioningArtifactGuidance
$sel:description:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Text
$sel:active:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Bool
$sel:acceptLanguage:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> 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` Maybe Bool
active
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProvisioningArtifactGuidance
guidance
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
productId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
provisioningArtifactId

instance Prelude.NFData UpdateProvisioningArtifact where
  rnf :: UpdateProvisioningArtifact -> ()
rnf UpdateProvisioningArtifact' {Maybe Bool
Maybe Text
Maybe ProvisioningArtifactGuidance
Text
provisioningArtifactId :: Text
productId :: Text
name :: Maybe Text
guidance :: Maybe ProvisioningArtifactGuidance
description :: Maybe Text
active :: Maybe Bool
acceptLanguage :: Maybe Text
$sel:provisioningArtifactId:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Text
$sel:productId:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Text
$sel:name:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Text
$sel:guidance:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe ProvisioningArtifactGuidance
$sel:description:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Text
$sel:active:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Bool
$sel:acceptLanguage:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> 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 Maybe Bool
active
      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 ProvisioningArtifactGuidance
guidance
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      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 Text
provisioningArtifactId

instance Data.ToHeaders UpdateProvisioningArtifact where
  toHeaders :: UpdateProvisioningArtifact -> 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.UpdateProvisioningArtifact" ::
                          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 UpdateProvisioningArtifact where
  toJSON :: UpdateProvisioningArtifact -> Value
toJSON UpdateProvisioningArtifact' {Maybe Bool
Maybe Text
Maybe ProvisioningArtifactGuidance
Text
provisioningArtifactId :: Text
productId :: Text
name :: Maybe Text
guidance :: Maybe ProvisioningArtifactGuidance
description :: Maybe Text
active :: Maybe Bool
acceptLanguage :: Maybe Text
$sel:provisioningArtifactId:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Text
$sel:productId:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Text
$sel:name:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Text
$sel:guidance:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe ProvisioningArtifactGuidance
$sel:description:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Text
$sel:active:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> Maybe Bool
$sel:acceptLanguage:UpdateProvisioningArtifact' :: UpdateProvisioningArtifact -> 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,
            (Key
"Active" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
active,
            (Key
"Description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"Guidance" 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 ProvisioningArtifactGuidance
guidance,
            (Key
"Name" 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
name,
            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
"ProvisioningArtifactId"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
provisioningArtifactId
              )
          ]
      )

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

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

-- | /See:/ 'newUpdateProvisioningArtifactResponse' smart constructor.
data UpdateProvisioningArtifactResponse = UpdateProvisioningArtifactResponse'
  { -- | The URL of the CloudFormation template in Amazon S3 or GitHub in JSON
    -- format.
    UpdateProvisioningArtifactResponse -> Maybe (HashMap Text Text)
info :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Information about the provisioning artifact.
    UpdateProvisioningArtifactResponse
-> Maybe ProvisioningArtifactDetail
provisioningArtifactDetail :: Prelude.Maybe ProvisioningArtifactDetail,
    -- | The status of the current request.
    UpdateProvisioningArtifactResponse -> Maybe RequestStatus
status :: Prelude.Maybe RequestStatus,
    -- | The response's http status code.
    UpdateProvisioningArtifactResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateProvisioningArtifactResponse
-> UpdateProvisioningArtifactResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateProvisioningArtifactResponse
-> UpdateProvisioningArtifactResponse -> Bool
$c/= :: UpdateProvisioningArtifactResponse
-> UpdateProvisioningArtifactResponse -> Bool
== :: UpdateProvisioningArtifactResponse
-> UpdateProvisioningArtifactResponse -> Bool
$c== :: UpdateProvisioningArtifactResponse
-> UpdateProvisioningArtifactResponse -> Bool
Prelude.Eq, ReadPrec [UpdateProvisioningArtifactResponse]
ReadPrec UpdateProvisioningArtifactResponse
Int -> ReadS UpdateProvisioningArtifactResponse
ReadS [UpdateProvisioningArtifactResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateProvisioningArtifactResponse]
$creadListPrec :: ReadPrec [UpdateProvisioningArtifactResponse]
readPrec :: ReadPrec UpdateProvisioningArtifactResponse
$creadPrec :: ReadPrec UpdateProvisioningArtifactResponse
readList :: ReadS [UpdateProvisioningArtifactResponse]
$creadList :: ReadS [UpdateProvisioningArtifactResponse]
readsPrec :: Int -> ReadS UpdateProvisioningArtifactResponse
$creadsPrec :: Int -> ReadS UpdateProvisioningArtifactResponse
Prelude.Read, Int -> UpdateProvisioningArtifactResponse -> ShowS
[UpdateProvisioningArtifactResponse] -> ShowS
UpdateProvisioningArtifactResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateProvisioningArtifactResponse] -> ShowS
$cshowList :: [UpdateProvisioningArtifactResponse] -> ShowS
show :: UpdateProvisioningArtifactResponse -> String
$cshow :: UpdateProvisioningArtifactResponse -> String
showsPrec :: Int -> UpdateProvisioningArtifactResponse -> ShowS
$cshowsPrec :: Int -> UpdateProvisioningArtifactResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateProvisioningArtifactResponse x
-> UpdateProvisioningArtifactResponse
forall x.
UpdateProvisioningArtifactResponse
-> Rep UpdateProvisioningArtifactResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateProvisioningArtifactResponse x
-> UpdateProvisioningArtifactResponse
$cfrom :: forall x.
UpdateProvisioningArtifactResponse
-> Rep UpdateProvisioningArtifactResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateProvisioningArtifactResponse' 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', 'updateProvisioningArtifactResponse_info' - The URL of the CloudFormation template in Amazon S3 or GitHub in JSON
-- format.
--
-- 'provisioningArtifactDetail', 'updateProvisioningArtifactResponse_provisioningArtifactDetail' - Information about the provisioning artifact.
--
-- 'status', 'updateProvisioningArtifactResponse_status' - The status of the current request.
--
-- 'httpStatus', 'updateProvisioningArtifactResponse_httpStatus' - The response's http status code.
newUpdateProvisioningArtifactResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateProvisioningArtifactResponse
newUpdateProvisioningArtifactResponse :: Int -> UpdateProvisioningArtifactResponse
newUpdateProvisioningArtifactResponse Int
pHttpStatus_ =
  UpdateProvisioningArtifactResponse'
    { $sel:info:UpdateProvisioningArtifactResponse' :: Maybe (HashMap Text Text)
info =
        forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningArtifactDetail:UpdateProvisioningArtifactResponse' :: Maybe ProvisioningArtifactDetail
provisioningArtifactDetail =
        forall a. Maybe a
Prelude.Nothing,
      $sel:status:UpdateProvisioningArtifactResponse' :: Maybe RequestStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateProvisioningArtifactResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The URL of the CloudFormation template in Amazon S3 or GitHub in JSON
-- format.
updateProvisioningArtifactResponse_info :: Lens.Lens' UpdateProvisioningArtifactResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
updateProvisioningArtifactResponse_info :: Lens'
  UpdateProvisioningArtifactResponse (Maybe (HashMap Text Text))
updateProvisioningArtifactResponse_info = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningArtifactResponse' {Maybe (HashMap Text Text)
info :: Maybe (HashMap Text Text)
$sel:info:UpdateProvisioningArtifactResponse' :: UpdateProvisioningArtifactResponse -> Maybe (HashMap Text Text)
info} -> Maybe (HashMap Text Text)
info) (\s :: UpdateProvisioningArtifactResponse
s@UpdateProvisioningArtifactResponse' {} Maybe (HashMap Text Text)
a -> UpdateProvisioningArtifactResponse
s {$sel:info:UpdateProvisioningArtifactResponse' :: Maybe (HashMap Text Text)
info = Maybe (HashMap Text Text)
a} :: UpdateProvisioningArtifactResponse) 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.
updateProvisioningArtifactResponse_provisioningArtifactDetail :: Lens.Lens' UpdateProvisioningArtifactResponse (Prelude.Maybe ProvisioningArtifactDetail)
updateProvisioningArtifactResponse_provisioningArtifactDetail :: Lens'
  UpdateProvisioningArtifactResponse
  (Maybe ProvisioningArtifactDetail)
updateProvisioningArtifactResponse_provisioningArtifactDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisioningArtifactResponse' {Maybe ProvisioningArtifactDetail
provisioningArtifactDetail :: Maybe ProvisioningArtifactDetail
$sel:provisioningArtifactDetail:UpdateProvisioningArtifactResponse' :: UpdateProvisioningArtifactResponse
-> Maybe ProvisioningArtifactDetail
provisioningArtifactDetail} -> Maybe ProvisioningArtifactDetail
provisioningArtifactDetail) (\s :: UpdateProvisioningArtifactResponse
s@UpdateProvisioningArtifactResponse' {} Maybe ProvisioningArtifactDetail
a -> UpdateProvisioningArtifactResponse
s {$sel:provisioningArtifactDetail:UpdateProvisioningArtifactResponse' :: Maybe ProvisioningArtifactDetail
provisioningArtifactDetail = Maybe ProvisioningArtifactDetail
a} :: UpdateProvisioningArtifactResponse)

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

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

instance
  Prelude.NFData
    UpdateProvisioningArtifactResponse
  where
  rnf :: UpdateProvisioningArtifactResponse -> ()
rnf UpdateProvisioningArtifactResponse' {Int
Maybe (HashMap Text Text)
Maybe ProvisioningArtifactDetail
Maybe RequestStatus
httpStatus :: Int
status :: Maybe RequestStatus
provisioningArtifactDetail :: Maybe ProvisioningArtifactDetail
info :: Maybe (HashMap Text Text)
$sel:httpStatus:UpdateProvisioningArtifactResponse' :: UpdateProvisioningArtifactResponse -> Int
$sel:status:UpdateProvisioningArtifactResponse' :: UpdateProvisioningArtifactResponse -> Maybe RequestStatus
$sel:provisioningArtifactDetail:UpdateProvisioningArtifactResponse' :: UpdateProvisioningArtifactResponse
-> Maybe ProvisioningArtifactDetail
$sel:info:UpdateProvisioningArtifactResponse' :: UpdateProvisioningArtifactResponse -> 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