{-# 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.CostExplorer.StartSavingsPlansPurchaseRecommendationGeneration
-- 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 a Savings Plans recommendation generation. This enables you to
-- calculate a fresh set of Savings Plans recommendations that takes your
-- latest usage data and current Savings Plans inventory into account. You
-- can refresh Savings Plans recommendations up to three times daily for a
-- consolidated billing family.
--
-- @StartSavingsPlansPurchaseRecommendationGeneration@ has no request
-- syntax because no input parameters are needed to support this operation.
module Amazonka.CostExplorer.StartSavingsPlansPurchaseRecommendationGeneration
  ( -- * Creating a Request
    StartSavingsPlansPurchaseRecommendationGeneration (..),
    newStartSavingsPlansPurchaseRecommendationGeneration,

    -- * Destructuring the Response
    StartSavingsPlansPurchaseRecommendationGenerationResponse (..),
    newStartSavingsPlansPurchaseRecommendationGenerationResponse,

    -- * Response Lenses
    startSavingsPlansPurchaseRecommendationGenerationResponse_estimatedCompletionTime,
    startSavingsPlansPurchaseRecommendationGenerationResponse_generationStartedTime,
    startSavingsPlansPurchaseRecommendationGenerationResponse_recommendationId,
    startSavingsPlansPurchaseRecommendationGenerationResponse_httpStatus,
  )
where

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

-- | /See:/ 'newStartSavingsPlansPurchaseRecommendationGeneration' smart constructor.
data StartSavingsPlansPurchaseRecommendationGeneration = StartSavingsPlansPurchaseRecommendationGeneration'
  {
  }
  deriving (StartSavingsPlansPurchaseRecommendationGeneration
-> StartSavingsPlansPurchaseRecommendationGeneration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartSavingsPlansPurchaseRecommendationGeneration
-> StartSavingsPlansPurchaseRecommendationGeneration -> Bool
$c/= :: StartSavingsPlansPurchaseRecommendationGeneration
-> StartSavingsPlansPurchaseRecommendationGeneration -> Bool
== :: StartSavingsPlansPurchaseRecommendationGeneration
-> StartSavingsPlansPurchaseRecommendationGeneration -> Bool
$c== :: StartSavingsPlansPurchaseRecommendationGeneration
-> StartSavingsPlansPurchaseRecommendationGeneration -> Bool
Prelude.Eq, ReadPrec [StartSavingsPlansPurchaseRecommendationGeneration]
ReadPrec StartSavingsPlansPurchaseRecommendationGeneration
Int -> ReadS StartSavingsPlansPurchaseRecommendationGeneration
ReadS [StartSavingsPlansPurchaseRecommendationGeneration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartSavingsPlansPurchaseRecommendationGeneration]
$creadListPrec :: ReadPrec [StartSavingsPlansPurchaseRecommendationGeneration]
readPrec :: ReadPrec StartSavingsPlansPurchaseRecommendationGeneration
$creadPrec :: ReadPrec StartSavingsPlansPurchaseRecommendationGeneration
readList :: ReadS [StartSavingsPlansPurchaseRecommendationGeneration]
$creadList :: ReadS [StartSavingsPlansPurchaseRecommendationGeneration]
readsPrec :: Int -> ReadS StartSavingsPlansPurchaseRecommendationGeneration
$creadsPrec :: Int -> ReadS StartSavingsPlansPurchaseRecommendationGeneration
Prelude.Read, Int -> StartSavingsPlansPurchaseRecommendationGeneration -> ShowS
[StartSavingsPlansPurchaseRecommendationGeneration] -> ShowS
StartSavingsPlansPurchaseRecommendationGeneration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartSavingsPlansPurchaseRecommendationGeneration] -> ShowS
$cshowList :: [StartSavingsPlansPurchaseRecommendationGeneration] -> ShowS
show :: StartSavingsPlansPurchaseRecommendationGeneration -> String
$cshow :: StartSavingsPlansPurchaseRecommendationGeneration -> String
showsPrec :: Int -> StartSavingsPlansPurchaseRecommendationGeneration -> ShowS
$cshowsPrec :: Int -> StartSavingsPlansPurchaseRecommendationGeneration -> ShowS
Prelude.Show, forall x.
Rep StartSavingsPlansPurchaseRecommendationGeneration x
-> StartSavingsPlansPurchaseRecommendationGeneration
forall x.
StartSavingsPlansPurchaseRecommendationGeneration
-> Rep StartSavingsPlansPurchaseRecommendationGeneration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartSavingsPlansPurchaseRecommendationGeneration x
-> StartSavingsPlansPurchaseRecommendationGeneration
$cfrom :: forall x.
StartSavingsPlansPurchaseRecommendationGeneration
-> Rep StartSavingsPlansPurchaseRecommendationGeneration x
Prelude.Generic)

