{-# 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.UpdateProvisionedProduct
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Requests updates to the configuration of the specified provisioned
-- product.
--
-- If there are tags associated with the object, they cannot be updated or
-- added. Depending on the specific updates requested, this operation can
-- update with no interruption, with some interruption, or replace the
-- provisioned product entirely.
--
-- You can check the status of this request using DescribeRecord.
module Amazonka.ServiceCatalog.UpdateProvisionedProduct
  ( -- * Creating a Request
    UpdateProvisionedProduct (..),
    newUpdateProvisionedProduct,

    -- * Request Lenses
    updateProvisionedProduct_acceptLanguage,
    updateProvisionedProduct_pathId,
    updateProvisionedProduct_pathName,
    updateProvisionedProduct_productId,
    updateProvisionedProduct_productName,
    updateProvisionedProduct_provisionedProductId,
    updateProvisionedProduct_provisionedProductName,
    updateProvisionedProduct_provisioningArtifactId,
    updateProvisionedProduct_provisioningArtifactName,
    updateProvisionedProduct_provisioningParameters,
    updateProvisionedProduct_provisioningPreferences,
    updateProvisionedProduct_tags,
    updateProvisionedProduct_updateToken,

    -- * Destructuring the Response
    UpdateProvisionedProductResponse (..),
    newUpdateProvisionedProductResponse,

    -- * Response Lenses
    updateProvisionedProductResponse_recordDetail,
    updateProvisionedProductResponse_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:/ 'newUpdateProvisionedProduct' smart constructor.
data UpdateProvisionedProduct = UpdateProvisionedProduct'
  { -- | The language code.
    --
    -- -   @en@ - English (default)
    --
    -- -   @jp@ - Japanese
    --
    -- -   @zh@ - Chinese
    UpdateProvisionedProduct -> Maybe Text
acceptLanguage :: Prelude.Maybe Prelude.Text,
    -- | The path identifier. This value is optional if the product has a default
    -- path, and required if the product has more than one path. You must
    -- provide the name or ID, but not both.
    UpdateProvisionedProduct -> Maybe Text
pathId :: Prelude.Maybe Prelude.Text,
    -- | The name of the path. You must provide the name or ID, but not both.
    UpdateProvisionedProduct -> Maybe Text
pathName :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the product. You must provide the name or ID, but not
    -- both.
    UpdateProvisionedProduct -> Maybe Text
productId :: Prelude.Maybe Prelude.Text,
    -- | The name of the product. You must provide the name or ID, but not both.
    UpdateProvisionedProduct -> Maybe Text
productName :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the provisioned product. You must provide the name or
    -- ID, but not both.
    UpdateProvisionedProduct -> Maybe Text
provisionedProductId :: Prelude.Maybe Prelude.Text,
    -- | The name of the provisioned product. You cannot specify both
    -- @ProvisionedProductName@ and @ProvisionedProductId@.
    UpdateProvisionedProduct -> Maybe Text
provisionedProductName :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the provisioning artifact.
    UpdateProvisionedProduct -> Maybe Text
provisioningArtifactId :: Prelude.Maybe Prelude.Text,
    -- | The name of the provisioning artifact. You must provide the name or ID,
    -- but not both.
    UpdateProvisionedProduct -> Maybe Text
provisioningArtifactName :: Prelude.Maybe Prelude.Text,
    -- | The new parameters.
    UpdateProvisionedProduct -> Maybe [UpdateProvisioningParameter]
provisioningParameters :: Prelude.Maybe [UpdateProvisioningParameter],
    -- | An object that contains information about the provisioning preferences
    -- for a stack set.
    UpdateProvisionedProduct -> Maybe UpdateProvisioningPreferences
provisioningPreferences :: Prelude.Maybe UpdateProvisioningPreferences,
    -- | One or more tags. Requires the product to have @RESOURCE_UPDATE@
    -- constraint with @TagUpdatesOnProvisionedProduct@ set to @ALLOWED@ to
    -- allow tag updates.
    UpdateProvisionedProduct -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The idempotency token that uniquely identifies the provisioning update
    -- request.
    UpdateProvisionedProduct -> Text
updateToken :: Prelude.Text
  }
  deriving (UpdateProvisionedProduct -> UpdateProvisionedProduct -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateProvisionedProduct -> UpdateProvisionedProduct -> Bool
$c/= :: UpdateProvisionedProduct -> UpdateProvisionedProduct -> Bool
== :: UpdateProvisionedProduct -> UpdateProvisionedProduct -> Bool
$c== :: UpdateProvisionedProduct -> UpdateProvisionedProduct -> Bool
Prelude.Eq, ReadPrec [UpdateProvisionedProduct]
ReadPrec UpdateProvisionedProduct
Int -> ReadS UpdateProvisionedProduct
ReadS [UpdateProvisionedProduct]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateProvisionedProduct]
$creadListPrec :: ReadPrec [UpdateProvisionedProduct]
readPrec :: ReadPrec UpdateProvisionedProduct
$creadPrec :: ReadPrec UpdateProvisionedProduct
readList :: ReadS [UpdateProvisionedProduct]
$creadList :: ReadS [UpdateProvisionedProduct]
readsPrec :: Int -> ReadS UpdateProvisionedProduct
$creadsPrec :: Int -> ReadS UpdateProvisionedProduct
Prelude.Read, Int -> UpdateProvisionedProduct -> ShowS
[UpdateProvisionedProduct] -> ShowS
UpdateProvisionedProduct -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateProvisionedProduct] -> ShowS
$cshowList :: [UpdateProvisionedProduct] -> ShowS
show :: UpdateProvisionedProduct -> String
$cshow :: UpdateProvisionedProduct -> String
showsPrec :: Int -> UpdateProvisionedProduct -> ShowS
$cshowsPrec :: Int -> UpdateProvisionedProduct -> ShowS
Prelude.Show, forall x.
Rep UpdateProvisionedProduct x -> UpdateProvisionedProduct
forall x.
UpdateProvisionedProduct -> Rep UpdateProvisionedProduct x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateProvisionedProduct x -> UpdateProvisionedProduct
$cfrom :: forall x.
UpdateProvisionedProduct -> Rep UpdateProvisionedProduct x
Prelude.Generic)

