/** * 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 namespace Aws { namespace CostExplorer { namespace Model { /** */ class GetCostForecastRequest : public CostExplorerRequest { public: AWS_COSTEXPLORER_API GetCostForecastRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "GetCostForecast"; } AWS_COSTEXPLORER_API Aws::String SerializePayload() const override; AWS_COSTEXPLORER_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; /** *

The period of time that you want the forecast to cover. The start date must * be equal to or no later than the current date to avoid a validation error.

*/ inline const DateInterval& GetTimePeriod() const{ return m_timePeriod; } /** *

The period of time that you want the forecast to cover. The start date must * be equal to or no later than the current date to avoid a validation error.

*/ inline bool TimePeriodHasBeenSet() const { return m_timePeriodHasBeenSet; } /** *

The period of time that you want the forecast to cover. The start date must * be equal to or no later than the current date to avoid a validation error.

*/ inline void SetTimePeriod(const DateInterval& value) { m_timePeriodHasBeenSet = true; m_timePeriod = value; } /** *

The period of time that you want the forecast to cover. The start date must * be equal to or no later than the current date to avoid a validation error.

*/ inline void SetTimePeriod(DateInterval&& value) { m_timePeriodHasBeenSet = true; m_timePeriod = std::move(value); } /** *

The period of time that you want the forecast to cover. The start date must * be equal to or no later than the current date to avoid a validation error.

*/ inline GetCostForecastRequest& WithTimePeriod(const DateInterval& value) { SetTimePeriod(value); return *this;} /** *

The period of time that you want the forecast to cover. The start date must * be equal to or no later than the current date to avoid a validation error.

*/ inline GetCostForecastRequest& WithTimePeriod(DateInterval&& value) { SetTimePeriod(std::move(value)); return *this;} /** *

Which metric Cost Explorer uses to create your forecast. For more information * about blended and unblended rates, see Why * does the "blended" annotation appear on some line items in my bill?.

*

Valid values for a GetCostForecast call are the following:

*
  • AMORTIZED_COST

  • BLENDED_COST

  • *

    NET_AMORTIZED_COST

  • NET_UNBLENDED_COST

  • *

    UNBLENDED_COST

*/ inline const Metric& GetMetric() const{ return m_metric; } /** *

Which metric Cost Explorer uses to create your forecast. For more information * about blended and unblended rates, see Why * does the "blended" annotation appear on some line items in my bill?.

*

Valid values for a GetCostForecast call are the following:

*
  • AMORTIZED_COST

  • BLENDED_COST

  • *

    NET_AMORTIZED_COST

  • NET_UNBLENDED_COST

  • *

    UNBLENDED_COST

*/ inline bool MetricHasBeenSet() const { return m_metricHasBeenSet; } /** *

Which metric Cost Explorer uses to create your forecast. For more information * about blended and unblended rates, see Why * does the "blended" annotation appear on some line items in my bill?.

*

Valid values for a GetCostForecast call are the following:

*
  • AMORTIZED_COST

  • BLENDED_COST

  • *

    NET_AMORTIZED_COST

  • NET_UNBLENDED_COST

  • *

    UNBLENDED_COST

*/ inline void SetMetric(const Metric& value) { m_metricHasBeenSet = true; m_metric = value; } /** *

Which metric Cost Explorer uses to create your forecast. For more information * about blended and unblended rates, see Why * does the "blended" annotation appear on some line items in my bill?.

*

Valid values for a GetCostForecast call are the following:

*
  • AMORTIZED_COST

  • BLENDED_COST

  • *

    NET_AMORTIZED_COST

  • NET_UNBLENDED_COST

  • *

    UNBLENDED_COST

*/ inline void SetMetric(Metric&& value) { m_metricHasBeenSet = true; m_metric = std::move(value); } /** *

Which metric Cost Explorer uses to create your forecast. For more information * about blended and unblended rates, see Why * does the "blended" annotation appear on some line items in my bill?.

*

Valid values for a GetCostForecast call are the following:

*
  • AMORTIZED_COST

  • BLENDED_COST

  • *

    NET_AMORTIZED_COST

  • NET_UNBLENDED_COST

  • *

    UNBLENDED_COST

*/ inline GetCostForecastRequest& WithMetric(const Metric& value) { SetMetric(value); return *this;} /** *

Which metric Cost Explorer uses to create your forecast. For more information * about blended and unblended rates, see Why * does the "blended" annotation appear on some line items in my bill?.

*

Valid values for a GetCostForecast call are the following:

*
  • AMORTIZED_COST

  • BLENDED_COST

  • *

    NET_AMORTIZED_COST

  • NET_UNBLENDED_COST

  • *

    UNBLENDED_COST

*/ inline GetCostForecastRequest& WithMetric(Metric&& value) { SetMetric(std::move(value)); return *this;} /** *

How granular you want the forecast to be. You can get 3 months of * DAILY forecasts or 12 months of MONTHLY forecasts.

*

The GetCostForecast operation supports only DAILY * and MONTHLY granularities.

*/ inline const Granularity& GetGranularity() const{ return m_granularity; } /** *

How granular you want the forecast to be. You can get 3 months of * DAILY forecasts or 12 months of MONTHLY forecasts.

*

The GetCostForecast operation supports only DAILY * and MONTHLY granularities.

*/ inline bool GranularityHasBeenSet() const { return m_granularityHasBeenSet; } /** *

How granular you want the forecast to be. You can get 3 months of * DAILY forecasts or 12 months of MONTHLY forecasts.

*

The GetCostForecast operation supports only DAILY * and MONTHLY granularities.

*/ inline void SetGranularity(const Granularity& value) { m_granularityHasBeenSet = true; m_granularity = value; } /** *

How granular you want the forecast to be. You can get 3 months of * DAILY forecasts or 12 months of MONTHLY forecasts.

*

The GetCostForecast operation supports only DAILY * and MONTHLY granularities.

*/ inline void SetGranularity(Granularity&& value) { m_granularityHasBeenSet = true; m_granularity = std::move(value); } /** *

How granular you want the forecast to be. You can get 3 months of * DAILY forecasts or 12 months of MONTHLY forecasts.

*

The GetCostForecast operation supports only DAILY * and MONTHLY granularities.

*/ inline GetCostForecastRequest& WithGranularity(const Granularity& value) { SetGranularity(value); return *this;} /** *

How granular you want the forecast to be. You can get 3 months of * DAILY forecasts or 12 months of MONTHLY forecasts.

*

The GetCostForecast operation supports only DAILY * and MONTHLY granularities.

*/ inline GetCostForecastRequest& WithGranularity(Granularity&& value) { SetGranularity(std::move(value)); return *this;} /** *

The filters that you want to use to filter your forecast. The * GetCostForecast API supports filtering by the following * dimensions:

  • AZ

  • * INSTANCE_TYPE

  • LINKED_ACCOUNT

    *
  • LINKED_ACCOUNT_NAME

  • * OPERATION

  • PURCHASE_TYPE

  • *
  • REGION

  • SERVICE

  • *
  • USAGE_TYPE

  • * USAGE_TYPE_GROUP

  • RECORD_TYPE

    *
  • OPERATING_SYSTEM

  • * TENANCY

  • SCOPE

  • * PLATFORM

  • SUBSCRIPTION_ID

    *
  • LEGAL_ENTITY_NAME

  • * DEPLOYMENT_OPTION

  • DATABASE_ENGINE *

  • INSTANCE_TYPE_FAMILY

  • * BILLING_ENTITY

  • RESERVATION_ID

    *
  • SAVINGS_PLAN_ARN

*/ inline const Expression& GetFilter() const{ return m_filter; } /** *

The filters that you want to use to filter your forecast. The * GetCostForecast API supports filtering by the following * dimensions:

  • AZ

  • * INSTANCE_TYPE

  • LINKED_ACCOUNT

    *
  • LINKED_ACCOUNT_NAME

  • * OPERATION

  • PURCHASE_TYPE

  • *
  • REGION

  • SERVICE

  • *
  • USAGE_TYPE

  • * USAGE_TYPE_GROUP

  • RECORD_TYPE

    *
  • OPERATING_SYSTEM

  • * TENANCY

  • SCOPE

  • * PLATFORM

  • SUBSCRIPTION_ID

    *
  • LEGAL_ENTITY_NAME

  • * DEPLOYMENT_OPTION

  • DATABASE_ENGINE *

  • INSTANCE_TYPE_FAMILY

  • * BILLING_ENTITY

  • RESERVATION_ID

    *
  • SAVINGS_PLAN_ARN

*/ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; } /** *

The filters that you want to use to filter your forecast. The * GetCostForecast API supports filtering by the following * dimensions:

  • AZ

  • * INSTANCE_TYPE

  • LINKED_ACCOUNT

    *
  • LINKED_ACCOUNT_NAME

  • * OPERATION

  • PURCHASE_TYPE

  • *
  • REGION

  • SERVICE

  • *
  • USAGE_TYPE

  • * USAGE_TYPE_GROUP

  • RECORD_TYPE

    *
  • OPERATING_SYSTEM

  • * TENANCY

  • SCOPE

  • * PLATFORM

  • SUBSCRIPTION_ID

    *
  • LEGAL_ENTITY_NAME

  • * DEPLOYMENT_OPTION

  • DATABASE_ENGINE *

  • INSTANCE_TYPE_FAMILY

  • * BILLING_ENTITY

  • RESERVATION_ID

    *
  • SAVINGS_PLAN_ARN

*/ inline void SetFilter(const Expression& value) { m_filterHasBeenSet = true; m_filter = value; } /** *

The filters that you want to use to filter your forecast. The * GetCostForecast API supports filtering by the following * dimensions:

  • AZ

  • * INSTANCE_TYPE

  • LINKED_ACCOUNT

    *
  • LINKED_ACCOUNT_NAME

  • * OPERATION

  • PURCHASE_TYPE

  • *
  • REGION

  • SERVICE

  • *
  • USAGE_TYPE

  • * USAGE_TYPE_GROUP

  • RECORD_TYPE

    *
  • OPERATING_SYSTEM

  • * TENANCY

  • SCOPE

  • * PLATFORM

  • SUBSCRIPTION_ID

    *
  • LEGAL_ENTITY_NAME

  • * DEPLOYMENT_OPTION

  • DATABASE_ENGINE *

  • INSTANCE_TYPE_FAMILY

  • * BILLING_ENTITY

  • RESERVATION_ID

    *
  • SAVINGS_PLAN_ARN

*/ inline void SetFilter(Expression&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); } /** *

The filters that you want to use to filter your forecast. The * GetCostForecast API supports filtering by the following * dimensions:

  • AZ

  • * INSTANCE_TYPE

  • LINKED_ACCOUNT

    *
  • LINKED_ACCOUNT_NAME

  • * OPERATION

  • PURCHASE_TYPE

  • *
  • REGION

  • SERVICE

  • *
  • USAGE_TYPE

  • * USAGE_TYPE_GROUP

  • RECORD_TYPE

    *
  • OPERATING_SYSTEM

  • * TENANCY

  • SCOPE

  • * PLATFORM

  • SUBSCRIPTION_ID

    *
  • LEGAL_ENTITY_NAME

  • * DEPLOYMENT_OPTION

  • DATABASE_ENGINE *

  • INSTANCE_TYPE_FAMILY

  • * BILLING_ENTITY

  • RESERVATION_ID

    *
  • SAVINGS_PLAN_ARN

*/ inline GetCostForecastRequest& WithFilter(const Expression& value) { SetFilter(value); return *this;} /** *

The filters that you want to use to filter your forecast. The * GetCostForecast API supports filtering by the following * dimensions:

  • AZ

  • * INSTANCE_TYPE

  • LINKED_ACCOUNT

    *
  • LINKED_ACCOUNT_NAME

  • * OPERATION

  • PURCHASE_TYPE

  • *
  • REGION

  • SERVICE

  • *
  • USAGE_TYPE

  • * USAGE_TYPE_GROUP

  • RECORD_TYPE

    *
  • OPERATING_SYSTEM

  • * TENANCY

  • SCOPE

  • * PLATFORM

  • SUBSCRIPTION_ID

    *
  • LEGAL_ENTITY_NAME

  • * DEPLOYMENT_OPTION

  • DATABASE_ENGINE *

  • INSTANCE_TYPE_FAMILY

  • * BILLING_ENTITY

  • RESERVATION_ID

    *
  • SAVINGS_PLAN_ARN

*/ inline GetCostForecastRequest& WithFilter(Expression&& value) { SetFilter(std::move(value)); return *this;} /** *

Cost Explorer always returns the mean forecast as a single point. You can * request a prediction interval around the mean by specifying a confidence level. * The higher the confidence level, the more confident Cost Explorer is about the * actual value falling in the prediction interval. Higher confidence levels result * in wider prediction intervals.

*/ inline int GetPredictionIntervalLevel() const{ return m_predictionIntervalLevel; } /** *

Cost Explorer always returns the mean forecast as a single point. You can * request a prediction interval around the mean by specifying a confidence level. * The higher the confidence level, the more confident Cost Explorer is about the * actual value falling in the prediction interval. Higher confidence levels result * in wider prediction intervals.

*/ inline bool PredictionIntervalLevelHasBeenSet() const { return m_predictionIntervalLevelHasBeenSet; } /** *

Cost Explorer always returns the mean forecast as a single point. You can * request a prediction interval around the mean by specifying a confidence level. * The higher the confidence level, the more confident Cost Explorer is about the * actual value falling in the prediction interval. Higher confidence levels result * in wider prediction intervals.

*/ inline void SetPredictionIntervalLevel(int value) { m_predictionIntervalLevelHasBeenSet = true; m_predictionIntervalLevel = value; } /** *

Cost Explorer always returns the mean forecast as a single point. You can * request a prediction interval around the mean by specifying a confidence level. * The higher the confidence level, the more confident Cost Explorer is about the * actual value falling in the prediction interval. Higher confidence levels result * in wider prediction intervals.

*/ inline GetCostForecastRequest& WithPredictionIntervalLevel(int value) { SetPredictionIntervalLevel(value); return *this;} private: DateInterval m_timePeriod; bool m_timePeriodHasBeenSet = false; Metric m_metric; bool m_metricHasBeenSet = false; Granularity m_granularity; bool m_granularityHasBeenSet = false; Expression m_filter; bool m_filterHasBeenSet = false; int m_predictionIntervalLevel; bool m_predictionIntervalLevelHasBeenSet = false; }; } // namespace Model } // namespace CostExplorer } // namespace Aws