-- |
-- Create a value of 'StartSavingsPlansPurchaseRecommendationGeneration' 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.
newStartSavingsPlansPurchaseRecommendationGeneration ::
  StartSavingsPlansPurchaseRecommendationGeneration
newStartSavingsPlansPurchaseRecommendationGeneration :: StartSavingsPlansPurchaseRecommendationGeneration
newStartSavingsPlansPurchaseRecommendationGeneration =
  StartSavingsPlansPurchaseRecommendationGeneration
StartSavingsPlansPurchaseRecommendationGeneration'

instance
  Core.AWSRequest
    StartSavingsPlansPurchaseRecommendationGeneration
  where
  type
    AWSResponse
      StartSavingsPlansPurchaseRecommendationGeneration =
      StartSavingsPlansPurchaseRecommendationGenerationResponse
  request :: (Service -> Service)
-> StartSavingsPlansPurchaseRecommendationGeneration
-> Request StartSavingsPlansPurchaseRecommendationGeneration
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 StartSavingsPlansPurchaseRecommendationGeneration
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse StartSavingsPlansPurchaseRecommendationGeneration)))
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 Text
-> Maybe Text
-> Maybe Text
-> Int
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
StartSavingsPlansPurchaseRecommendationGenerationResponse'
            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
"EstimatedCompletionTime")
            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
"GenerationStartedTime")
            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
"RecommendationId")
            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
    StartSavingsPlansPurchaseRecommendationGeneration
  where
  hashWithSalt :: Int -> StartSavingsPlansPurchaseRecommendationGeneration -> Int
hashWithSalt Int
_salt StartSavingsPlansPurchaseRecommendationGeneration
_ =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ()

instance
  Prelude.NFData
    StartSavingsPlansPurchaseRecommendationGeneration
  where
  rnf :: StartSavingsPlansPurchaseRecommendationGeneration -> ()
rnf StartSavingsPlansPurchaseRecommendationGeneration
_ = ()

instance
  Data.ToHeaders
    StartSavingsPlansPurchaseRecommendationGeneration
  where
  toHeaders :: StartSavingsPlansPurchaseRecommendationGeneration
-> 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
"AWSInsightsIndexService.StartSavingsPlansPurchaseRecommendationGeneration" ::
                          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
    StartSavingsPlansPurchaseRecommendationGeneration
  where
  toJSON :: StartSavingsPlansPurchaseRecommendationGeneration -> Value
toJSON = forall a b. a -> b -> a
Prelude.const (Object -> Value
Data.Object forall a. Monoid a => a
Prelude.mempty)

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

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

