/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace CostExplorer { namespace Model { /** *

A specific reservation that Amazon Web Services recommends for * purchase.

See Also:

AWS * API Reference

*/ class ReservationPurchaseRecommendation { public: AWS_COSTEXPLORER_API ReservationPurchaseRecommendation(); AWS_COSTEXPLORER_API ReservationPurchaseRecommendation(Aws::Utils::Json::JsonView jsonValue); AWS_COSTEXPLORER_API ReservationPurchaseRecommendation& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_COSTEXPLORER_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The account scope that Amazon Web Services recommends that you purchase this * instance for. For example, you can purchase this reservation for an entire * organization in Amazon Web Services Organizations.

*/ inline const AccountScope& GetAccountScope() const{ return m_accountScope; } /** *

The account scope that Amazon Web Services recommends that you purchase this * instance for. For example, you can purchase this reservation for an entire * organization in Amazon Web Services Organizations.

*/ inline bool AccountScopeHasBeenSet() const { return m_accountScopeHasBeenSet; } /** *

The account scope that Amazon Web Services recommends that you purchase this * instance for. For example, you can purchase this reservation for an entire * organization in Amazon Web Services Organizations.

*/ inline void SetAccountScope(const AccountScope& value) { m_accountScopeHasBeenSet = true; m_accountScope = value; } /** *

The account scope that Amazon Web Services recommends that you purchase this * instance for. For example, you can purchase this reservation for an entire * organization in Amazon Web Services Organizations.

*/ inline void SetAccountScope(AccountScope&& value) { m_accountScopeHasBeenSet = true; m_accountScope = std::move(value); } /** *

The account scope that Amazon Web Services recommends that you purchase this * instance for. For example, you can purchase this reservation for an entire * organization in Amazon Web Services Organizations.

*/ inline ReservationPurchaseRecommendation& WithAccountScope(const AccountScope& value) { SetAccountScope(value); return *this;} /** *

The account scope that Amazon Web Services recommends that you purchase this * instance for. For example, you can purchase this reservation for an entire * organization in Amazon Web Services Organizations.

*/ inline ReservationPurchaseRecommendation& WithAccountScope(AccountScope&& value) { SetAccountScope(std::move(value)); return *this;} /** *

How many days of previous usage that Amazon Web Services considers when * making this recommendation.

*/ inline const LookbackPeriodInDays& GetLookbackPeriodInDays() const{ return m_lookbackPeriodInDays; } /** *

How many days of previous usage that Amazon Web Services considers when * making this recommendation.

*/ inline bool LookbackPeriodInDaysHasBeenSet() const { return m_lookbackPeriodInDaysHasBeenSet; } /** *

How many days of previous usage that Amazon Web Services considers when * making this recommendation.

*/ inline void SetLookbackPeriodInDays(const LookbackPeriodInDays& value) { m_lookbackPeriodInDaysHasBeenSet = true; m_lookbackPeriodInDays = value; } /** *

How many days of previous usage that Amazon Web Services considers when * making this recommendation.

*/ inline void SetLookbackPeriodInDays(LookbackPeriodInDays&& value) { m_lookbackPeriodInDaysHasBeenSet = true; m_lookbackPeriodInDays = std::move(value); } /** *

How many days of previous usage that Amazon Web Services considers when * making this recommendation.

*/ inline ReservationPurchaseRecommendation& WithLookbackPeriodInDays(const LookbackPeriodInDays& value) { SetLookbackPeriodInDays(value); return *this;} /** *

How many days of previous usage that Amazon Web Services considers when * making this recommendation.

*/ inline ReservationPurchaseRecommendation& WithLookbackPeriodInDays(LookbackPeriodInDays&& value) { SetLookbackPeriodInDays(std::move(value)); return *this;} /** *

The term of the reservation that you want recommendations for, in years.

*/ inline const TermInYears& GetTermInYears() const{ return m_termInYears; } /** *

The term of the reservation that you want recommendations for, in years.

*/ inline bool TermInYearsHasBeenSet() const { return m_termInYearsHasBeenSet; } /** *

The term of the reservation that you want recommendations for, in years.

*/ inline void SetTermInYears(const TermInYears& value) { m_termInYearsHasBeenSet = true; m_termInYears = value; } /** *

The term of the reservation that you want recommendations for, in years.

*/ inline void SetTermInYears(TermInYears&& value) { m_termInYearsHasBeenSet = true; m_termInYears = std::move(value); } /** *

The term of the reservation that you want recommendations for, in years.

*/ inline ReservationPurchaseRecommendation& WithTermInYears(const TermInYears& value) { SetTermInYears(value); return *this;} /** *

The term of the reservation that you want recommendations for, in years.

*/ inline ReservationPurchaseRecommendation& WithTermInYears(TermInYears&& value) { SetTermInYears(std::move(value)); return *this;} /** *

The payment option for the reservation (for example, AllUpfront * or NoUpfront).

*/ inline const PaymentOption& GetPaymentOption() const{ return m_paymentOption; } /** *

The payment option for the reservation (for example, AllUpfront * or NoUpfront).

*/ inline bool PaymentOptionHasBeenSet() const { return m_paymentOptionHasBeenSet; } /** *

The payment option for the reservation (for example, AllUpfront * or NoUpfront).

*/ inline void SetPaymentOption(const PaymentOption& value) { m_paymentOptionHasBeenSet = true; m_paymentOption = value; } /** *

The payment option for the reservation (for example, AllUpfront * or NoUpfront).

*/ inline void SetPaymentOption(PaymentOption&& value) { m_paymentOptionHasBeenSet = true; m_paymentOption = std::move(value); } /** *

The payment option for the reservation (for example, AllUpfront * or NoUpfront).

*/ inline ReservationPurchaseRecommendation& WithPaymentOption(const PaymentOption& value) { SetPaymentOption(value); return *this;} /** *

The payment option for the reservation (for example, AllUpfront * or NoUpfront).

*/ inline ReservationPurchaseRecommendation& WithPaymentOption(PaymentOption&& value) { SetPaymentOption(std::move(value)); return *this;} /** *

Hardware specifications for the service that you want recommendations * for.

*/ inline const ServiceSpecification& GetServiceSpecification() const{ return m_serviceSpecification; } /** *

Hardware specifications for the service that you want recommendations * for.

*/ inline bool ServiceSpecificationHasBeenSet() const { return m_serviceSpecificationHasBeenSet; } /** *

Hardware specifications for the service that you want recommendations * for.

*/ inline void SetServiceSpecification(const ServiceSpecification& value) { m_serviceSpecificationHasBeenSet = true; m_serviceSpecification = value; } /** *

Hardware specifications for the service that you want recommendations * for.

*/ inline void SetServiceSpecification(ServiceSpecification&& value) { m_serviceSpecificationHasBeenSet = true; m_serviceSpecification = std::move(value); } /** *

Hardware specifications for the service that you want recommendations * for.

*/ inline ReservationPurchaseRecommendation& WithServiceSpecification(const ServiceSpecification& value) { SetServiceSpecification(value); return *this;} /** *

Hardware specifications for the service that you want recommendations * for.

*/ inline ReservationPurchaseRecommendation& WithServiceSpecification(ServiceSpecification&& value) { SetServiceSpecification(std::move(value)); return *this;} /** *

Details about the recommended purchases.

*/ inline const Aws::Vector& GetRecommendationDetails() const{ return m_recommendationDetails; } /** *

Details about the recommended purchases.

*/ inline bool RecommendationDetailsHasBeenSet() const { return m_recommendationDetailsHasBeenSet; } /** *

Details about the recommended purchases.

*/ inline void SetRecommendationDetails(const Aws::Vector& value) { m_recommendationDetailsHasBeenSet = true; m_recommendationDetails = value; } /** *

Details about the recommended purchases.

*/ inline void SetRecommendationDetails(Aws::Vector&& value) { m_recommendationDetailsHasBeenSet = true; m_recommendationDetails = std::move(value); } /** *

Details about the recommended purchases.

*/ inline ReservationPurchaseRecommendation& WithRecommendationDetails(const Aws::Vector& value) { SetRecommendationDetails(value); return *this;} /** *

Details about the recommended purchases.

*/ inline ReservationPurchaseRecommendation& WithRecommendationDetails(Aws::Vector&& value) { SetRecommendationDetails(std::move(value)); return *this;} /** *

Details about the recommended purchases.

*/ inline ReservationPurchaseRecommendation& AddRecommendationDetails(const ReservationPurchaseRecommendationDetail& value) { m_recommendationDetailsHasBeenSet = true; m_recommendationDetails.push_back(value); return *this; } /** *

Details about the recommended purchases.

*/ inline ReservationPurchaseRecommendation& AddRecommendationDetails(ReservationPurchaseRecommendationDetail&& value) { m_recommendationDetailsHasBeenSet = true; m_recommendationDetails.push_back(std::move(value)); return *this; } /** *

A summary about the recommended purchase.

*/ inline const ReservationPurchaseRecommendationSummary& GetRecommendationSummary() const{ return m_recommendationSummary; } /** *

A summary about the recommended purchase.

*/ inline bool RecommendationSummaryHasBeenSet() const { return m_recommendationSummaryHasBeenSet; } /** *

A summary about the recommended purchase.

*/ inline void SetRecommendationSummary(const ReservationPurchaseRecommendationSummary& value) { m_recommendationSummaryHasBeenSet = true; m_recommendationSummary = value; } /** *

A summary about the recommended purchase.

*/ inline void SetRecommendationSummary(ReservationPurchaseRecommendationSummary&& value) { m_recommendationSummaryHasBeenSet = true; m_recommendationSummary = std::move(value); } /** *

A summary about the recommended purchase.

*/ inline ReservationPurchaseRecommendation& WithRecommendationSummary(const ReservationPurchaseRecommendationSummary& value) { SetRecommendationSummary(value); return *this;} /** *

A summary about the recommended purchase.

*/ inline ReservationPurchaseRecommendation& WithRecommendationSummary(ReservationPurchaseRecommendationSummary&& value) { SetRecommendationSummary(std::move(value)); return *this;} private: AccountScope m_accountScope; bool m_accountScopeHasBeenSet = false; LookbackPeriodInDays m_lookbackPeriodInDays; bool m_lookbackPeriodInDaysHasBeenSet = false; TermInYears m_termInYears; bool m_termInYearsHasBeenSet = false; PaymentOption m_paymentOption; bool m_paymentOptionHasBeenSet = false; ServiceSpecification m_serviceSpecification; bool m_serviceSpecificationHasBeenSet = false; Aws::Vector m_recommendationDetails; bool m_recommendationDetailsHasBeenSet = false; ReservationPurchaseRecommendationSummary m_recommendationSummary; bool m_recommendationSummaryHasBeenSet = false; }; } // namespace Model } // namespace CostExplorer } // namespace Aws