-- |
-- Create a value of 'UpdateProvisionedProduct' 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', 'updateProvisionedProduct_acceptLanguage' - The language code.
--
-- -   @en@ - English (default)
--
-- -   @jp@ - Japanese
--
-- -   @zh@ - Chinese
--
-- 'pathId', 'updateProvisionedProduct_pathId' - The path identifier. This value is optional if the product has a default
-- path, and required if the product has more than one path. You must
-- provide the name or ID, but not both.
--
-- 'pathName', 'updateProvisionedProduct_pathName' - The name of the path. You must provide the name or ID, but not both.
--
-- 'productId', 'updateProvisionedProduct_productId' - The identifier of the product. You must provide the name or ID, but not
-- both.
--
-- 'productName', 'updateProvisionedProduct_productName' - The name of the product. You must provide the name or ID, but not both.
--
-- 'provisionedProductId', 'updateProvisionedProduct_provisionedProductId' - The identifier of the provisioned product. You must provide the name or
-- ID, but not both.
--
-- 'provisionedProductName', 'updateProvisionedProduct_provisionedProductName' - The name of the provisioned product. You cannot specify both
-- @ProvisionedProductName@ and @ProvisionedProductId@.
--
-- 'provisioningArtifactId', 'updateProvisionedProduct_provisioningArtifactId' - The identifier of the provisioning artifact.
--
-- 'provisioningArtifactName', 'updateProvisionedProduct_provisioningArtifactName' - The name of the provisioning artifact. You must provide the name or ID,
-- but not both.
--
-- 'provisioningParameters', 'updateProvisionedProduct_provisioningParameters' - The new parameters.
--
-- 'provisioningPreferences', 'updateProvisionedProduct_provisioningPreferences' - An object that contains information about the provisioning preferences
-- for a stack set.
--
-- 'tags', 'updateProvisionedProduct_tags' - One or more tags. Requires the product to have @RESOURCE_UPDATE@
-- constraint with @TagUpdatesOnProvisionedProduct@ set to @ALLOWED@ to
-- allow tag updates.
--
-- 'updateToken', 'updateProvisionedProduct_updateToken' - The idempotency token that uniquely identifies the provisioning update
-- request.
newUpdateProvisionedProduct ::
  -- | 'updateToken'
  Prelude.Text ->
  UpdateProvisionedProduct