-- | /See:/ 'newStartSavingsPlansPurchaseRecommendationGenerationResponse' smart constructor.
data StartSavingsPlansPurchaseRecommendationGenerationResponse = StartSavingsPlansPurchaseRecommendationGenerationResponse'
  { -- | The estimated time for when the recommendation generation will complete.
    StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Maybe Text
estimatedCompletionTime :: Prelude.Maybe Prelude.Text,
    -- | The start time of the recommendation generation.
    StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Maybe Text
generationStartedTime :: Prelude.Maybe Prelude.Text,
    -- | The ID for this specific recommendation.
    StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Maybe Text
recommendationId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    StartSavingsPlansPurchaseRecommendationGenerationResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (StartSavingsPlansPurchaseRecommendationGenerationResponse
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Bool
$c/= :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Bool
== :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Bool
$c== :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Bool
Prelude.Eq, ReadPrec
  [StartSavingsPlansPurchaseRecommendationGenerationResponse]
ReadPrec StartSavingsPlansPurchaseRecommendationGenerationResponse
Int
-> ReadS StartSavingsPlansPurchaseRecommendationGenerationResponse
ReadS [StartSavingsPlansPurchaseRecommendationGenerationResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec
  [StartSavingsPlansPurchaseRecommendationGenerationResponse]
$creadListPrec :: ReadPrec
  [StartSavingsPlansPurchaseRecommendationGenerationResponse]
readPrec :: ReadPrec StartSavingsPlansPurchaseRecommendationGenerationResponse
$creadPrec :: ReadPrec StartSavingsPlansPurchaseRecommendationGenerationResponse
readList :: ReadS [StartSavingsPlansPurchaseRecommendationGenerationResponse]
$creadList :: ReadS [StartSavingsPlansPurchaseRecommendationGenerationResponse]
readsPrec :: Int
-> ReadS StartSavingsPlansPurchaseRecommendationGenerationResponse
$creadsPrec :: Int
-> ReadS StartSavingsPlansPurchaseRecommendationGenerationResponse
Prelude.Read, Int
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
-> ShowS
[StartSavingsPlansPurchaseRecommendationGenerationResponse]
-> ShowS
StartSavingsPlansPurchaseRecommendationGenerationResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartSavingsPlansPurchaseRecommendationGenerationResponse]
-> ShowS
$cshowList :: [StartSavingsPlansPurchaseRecommendationGenerationResponse]
-> ShowS
show :: StartSavingsPlansPurchaseRecommendationGenerationResponse -> String
$cshow :: StartSavingsPlansPurchaseRecommendationGenerationResponse -> String
showsPrec :: Int
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
-> ShowS
$cshowsPrec :: Int
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
-> ShowS
Prelude.Show, forall x.
Rep StartSavingsPlansPurchaseRecommendationGenerationResponse x
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
forall x.
StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Rep StartSavingsPlansPurchaseRecommendationGenerationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartSavingsPlansPurchaseRecommendationGenerationResponse x
-> StartSavingsPlansPurchaseRecommendationGenerationResponse
$cfrom :: forall x.
StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Rep StartSavingsPlansPurchaseRecommendationGenerationResponse x
Prelude.Generic)

-- |
-- Create a value of 'StartSavingsPlansPurchaseRecommendationGenerationResponse' 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:
--
-- 'estimatedCompletionTime', 'startSavingsPlansPurchaseRecommendationGenerationResponse_estimatedCompletionTime' - The estimated time for when the recommendation generation will complete.
--
-- 'generationStartedTime', 'startSavingsPlansPurchaseRecommendationGenerationResponse_generationStartedTime' - The start time of the recommendation generation.
--
-- 'recommendationId', 'startSavingsPlansPurchaseRecommendationGenerationResponse_recommendationId' - The ID for this specific recommendation.
--
-- 'httpStatus', 'startSavingsPlansPurchaseRecommendationGenerationResponse_httpStatus' - The response's http status code.
newStartSavingsPlansPurchaseRecommendationGenerationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  StartSavingsPlansPurchaseRecommendationGenerationResponse
newStartSavingsPlansPurchaseRecommendationGenerationResponse :: Int -> StartSavingsPlansPurchaseRecommendationGenerationResponse
newStartSavingsPlansPurchaseRecommendationGenerationResponse
  Int
pHttpStatus_ =
    StartSavingsPlansPurchaseRecommendationGenerationResponse'
      { $sel:estimatedCompletionTime:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: Maybe Text
estimatedCompletionTime =
          forall a. Maybe a
Prelude.Nothing,
        $sel:generationStartedTime:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: Maybe Text
generationStartedTime =
          forall a. Maybe a
Prelude.Nothing,
        $sel:recommendationId:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: Maybe Text
recommendationId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: Int
httpStatus =
          Int
pHttpStatus_
      }

-- | The estimated time for when the recommendation generation will complete.
startSavingsPlansPurchaseRecommendationGenerationResponse_estimatedCompletionTime :: Lens.Lens' StartSavingsPlansPurchaseRecommendationGenerationResponse (Prelude.Maybe Prelude.Text)
startSavingsPlansPurchaseRecommendationGenerationResponse_estimatedCompletionTime :: Lens'
  StartSavingsPlansPurchaseRecommendationGenerationResponse
  (Maybe Text)
startSavingsPlansPurchaseRecommendationGenerationResponse_estimatedCompletionTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSavingsPlansPurchaseRecommendationGenerationResponse' {Maybe Text
estimatedCompletionTime :: Maybe Text
$sel:estimatedCompletionTime:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Maybe Text
estimatedCompletionTime} -> Maybe Text
estimatedCompletionTime) (\s :: StartSavingsPlansPurchaseRecommendationGenerationResponse
s@StartSavingsPlansPurchaseRecommendationGenerationResponse' {} Maybe Text
a -> StartSavingsPlansPurchaseRecommendationGenerationResponse
s {$sel:estimatedCompletionTime:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: Maybe Text
estimatedCompletionTime = Maybe Text
a} :: StartSavingsPlansPurchaseRecommendationGenerationResponse)

