{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.CostExplorer.GetReservationPurchaseRecommendation
(
getReservationPurchaseRecommendation
, GetReservationPurchaseRecommendation
, grprNextPageToken
, grprTermInYears
, grprServiceSpecification
, grprAccountScope
, grprAccountId
, grprPageSize
, grprLookbackPeriodInDays
, grprPaymentOption
, grprService
, getReservationPurchaseRecommendationResponse
, GetReservationPurchaseRecommendationResponse
, grprrsNextPageToken
, grprrsRecommendations
, grprrsMetadata
, grprrsResponseStatus
) where
import Network.AWS.CostExplorer.Types
import Network.AWS.CostExplorer.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data GetReservationPurchaseRecommendation = GetReservationPurchaseRecommendation'
{ _grprNextPageToken :: !(Maybe Text)
, _grprTermInYears :: !(Maybe TermInYears)
, _grprServiceSpecification :: !(Maybe ServiceSpecification)
, _grprAccountScope :: !(Maybe AccountScope)
, _grprAccountId :: !(Maybe Text)
, _grprPageSize :: !(Maybe Nat)
, _grprLookbackPeriodInDays :: !(Maybe LookbackPeriodInDays)
, _grprPaymentOption :: !(Maybe PaymentOption)
, _grprService :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
getReservationPurchaseRecommendation
:: Text
-> GetReservationPurchaseRecommendation
getReservationPurchaseRecommendation pService_ =
GetReservationPurchaseRecommendation'
{ _grprNextPageToken = Nothing
, _grprTermInYears = Nothing
, _grprServiceSpecification = Nothing
, _grprAccountScope = Nothing
, _grprAccountId = Nothing
, _grprPageSize = Nothing
, _grprLookbackPeriodInDays = Nothing
, _grprPaymentOption = Nothing
, _grprService = pService_
}
grprNextPageToken :: Lens' GetReservationPurchaseRecommendation (Maybe Text)
grprNextPageToken = lens _grprNextPageToken (\ s a -> s{_grprNextPageToken = a})
grprTermInYears :: Lens' GetReservationPurchaseRecommendation (Maybe TermInYears)
grprTermInYears = lens _grprTermInYears (\ s a -> s{_grprTermInYears = a})
grprServiceSpecification :: Lens' GetReservationPurchaseRecommendation (Maybe ServiceSpecification)
grprServiceSpecification = lens _grprServiceSpecification (\ s a -> s{_grprServiceSpecification = a})
grprAccountScope :: Lens' GetReservationPurchaseRecommendation (Maybe AccountScope)
grprAccountScope = lens _grprAccountScope (\ s a -> s{_grprAccountScope = a})
grprAccountId :: Lens' GetReservationPurchaseRecommendation (Maybe Text)
grprAccountId = lens _grprAccountId (\ s a -> s{_grprAccountId = a})
grprPageSize :: Lens' GetReservationPurchaseRecommendation (Maybe Natural)
grprPageSize = lens _grprPageSize (\ s a -> s{_grprPageSize = a}) . mapping _Nat
grprLookbackPeriodInDays :: Lens' GetReservationPurchaseRecommendation (Maybe LookbackPeriodInDays)
grprLookbackPeriodInDays = lens _grprLookbackPeriodInDays (\ s a -> s{_grprLookbackPeriodInDays = a})
grprPaymentOption :: Lens' GetReservationPurchaseRecommendation (Maybe PaymentOption)
grprPaymentOption = lens _grprPaymentOption (\ s a -> s{_grprPaymentOption = a})
grprService :: Lens' GetReservationPurchaseRecommendation Text
grprService = lens _grprService (\ s a -> s{_grprService = a})
instance AWSRequest
GetReservationPurchaseRecommendation
where
type Rs GetReservationPurchaseRecommendation =
GetReservationPurchaseRecommendationResponse
request = postJSON costExplorer
response
= receiveJSON
(\ s h x ->
GetReservationPurchaseRecommendationResponse' <$>
(x .?> "NextPageToken") <*>
(x .?> "Recommendations" .!@ mempty)
<*> (x .?> "Metadata")
<*> (pure (fromEnum s)))
instance Hashable
GetReservationPurchaseRecommendation
where
instance NFData GetReservationPurchaseRecommendation
where
instance ToHeaders
GetReservationPurchaseRecommendation
where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSInsightsIndexService.GetReservationPurchaseRecommendation"
:: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON GetReservationPurchaseRecommendation
where
toJSON GetReservationPurchaseRecommendation'{..}
= object
(catMaybes
[("NextPageToken" .=) <$> _grprNextPageToken,
("TermInYears" .=) <$> _grprTermInYears,
("ServiceSpecification" .=) <$>
_grprServiceSpecification,
("AccountScope" .=) <$> _grprAccountScope,
("AccountId" .=) <$> _grprAccountId,
("PageSize" .=) <$> _grprPageSize,
("LookbackPeriodInDays" .=) <$>
_grprLookbackPeriodInDays,
("PaymentOption" .=) <$> _grprPaymentOption,
Just ("Service" .= _grprService)])
instance ToPath GetReservationPurchaseRecommendation
where
toPath = const "/"
instance ToQuery GetReservationPurchaseRecommendation
where
toQuery = const mempty
data GetReservationPurchaseRecommendationResponse = GetReservationPurchaseRecommendationResponse'
{ _grprrsNextPageToken :: !(Maybe Text)
, _grprrsRecommendations :: !(Maybe [ReservationPurchaseRecommendation])
, _grprrsMetadata :: !(Maybe ReservationPurchaseRecommendationMetadata)
, _grprrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
getReservationPurchaseRecommendationResponse
:: Int
-> GetReservationPurchaseRecommendationResponse
getReservationPurchaseRecommendationResponse pResponseStatus_ =
GetReservationPurchaseRecommendationResponse'
{ _grprrsNextPageToken = Nothing
, _grprrsRecommendations = Nothing
, _grprrsMetadata = Nothing
, _grprrsResponseStatus = pResponseStatus_
}
grprrsNextPageToken :: Lens' GetReservationPurchaseRecommendationResponse (Maybe Text)
grprrsNextPageToken = lens _grprrsNextPageToken (\ s a -> s{_grprrsNextPageToken = a})
grprrsRecommendations :: Lens' GetReservationPurchaseRecommendationResponse [ReservationPurchaseRecommendation]
grprrsRecommendations = lens _grprrsRecommendations (\ s a -> s{_grprrsRecommendations = a}) . _Default . _Coerce
grprrsMetadata :: Lens' GetReservationPurchaseRecommendationResponse (Maybe ReservationPurchaseRecommendationMetadata)
grprrsMetadata = lens _grprrsMetadata (\ s a -> s{_grprrsMetadata = a})
grprrsResponseStatus :: Lens' GetReservationPurchaseRecommendationResponse Int
grprrsResponseStatus = lens _grprrsResponseStatus (\ s a -> s{_grprrsResponseStatus = a})
instance NFData
GetReservationPurchaseRecommendationResponse
where