newUpdateProvisionedProduct :: Text -> UpdateProvisionedProduct
newUpdateProvisionedProduct Text
pUpdateToken_ =
  UpdateProvisionedProduct'
    { $sel:acceptLanguage:UpdateProvisionedProduct' :: Maybe Text
acceptLanguage =
        forall a. Maybe a
Prelude.Nothing,
      $sel:pathId:UpdateProvisionedProduct' :: Maybe Text
pathId = forall a. Maybe a
Prelude.Nothing,
      $sel:pathName:UpdateProvisionedProduct' :: Maybe Text
pathName = forall a. Maybe a
Prelude.Nothing,
      $sel:productId:UpdateProvisionedProduct' :: Maybe Text
productId = forall a. Maybe a
Prelude.Nothing,
      $sel:productName:UpdateProvisionedProduct' :: Maybe Text
productName = forall a. Maybe a
Prelude.Nothing,
      $sel:provisionedProductId:UpdateProvisionedProduct' :: Maybe Text
provisionedProductId = forall a. Maybe a
Prelude.Nothing,
      $sel:provisionedProductName:UpdateProvisionedProduct' :: Maybe Text
provisionedProductName = forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningArtifactId:UpdateProvisionedProduct' :: Maybe Text
provisioningArtifactId = forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningArtifactName:UpdateProvisionedProduct' :: Maybe Text
provisioningArtifactName = forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningParameters:UpdateProvisionedProduct' :: Maybe [UpdateProvisioningParameter]
provisioningParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningPreferences:UpdateProvisionedProduct' :: Maybe UpdateProvisioningPreferences
provisioningPreferences = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:UpdateProvisionedProduct' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:updateToken:UpdateProvisionedProduct' :: Text
updateToken = Text
pUpdateToken_
    }

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

-- | The path identifier. This value is optional if the product has a default
-- path, and required if the product has more than one path. You must
-- provide the name or ID, but not both.
updateProvisionedProduct_pathId :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe Prelude.Text)
updateProvisionedProduct_pathId :: Lens' UpdateProvisionedProduct (Maybe Text)
updateProvisionedProduct_pathId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe Text
pathId :: Maybe Text
$sel:pathId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
pathId} -> Maybe Text
pathId) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe Text
a -> UpdateProvisionedProduct
s {$sel:pathId:UpdateProvisionedProduct' :: Maybe Text
pathId = Maybe Text
a} :: UpdateProvisionedProduct)

-- | The name of the path. You must provide the name or ID, but not both.
updateProvisionedProduct_pathName :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe Prelude.Text)
updateProvisionedProduct_pathName :: Lens' UpdateProvisionedProduct (Maybe Text)
updateProvisionedProduct_pathName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe Text
pathName :: Maybe Text
$sel:pathName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
pathName} -> Maybe Text
pathName) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe Text
a -> UpdateProvisionedProduct
s {$sel:pathName:UpdateProvisionedProduct' :: Maybe Text
pathName = Maybe Text
a} :: UpdateProvisionedProduct)

-- | The identifier of the product. You must provide the name or ID, but not
-- both.
updateProvisionedProduct_productId :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe Prelude.Text)
updateProvisionedProduct_productId :: Lens' UpdateProvisionedProduct (Maybe Text)
updateProvisionedProduct_productId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe Text
productId :: Maybe Text
$sel:productId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
productId} -> Maybe Text
productId) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe Text
a -> UpdateProvisionedProduct
s {$sel:productId:UpdateProvisionedProduct' :: Maybe Text
productId = Maybe Text
a} :: UpdateProvisionedProduct)