-- | The start time of the recommendation generation.
startSavingsPlansPurchaseRecommendationGenerationResponse_generationStartedTime :: Lens.Lens' StartSavingsPlansPurchaseRecommendationGenerationResponse (Prelude.Maybe Prelude.Text)
startSavingsPlansPurchaseRecommendationGenerationResponse_generationStartedTime :: Lens'
  StartSavingsPlansPurchaseRecommendationGenerationResponse
  (Maybe Text)
startSavingsPlansPurchaseRecommendationGenerationResponse_generationStartedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSavingsPlansPurchaseRecommendationGenerationResponse' {Maybe Text
generationStartedTime :: Maybe Text
$sel:generationStartedTime:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Maybe Text
generationStartedTime} -> Maybe Text
generationStartedTime) (\s :: StartSavingsPlansPurchaseRecommendationGenerationResponse
s@StartSavingsPlansPurchaseRecommendationGenerationResponse' {} Maybe Text
a -> StartSavingsPlansPurchaseRecommendationGenerationResponse
s {$sel:generationStartedTime:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: Maybe Text
generationStartedTime = Maybe Text
a} :: StartSavingsPlansPurchaseRecommendationGenerationResponse)

-- | The ID for this specific recommendation.
startSavingsPlansPurchaseRecommendationGenerationResponse_recommendationId :: Lens.Lens' StartSavingsPlansPurchaseRecommendationGenerationResponse (Prelude.Maybe Prelude.Text)
startSavingsPlansPurchaseRecommendationGenerationResponse_recommendationId :: Lens'
  StartSavingsPlansPurchaseRecommendationGenerationResponse
  (Maybe Text)
startSavingsPlansPurchaseRecommendationGenerationResponse_recommendationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSavingsPlansPurchaseRecommendationGenerationResponse' {Maybe Text
recommendationId :: Maybe Text
$sel:recommendationId:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Maybe Text
recommendationId} -> Maybe Text
recommendationId) (\s :: StartSavingsPlansPurchaseRecommendationGenerationResponse
s@StartSavingsPlansPurchaseRecommendationGenerationResponse' {} Maybe Text
a -> StartSavingsPlansPurchaseRecommendationGenerationResponse
s {$sel:recommendationId:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: Maybe Text
recommendationId = Maybe Text
a} :: StartSavingsPlansPurchaseRecommendationGenerationResponse)

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

instance
  Prelude.NFData
    StartSavingsPlansPurchaseRecommendationGenerationResponse
  where
  rnf :: StartSavingsPlansPurchaseRecommendationGenerationResponse -> ()
rnf
    StartSavingsPlansPurchaseRecommendationGenerationResponse' {Int
Maybe Text
httpStatus :: Int
recommendationId :: Maybe Text
generationStartedTime :: Maybe Text
estimatedCompletionTime :: Maybe Text
$sel:httpStatus:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: StartSavingsPlansPurchaseRecommendationGenerationResponse -> Int
$sel:recommendationId:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Maybe Text
$sel:generationStartedTime:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Maybe Text
$sel:estimatedCompletionTime:StartSavingsPlansPurchaseRecommendationGenerationResponse' :: StartSavingsPlansPurchaseRecommendationGenerationResponse
-> Maybe Text
..} =
      forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
estimatedCompletionTime
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
generationStartedTime
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
recommendationId
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus