amazonka-cost-explorer-2.0: gen/Amazonka/CostExplorer/StartSavingsPlansPurchaseRecommendationGeneration.hs
{-# 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 (Prelude.Eq, Prelude.Read, Prelude.Show, 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'
instance
Core.AWSRequest
StartSavingsPlansPurchaseRecommendationGeneration
where
type
AWSResponse
StartSavingsPlansPurchaseRecommendationGeneration =
StartSavingsPlansPurchaseRecommendationGenerationResponse
request overrides =
Request.postJSON (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
StartSavingsPlansPurchaseRecommendationGenerationResponse'
Prelude.<$> (x Data..?> "EstimatedCompletionTime")
Prelude.<*> (x Data..?> "GenerationStartedTime")
Prelude.<*> (x Data..?> "RecommendationId")
Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
)
instance
Prelude.Hashable
StartSavingsPlansPurchaseRecommendationGeneration
where
hashWithSalt _salt _ =
_salt `Prelude.hashWithSalt` ()
instance
Prelude.NFData
StartSavingsPlansPurchaseRecommendationGeneration
where
rnf _ = ()
instance
Data.ToHeaders
StartSavingsPlansPurchaseRecommendationGeneration
where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "X-Amz-Target"
Data.=# ( "AWSInsightsIndexService.StartSavingsPlansPurchaseRecommendationGeneration" ::
Prelude.ByteString
),
"Content-Type"
Data.=# ( "application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance
Data.ToJSON
StartSavingsPlansPurchaseRecommendationGeneration
where
toJSON = Prelude.const (Data.Object Prelude.mempty)
instance
Data.ToPath
StartSavingsPlansPurchaseRecommendationGeneration
where
toPath = Prelude.const "/"
instance
Data.ToQuery
StartSavingsPlansPurchaseRecommendationGeneration
where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newStartSavingsPlansPurchaseRecommendationGenerationResponse' smart constructor.
data StartSavingsPlansPurchaseRecommendationGenerationResponse = StartSavingsPlansPurchaseRecommendationGenerationResponse'
{ -- | The estimated time for when the recommendation generation will complete.
estimatedCompletionTime :: Prelude.Maybe Prelude.Text,
-- | The start time of the recommendation generation.
generationStartedTime :: Prelude.Maybe Prelude.Text,
-- | The ID for this specific recommendation.
recommendationId :: Prelude.Maybe Prelude.Text,
-- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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
pHttpStatus_ =
StartSavingsPlansPurchaseRecommendationGenerationResponse'
{ estimatedCompletionTime =
Prelude.Nothing,
generationStartedTime =
Prelude.Nothing,
recommendationId =
Prelude.Nothing,
httpStatus =
pHttpStatus_
}
-- | The estimated time for when the recommendation generation will complete.
startSavingsPlansPurchaseRecommendationGenerationResponse_estimatedCompletionTime :: Lens.Lens' StartSavingsPlansPurchaseRecommendationGenerationResponse (Prelude.Maybe Prelude.Text)
startSavingsPlansPurchaseRecommendationGenerationResponse_estimatedCompletionTime = Lens.lens (\StartSavingsPlansPurchaseRecommendationGenerationResponse' {estimatedCompletionTime} -> estimatedCompletionTime) (\s@StartSavingsPlansPurchaseRecommendationGenerationResponse' {} a -> s {estimatedCompletionTime = a} :: StartSavingsPlansPurchaseRecommendationGenerationResponse)
-- | The start time of the recommendation generation.
startSavingsPlansPurchaseRecommendationGenerationResponse_generationStartedTime :: Lens.Lens' StartSavingsPlansPurchaseRecommendationGenerationResponse (Prelude.Maybe Prelude.Text)
startSavingsPlansPurchaseRecommendationGenerationResponse_generationStartedTime = Lens.lens (\StartSavingsPlansPurchaseRecommendationGenerationResponse' {generationStartedTime} -> generationStartedTime) (\s@StartSavingsPlansPurchaseRecommendationGenerationResponse' {} a -> s {generationStartedTime = a} :: StartSavingsPlansPurchaseRecommendationGenerationResponse)
-- | The ID for this specific recommendation.
startSavingsPlansPurchaseRecommendationGenerationResponse_recommendationId :: Lens.Lens' StartSavingsPlansPurchaseRecommendationGenerationResponse (Prelude.Maybe Prelude.Text)
startSavingsPlansPurchaseRecommendationGenerationResponse_recommendationId = Lens.lens (\StartSavingsPlansPurchaseRecommendationGenerationResponse' {recommendationId} -> recommendationId) (\s@StartSavingsPlansPurchaseRecommendationGenerationResponse' {} a -> s {recommendationId = a} :: StartSavingsPlansPurchaseRecommendationGenerationResponse)
-- | The response's http status code.
startSavingsPlansPurchaseRecommendationGenerationResponse_httpStatus :: Lens.Lens' StartSavingsPlansPurchaseRecommendationGenerationResponse Prelude.Int
startSavingsPlansPurchaseRecommendationGenerationResponse_httpStatus = Lens.lens (\StartSavingsPlansPurchaseRecommendationGenerationResponse' {httpStatus} -> httpStatus) (\s@StartSavingsPlansPurchaseRecommendationGenerationResponse' {} a -> s {httpStatus = a} :: StartSavingsPlansPurchaseRecommendationGenerationResponse)
instance
Prelude.NFData
StartSavingsPlansPurchaseRecommendationGenerationResponse
where
rnf
StartSavingsPlansPurchaseRecommendationGenerationResponse' {..} =
Prelude.rnf estimatedCompletionTime
`Prelude.seq` Prelude.rnf generationStartedTime
`Prelude.seq` Prelude.rnf recommendationId
`Prelude.seq` Prelude.rnf httpStatus