-- | The name of the product. You must provide the name or ID, but not both.
updateProvisionedProduct_productName :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe Prelude.Text)
updateProvisionedProduct_productName :: Lens' UpdateProvisionedProduct (Maybe Text)
updateProvisionedProduct_productName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe Text
productName :: Maybe Text
$sel:productName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
productName} -> Maybe Text
productName) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe Text
a -> UpdateProvisionedProduct
s {$sel:productName:UpdateProvisionedProduct' :: Maybe Text
productName = Maybe Text
a} :: UpdateProvisionedProduct)

-- | The identifier of the provisioned product. You must provide the name or
-- ID, but not both.
updateProvisionedProduct_provisionedProductId :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe Prelude.Text)
updateProvisionedProduct_provisionedProductId :: Lens' UpdateProvisionedProduct (Maybe Text)
updateProvisionedProduct_provisionedProductId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe Text
provisionedProductId :: Maybe Text
$sel:provisionedProductId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
provisionedProductId} -> Maybe Text
provisionedProductId) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe Text
a -> UpdateProvisionedProduct
s {$sel:provisionedProductId:UpdateProvisionedProduct' :: Maybe Text
provisionedProductId = Maybe Text
a} :: UpdateProvisionedProduct)

-- | The name of the provisioned product. You cannot specify both
-- @ProvisionedProductName@ and @ProvisionedProductId@.
updateProvisionedProduct_provisionedProductName :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe Prelude.Text)
updateProvisionedProduct_provisionedProductName :: Lens' UpdateProvisionedProduct (Maybe Text)
updateProvisionedProduct_provisionedProductName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe Text
provisionedProductName :: Maybe Text
$sel:provisionedProductName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
provisionedProductName} -> Maybe Text
provisionedProductName) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe Text
a -> UpdateProvisionedProduct
s {$sel:provisionedProductName:UpdateProvisionedProduct' :: Maybe Text
provisionedProductName = Maybe Text
a} :: UpdateProvisionedProduct)

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

-- | The name of the provisioning artifact. You must provide the name or ID,
-- but not both.
updateProvisionedProduct_provisioningArtifactName :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe Prelude.Text)
updateProvisionedProduct_provisioningArtifactName :: Lens' UpdateProvisionedProduct (Maybe Text)
updateProvisionedProduct_provisioningArtifactName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe Text
provisioningArtifactName :: Maybe Text
$sel:provisioningArtifactName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
provisioningArtifactName} -> Maybe Text
provisioningArtifactName) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe Text
a -> UpdateProvisionedProduct
s {$sel:provisioningArtifactName:UpdateProvisionedProduct' :: Maybe Text
provisioningArtifactName = Maybe Text
a} :: UpdateProvisionedProduct)

-- | The new parameters.
updateProvisionedProduct_provisioningParameters :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe [UpdateProvisioningParameter])
updateProvisionedProduct_provisioningParameters :: Lens'
  UpdateProvisionedProduct (Maybe [UpdateProvisioningParameter])
updateProvisionedProduct_provisioningParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe [UpdateProvisioningParameter]
provisioningParameters :: Maybe [UpdateProvisioningParameter]
$sel:provisioningParameters:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe [UpdateProvisioningParameter]
provisioningParameters} -> Maybe [UpdateProvisioningParameter]
provisioningParameters) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe [UpdateProvisioningParameter]
a -> UpdateProvisionedProduct
s {$sel:provisioningParameters:UpdateProvisionedProduct' :: Maybe [UpdateProvisioningParameter]
provisioningParameters = Maybe [UpdateProvisioningParameter]
a} :: UpdateProvisionedProduct) 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

-- | An object that contains information about the provisioning preferences
-- for a stack set.
updateProvisionedProduct_provisioningPreferences :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe UpdateProvisioningPreferences)
updateProvisionedProduct_provisioningPreferences :: Lens'
  UpdateProvisionedProduct (Maybe UpdateProvisioningPreferences)
updateProvisionedProduct_provisioningPreferences = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe UpdateProvisioningPreferences
provisioningPreferences :: Maybe UpdateProvisioningPreferences
$sel:provisioningPreferences:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe UpdateProvisioningPreferences
provisioningPreferences} -> Maybe UpdateProvisioningPreferences
provisioningPreferences) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe UpdateProvisioningPreferences
a -> UpdateProvisionedProduct
s {$sel:provisioningPreferences:UpdateProvisionedProduct' :: Maybe UpdateProvisioningPreferences
provisioningPreferences = Maybe UpdateProvisioningPreferences
a} :: UpdateProvisionedProduct)

