/** * 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 GetUsageForecastRequest : public CostExplorerRequest { public: AWS_COSTEXPLORER_API GetUsageForecastRequest(); // 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 "GetUsageForecast"; } AWS_COSTEXPLORER_API Aws::String SerializePayload() const override; AWS_COSTEXPLORER_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; /** *

The start and end dates of the period that you want to retrieve usage * forecast for. The start date is included in the period, but the end date isn't * included in the period. For example, if start is * 2017-01-01 and end is 2017-05-01, then * the cost and usage data is retrieved from 2017-01-01 up to and * including 2017-04-30 but not including 2017-05-01. The * start date must be equal to or later than the current date to avoid a validation * error.

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

The start and end dates of the period that you want to retrieve usage * forecast for. The start date is included in the period, but the end date isn't * included in the period. For example, if start is * 2017-01-01 and end is 2017-05-01, then * the cost and usage data is retrieved from 2017-01-01 up to and * including 2017-04-30 but not including 2017-05-01. The * start date must be equal to or later than the current date to avoid a validation * error.

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

The start and end dates of the period that you want to retrieve usage * forecast for. The start date is included in the period, but the end date isn't * included in the period. For example, if start is * 2017-01-01 and end is 2017-05-01, then * the cost and usage data is retrieved from 2017-01-01 up to and * including 2017-04-30 but not including 2017-05-01. The * start date must be equal to or later than the current date to avoid a validation * error.

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

The start and end dates of the period that you want to retrieve usage * forecast for. The start date is included in the period, but the end date isn't * included in the period. For example, if start is * 2017-01-01 and end is 2017-05-01, then * the cost and usage data is retrieved from 2017-01-01 up to and * including 2017-04-30 but not including 2017-05-01. The * start date must be equal to or later than the current date to avoid a validation * error.

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

The start and end dates of the period that you want to retrieve usage * forecast for. The start date is included in the period, but the end date isn't * included in the period. For example, if start is * 2017-01-01 and end is 2017-05-01, then * the cost and usage data is retrieved from 2017-01-01 up to and * including 2017-04-30 but not including 2017-05-01. The * start date must be equal to or later than the current date to avoid a validation * error.

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

The start and end dates of the period that you want to retrieve usage * forecast for. The start date is included in the period, but the end date isn't * included in the period. For example, if start is * 2017-01-01 and end is 2017-05-01, then * the cost and usage data is retrieved from 2017-01-01 up to and * including 2017-04-30 but not including 2017-05-01. The * start date must be equal to or later than the current date to avoid a validation * error.

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

Which metric Cost Explorer uses to create your forecast.

Valid values * for a GetUsageForecast call are the following:

  • *

    USAGE_QUANTITY

  • NORMALIZED_USAGE_AMOUNT

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

Which metric Cost Explorer uses to create your forecast.

Valid values * for a GetUsageForecast call are the following:

  • *

    USAGE_QUANTITY

  • NORMALIZED_USAGE_AMOUNT

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

Which metric Cost Explorer uses to create your forecast.

Valid values * for a GetUsageForecast call are the following:

  • *

    USAGE_QUANTITY

  • NORMALIZED_USAGE_AMOUNT

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

Which metric Cost Explorer uses to create your forecast.

Valid values * for a GetUsageForecast call are the following:

  • *

    USAGE_QUANTITY

  • NORMALIZED_USAGE_AMOUNT

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

Which metric Cost Explorer uses to create your forecast.

Valid values * for a GetUsageForecast call are the following:

  • *

    USAGE_QUANTITY

  • NORMALIZED_USAGE_AMOUNT

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

Which metric Cost Explorer uses to create your forecast.

Valid values * for a GetUsageForecast call are the following:

  • *

    USAGE_QUANTITY

  • NORMALIZED_USAGE_AMOUNT

*/ inline GetUsageForecastRequest& 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 GetUsageForecast 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 GetUsageForecast 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 GetUsageForecast 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 GetUsageForecast 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 GetUsageForecast operation supports only DAILY * and MONTHLY granularities.

*/ inline GetUsageForecastRequest& 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 GetUsageForecast operation supports only DAILY * and MONTHLY granularities.

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

The filters that you want to use to filter your forecast. The * GetUsageForecast 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 * GetUsageForecast 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 * GetUsageForecast 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 * GetUsageForecast 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 * GetUsageForecast 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 GetUsageForecastRequest& WithFilter(const Expression& value) { SetFilter(value); return *this;} /** *

The filters that you want to use to filter your forecast. The * GetUsageForecast 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 GetUsageForecastRequest& WithFilter(Expression&& value) { SetFilter(std::move(value)); return *this;} /** *

Amazon Web Services 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; } /** *

Amazon Web Services 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; } /** *

Amazon Web Services 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; } /** *

Amazon Web Services 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 GetUsageForecastRequest& 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