-- | One or more tags. Requires the product to have @RESOURCE_UPDATE@
-- constraint with @TagUpdatesOnProvisionedProduct@ set to @ALLOWED@ to
-- allow tag updates.
updateProvisionedProduct_tags :: Lens.Lens' UpdateProvisionedProduct (Prelude.Maybe [Tag])
updateProvisionedProduct_tags :: Lens' UpdateProvisionedProduct (Maybe [Tag])
updateProvisionedProduct_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Maybe [Tag]
a -> UpdateProvisionedProduct
s {$sel:tags:UpdateProvisionedProduct' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: UpdateProvisionedProduct) 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 idempotency token that uniquely identifies the provisioning update
-- request.
updateProvisionedProduct_updateToken :: Lens.Lens' UpdateProvisionedProduct Prelude.Text
updateProvisionedProduct_updateToken :: Lens' UpdateProvisionedProduct Text
updateProvisionedProduct_updateToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProduct' {Text
updateToken :: Text
$sel:updateToken:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Text
updateToken} -> Text
updateToken) (\s :: UpdateProvisionedProduct
s@UpdateProvisionedProduct' {} Text
a -> UpdateProvisionedProduct
s {$sel:updateToken:UpdateProvisionedProduct' :: Text
updateToken = Text
a} :: UpdateProvisionedProduct)

instance Core.AWSRequest UpdateProvisionedProduct where
  type
    AWSResponse UpdateProvisionedProduct =
      UpdateProvisionedProductResponse
  request :: (Service -> Service)
-> UpdateProvisionedProduct -> Request UpdateProvisionedProduct
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 UpdateProvisionedProduct
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateProvisionedProduct)))
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 RecordDetail -> Int -> UpdateProvisionedProductResponse
UpdateProvisionedProductResponse'
            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
"RecordDetail")
            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 UpdateProvisionedProduct where
  hashWithSalt :: Int -> UpdateProvisionedProduct -> Int
hashWithSalt Int
_salt UpdateProvisionedProduct' {Maybe [Tag]
Maybe [UpdateProvisioningParameter]
Maybe Text
Maybe UpdateProvisioningPreferences
Text
updateToken :: Text
tags :: Maybe [Tag]
provisioningPreferences :: Maybe UpdateProvisioningPreferences
provisioningParameters :: Maybe [UpdateProvisioningParameter]
provisioningArtifactName :: Maybe Text
provisioningArtifactId :: Maybe Text
provisionedProductName :: Maybe Text
provisionedProductId :: Maybe Text
productName :: Maybe Text
productId :: Maybe Text
pathName :: Maybe Text
pathId :: Maybe Text
acceptLanguage :: Maybe Text
$sel:updateToken:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Text
$sel:tags:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe [Tag]
$sel:provisioningPreferences:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe UpdateProvisioningPreferences
$sel:provisioningParameters:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe [UpdateProvisioningParameter]
$sel:provisioningArtifactName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:provisioningArtifactId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:provisionedProductName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:provisionedProductId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:productName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:productId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:pathName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:pathId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:acceptLanguage:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> 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 Text
pathId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
pathName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
productId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
productName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
provisionedProductId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
provisionedProductName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
provisioningArtifactId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
provisioningArtifactName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [UpdateProvisioningParameter]
provisioningParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UpdateProvisioningPreferences
provisioningPreferences
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
updateToken

instance Prelude.NFData UpdateProvisionedProduct where
  rnf :: UpdateProvisionedProduct -> ()
rnf UpdateProvisionedProduct' {Maybe [Tag]
Maybe [UpdateProvisioningParameter]
Maybe Text
Maybe UpdateProvisioningPreferences
Text
updateToken :: Text
tags :: Maybe [Tag]
provisioningPreferences :: Maybe UpdateProvisioningPreferences
provisioningParameters :: Maybe [UpdateProvisioningParameter]
provisioningArtifactName :: Maybe Text
provisioningArtifactId :: Maybe Text
provisionedProductName :: Maybe Text
provisionedProductId :: Maybe Text
productName :: Maybe Text
productId :: Maybe Text
pathName :: Maybe Text
pathId :: Maybe Text
acceptLanguage :: Maybe Text
$sel:updateToken:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Text
$sel:tags:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe [Tag]
$sel:provisioningPreferences:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe UpdateProvisioningPreferences
$sel:provisioningParameters:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe [UpdateProvisioningParameter]
$sel:provisioningArtifactName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:provisioningArtifactId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:provisionedProductName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:provisionedProductId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:productName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:productId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:pathName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:pathId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:acceptLanguage:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> 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 Text
pathId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
pathName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
productId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
productName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
provisionedProductId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
provisionedProductName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
provisioningArtifactId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
provisioningArtifactName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [UpdateProvisioningParameter]
provisioningParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UpdateProvisioningPreferences
provisioningPreferences
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
updateToken

instance Data.ToHeaders UpdateProvisionedProduct where
  toHeaders :: UpdateProvisionedProduct -> 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.UpdateProvisionedProduct" ::
                          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 UpdateProvisionedProduct where
  toJSON :: UpdateProvisionedProduct -> Value
toJSON UpdateProvisionedProduct' {Maybe [Tag]
Maybe [UpdateProvisioningParameter]
Maybe Text
Maybe UpdateProvisioningPreferences
Text
updateToken :: Text
tags :: Maybe [Tag]
provisioningPreferences :: Maybe UpdateProvisioningPreferences
provisioningParameters :: Maybe [UpdateProvisioningParameter]
provisioningArtifactName :: Maybe Text
provisioningArtifactId :: Maybe Text
provisionedProductName :: Maybe Text
provisionedProductId :: Maybe Text
productName :: Maybe Text
productId :: Maybe Text
pathName :: Maybe Text
pathId :: Maybe Text
acceptLanguage :: Maybe Text
$sel:updateToken:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Text
$sel:tags:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe [Tag]
$sel:provisioningPreferences:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe UpdateProvisioningPreferences
$sel:provisioningParameters:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe [UpdateProvisioningParameter]
$sel:provisioningArtifactName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:provisioningArtifactId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:provisionedProductName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:provisionedProductId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:productName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:productId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:pathName:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:pathId:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> Maybe Text
$sel:acceptLanguage:UpdateProvisionedProduct' :: UpdateProvisionedProduct -> 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
"PathId" 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
pathId,
            (Key
"PathName" 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
pathName,
            (Key
"ProductId" 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
productId,
            (Key
"ProductName" 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
productName,
            (Key
"ProvisionedProductId" 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
provisionedProductId,
            (Key
"ProvisionedProductName" 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
provisionedProductName,
            (Key
"ProvisioningArtifactId" 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
provisioningArtifactId,
            (Key
"ProvisioningArtifactName" 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
provisioningArtifactName,
            (Key
"ProvisioningParameters" 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 [UpdateProvisioningParameter]
provisioningParameters,
            (Key
"ProvisioningPreferences" 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 UpdateProvisioningPreferences
provisioningPreferences,
            (Key
"Tags" 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 [Tag]
tags,
            forall a. a -> Maybe a
Prelude.Just (Key
"UpdateToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
updateToken)
          ]
      )

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

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

-- | /See:/ 'newUpdateProvisionedProductResponse' smart constructor.
data UpdateProvisionedProductResponse = UpdateProvisionedProductResponse'
  { -- | Information about the result of the request.
    UpdateProvisionedProductResponse -> Maybe RecordDetail
recordDetail :: Prelude.Maybe RecordDetail,
    -- | The response's http status code.
    UpdateProvisionedProductResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateProvisionedProductResponse
-> UpdateProvisionedProductResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateProvisionedProductResponse
-> UpdateProvisionedProductResponse -> Bool
$c/= :: UpdateProvisionedProductResponse
-> UpdateProvisionedProductResponse -> Bool
== :: UpdateProvisionedProductResponse
-> UpdateProvisionedProductResponse -> Bool
$c== :: UpdateProvisionedProductResponse
-> UpdateProvisionedProductResponse -> Bool
Prelude.Eq, ReadPrec [UpdateProvisionedProductResponse]
ReadPrec UpdateProvisionedProductResponse
Int -> ReadS UpdateProvisionedProductResponse
ReadS [UpdateProvisionedProductResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateProvisionedProductResponse]
$creadListPrec :: ReadPrec [UpdateProvisionedProductResponse]
readPrec :: ReadPrec UpdateProvisionedProductResponse
$creadPrec :: ReadPrec UpdateProvisionedProductResponse
readList :: ReadS [UpdateProvisionedProductResponse]
$creadList :: ReadS [UpdateProvisionedProductResponse]
readsPrec :: Int -> ReadS UpdateProvisionedProductResponse
$creadsPrec :: Int -> ReadS UpdateProvisionedProductResponse
Prelude.Read, Int -> UpdateProvisionedProductResponse -> ShowS
[UpdateProvisionedProductResponse] -> ShowS
UpdateProvisionedProductResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateProvisionedProductResponse] -> ShowS
$cshowList :: [UpdateProvisionedProductResponse] -> ShowS
show :: UpdateProvisionedProductResponse -> String
$cshow :: UpdateProvisionedProductResponse -> String
showsPrec :: Int -> UpdateProvisionedProductResponse -> ShowS
$cshowsPrec :: Int -> UpdateProvisionedProductResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateProvisionedProductResponse x
-> UpdateProvisionedProductResponse
forall x.
UpdateProvisionedProductResponse
-> Rep UpdateProvisionedProductResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateProvisionedProductResponse x
-> UpdateProvisionedProductResponse
$cfrom :: forall x.
UpdateProvisionedProductResponse
-> Rep UpdateProvisionedProductResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateProvisionedProductResponse' 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:
--
-- 'recordDetail', 'updateProvisionedProductResponse_recordDetail' - Information about the result of the request.
--
-- 'httpStatus', 'updateProvisionedProductResponse_httpStatus' - The response's http status code.
newUpdateProvisionedProductResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateProvisionedProductResponse
newUpdateProvisionedProductResponse :: Int -> UpdateProvisionedProductResponse
newUpdateProvisionedProductResponse Int
pHttpStatus_ =
  UpdateProvisionedProductResponse'
    { $sel:recordDetail:UpdateProvisionedProductResponse' :: Maybe RecordDetail
recordDetail =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateProvisionedProductResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the result of the request.
updateProvisionedProductResponse_recordDetail :: Lens.Lens' UpdateProvisionedProductResponse (Prelude.Maybe RecordDetail)
updateProvisionedProductResponse_recordDetail :: Lens' UpdateProvisionedProductResponse (Maybe RecordDetail)
updateProvisionedProductResponse_recordDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateProvisionedProductResponse' {Maybe RecordDetail
recordDetail :: Maybe RecordDetail
$sel:recordDetail:UpdateProvisionedProductResponse' :: UpdateProvisionedProductResponse -> Maybe RecordDetail
recordDetail} -> Maybe RecordDetail
recordDetail) (\s :: UpdateProvisionedProductResponse
s@UpdateProvisionedProductResponse' {} Maybe RecordDetail
a -> UpdateProvisionedProductResponse
s {$sel:recordDetail:UpdateProvisionedProductResponse' :: Maybe RecordDetail
recordDetail = Maybe RecordDetail
a} :: UpdateProvisionedProductResponse)

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

instance
  Prelude.NFData
    UpdateProvisionedProductResponse
  where
  rnf :: UpdateProvisionedProductResponse -> ()
rnf UpdateProvisionedProductResponse' {Int
Maybe RecordDetail
httpStatus :: Int
recordDetail :: Maybe RecordDetail
$sel:httpStatus:UpdateProvisionedProductResponse' :: UpdateProvisionedProductResponse -> Int
$sel:recordDetail:UpdateProvisionedProductResponse' :: UpdateProvisionedProductResponse -> Maybe RecordDetail
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe RecordDetail
recordDetail
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus