/** * 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Http { class HttpClient; class HttpClientFactory; } // namespace Http namespace Utils { template< typename R, typename E> class Outcome; namespace Threading { class Executor; } // namespace Threading } // namespace Utils namespace Auth { class AWSCredentials; class AWSCredentialsProvider; } // namespace Auth namespace Client { class RetryStrategy; } // namespace Client namespace Budgets { namespace Model { class CreateBudgetRequest; class CreateNotificationRequest; class CreateSubscriberRequest; class DeleteBudgetRequest; class DeleteNotificationRequest; class DeleteSubscriberRequest; class DescribeBudgetRequest; class DescribeBudgetPerformanceHistoryRequest; class DescribeBudgetsRequest; class DescribeNotificationsForBudgetRequest; class DescribeSubscribersForNotificationRequest; class UpdateBudgetRequest; class UpdateNotificationRequest; class UpdateSubscriberRequest; typedef Aws::Utils::Outcome CreateBudgetOutcome; typedef Aws::Utils::Outcome CreateNotificationOutcome; typedef Aws::Utils::Outcome CreateSubscriberOutcome; typedef Aws::Utils::Outcome DeleteBudgetOutcome; typedef Aws::Utils::Outcome DeleteNotificationOutcome; typedef Aws::Utils::Outcome DeleteSubscriberOutcome; typedef Aws::Utils::Outcome DescribeBudgetOutcome; typedef Aws::Utils::Outcome DescribeBudgetPerformanceHistoryOutcome; typedef Aws::Utils::Outcome DescribeBudgetsOutcome; typedef Aws::Utils::Outcome DescribeNotificationsForBudgetOutcome; typedef Aws::Utils::Outcome DescribeSubscribersForNotificationOutcome; typedef Aws::Utils::Outcome UpdateBudgetOutcome; typedef Aws::Utils::Outcome UpdateNotificationOutcome; typedef Aws::Utils::Outcome UpdateSubscriberOutcome; typedef std::future CreateBudgetOutcomeCallable; typedef std::future CreateNotificationOutcomeCallable; typedef std::future CreateSubscriberOutcomeCallable; typedef std::future DeleteBudgetOutcomeCallable; typedef std::future DeleteNotificationOutcomeCallable; typedef std::future DeleteSubscriberOutcomeCallable; typedef std::future DescribeBudgetOutcomeCallable; typedef std::future DescribeBudgetPerformanceHistoryOutcomeCallable; typedef std::future DescribeBudgetsOutcomeCallable; typedef std::future DescribeNotificationsForBudgetOutcomeCallable; typedef std::future DescribeSubscribersForNotificationOutcomeCallable; typedef std::future UpdateBudgetOutcomeCallable; typedef std::future UpdateNotificationOutcomeCallable; typedef std::future UpdateSubscriberOutcomeCallable; } // namespace Model class BudgetsClient; typedef std::function&) > CreateBudgetResponseReceivedHandler; typedef std::function&) > CreateNotificationResponseReceivedHandler; typedef std::function&) > CreateSubscriberResponseReceivedHandler; typedef std::function&) > DeleteBudgetResponseReceivedHandler; typedef std::function&) > DeleteNotificationResponseReceivedHandler; typedef std::function&) > DeleteSubscriberResponseReceivedHandler; typedef std::function&) > DescribeBudgetResponseReceivedHandler; typedef std::function&) > DescribeBudgetPerformanceHistoryResponseReceivedHandler; typedef std::function&) > DescribeBudgetsResponseReceivedHandler; typedef std::function&) > DescribeNotificationsForBudgetResponseReceivedHandler; typedef std::function&) > DescribeSubscribersForNotificationResponseReceivedHandler; typedef std::function&) > UpdateBudgetResponseReceivedHandler; typedef std::function&) > UpdateNotificationResponseReceivedHandler; typedef std::function&) > UpdateSubscriberResponseReceivedHandler; /** *

The AWS Budgets API enables you to use AWS Budgets to plan your service * usage, service costs, and instance reservations. The API reference provides * descriptions, syntax, and usage examples for each of the actions and data types * for AWS Budgets.

Budgets provide you with a way to see the following * information:

  • How close your plan is to your budgeted amount or * to the free tier limits

  • Your usage-to-date, including how much * you've used of your Reserved Instances (RIs)

  • Your current * estimated charges from AWS, and how much your predicted usage will accrue in * charges by the end of the month

  • How much of your budget has * been used

AWS updates your budget status several times a day. * Budgets track your unblended costs, subscriptions, refunds, and RIs. You can * create the following types of budgets:

  • Cost budgets - * Plan how much you want to spend on a service.

  • Usage * budgets - Plan how much you want to use one or more services.

  • *

    RI utilization budgets - Define a utilization threshold, and receive * alerts when your RI usage falls below that threshold. This lets you see if your * RIs are unused or under-utilized.

  • RI coverage budgets * - Define a coverage threshold, and receive alerts when the number of your * instance hours that are covered by RIs fall below that threshold. This lets you * see how much of your instance usage is covered by a reservation.

*

Service Endpoint

The AWS Budgets API provides the following * endpoint:

  • https://budgets.amazonaws.com

For * information about costs that are associated with the AWS Budgets API, see AWS Cost Management * Pricing.

*/ class AWS_BUDGETS_API BudgetsClient : public Aws::Client::AWSJsonClient { public: typedef Aws::Client::AWSJsonClient BASECLASS; /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ BudgetsClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ BudgetsClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ BudgetsClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); virtual ~BudgetsClient(); /** *

Creates a budget and, if included, notifications and subscribers.

*

Only one of BudgetLimit or * PlannedBudgetLimits can be present in the syntax at one time. Use * the syntax that matches your case. The Request Syntax section shows the * BudgetLimit syntax. For PlannedBudgetLimits, see the * Examples * section.

See Also:

AWS * API Reference

*/ virtual Model::CreateBudgetOutcome CreateBudget(const Model::CreateBudgetRequest& request) const; /** *

Creates a budget and, if included, notifications and subscribers.

*

Only one of BudgetLimit or * PlannedBudgetLimits can be present in the syntax at one time. Use * the syntax that matches your case. The Request Syntax section shows the * BudgetLimit syntax. For PlannedBudgetLimits, see the * Examples * section.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateBudgetOutcomeCallable CreateBudgetCallable(const Model::CreateBudgetRequest& request) const; /** *

Creates a budget and, if included, notifications and subscribers.

*

Only one of BudgetLimit or * PlannedBudgetLimits can be present in the syntax at one time. Use * the syntax that matches your case. The Request Syntax section shows the * BudgetLimit syntax. For PlannedBudgetLimits, see the * Examples * section.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateBudgetAsync(const Model::CreateBudgetRequest& request, const CreateBudgetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Creates a notification. You must create the budget before you create the * associated notification.

See Also:

AWS * API Reference

*/ virtual Model::CreateNotificationOutcome CreateNotification(const Model::CreateNotificationRequest& request) const; /** *

Creates a notification. You must create the budget before you create the * associated notification.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateNotificationOutcomeCallable CreateNotificationCallable(const Model::CreateNotificationRequest& request) const; /** *

Creates a notification. You must create the budget before you create the * associated notification.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateNotificationAsync(const Model::CreateNotificationRequest& request, const CreateNotificationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Creates a subscriber. You must create the associated budget and notification * before you create the subscriber.

See Also:

AWS * API Reference

*/ virtual Model::CreateSubscriberOutcome CreateSubscriber(const Model::CreateSubscriberRequest& request) const; /** *

Creates a subscriber. You must create the associated budget and notification * before you create the subscriber.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CreateSubscriberOutcomeCallable CreateSubscriberCallable(const Model::CreateSubscriberRequest& request) const; /** *

Creates a subscriber. You must create the associated budget and notification * before you create the subscriber.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CreateSubscriberAsync(const Model::CreateSubscriberRequest& request, const CreateSubscriberResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Deletes a budget. You can delete your budget at any time.

*

Deleting a budget also deletes the notifications and subscribers that are * associated with that budget.

See Also:

AWS * API Reference

*/ virtual Model::DeleteBudgetOutcome DeleteBudget(const Model::DeleteBudgetRequest& request) const; /** *

Deletes a budget. You can delete your budget at any time.

*

Deleting a budget also deletes the notifications and subscribers that are * associated with that budget.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DeleteBudgetOutcomeCallable DeleteBudgetCallable(const Model::DeleteBudgetRequest& request) const; /** *

Deletes a budget. You can delete your budget at any time.

*

Deleting a budget also deletes the notifications and subscribers that are * associated with that budget.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DeleteBudgetAsync(const Model::DeleteBudgetRequest& request, const DeleteBudgetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Deletes a notification.

Deleting a notification also * deletes the subscribers that are associated with the notification.

*

See Also:

AWS * API Reference

*/ virtual Model::DeleteNotificationOutcome DeleteNotification(const Model::DeleteNotificationRequest& request) const; /** *

Deletes a notification.

Deleting a notification also * deletes the subscribers that are associated with the notification.

*

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DeleteNotificationOutcomeCallable DeleteNotificationCallable(const Model::DeleteNotificationRequest& request) const; /** *

Deletes a notification.

Deleting a notification also * deletes the subscribers that are associated with the notification.

*

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DeleteNotificationAsync(const Model::DeleteNotificationRequest& request, const DeleteNotificationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Deletes a subscriber.

Deleting the last subscriber to a * notification also deletes the notification.

See * Also:

AWS * API Reference

*/ virtual Model::DeleteSubscriberOutcome DeleteSubscriber(const Model::DeleteSubscriberRequest& request) const; /** *

Deletes a subscriber.

Deleting the last subscriber to a * notification also deletes the notification.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DeleteSubscriberOutcomeCallable DeleteSubscriberCallable(const Model::DeleteSubscriberRequest& request) const; /** *

Deletes a subscriber.

Deleting the last subscriber to a * notification also deletes the notification.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DeleteSubscriberAsync(const Model::DeleteSubscriberRequest& request, const DeleteSubscriberResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Describes a budget.

The Request Syntax section shows the * BudgetLimit syntax. For PlannedBudgetLimits, see the * Examples * section.

See Also:

AWS * API Reference

*/ virtual Model::DescribeBudgetOutcome DescribeBudget(const Model::DescribeBudgetRequest& request) const; /** *

Describes a budget.

The Request Syntax section shows the * BudgetLimit syntax. For PlannedBudgetLimits, see the * Examples * section.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeBudgetOutcomeCallable DescribeBudgetCallable(const Model::DescribeBudgetRequest& request) const; /** *

Describes a budget.

The Request Syntax section shows the * BudgetLimit syntax. For PlannedBudgetLimits, see the * Examples * section.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeBudgetAsync(const Model::DescribeBudgetRequest& request, const DescribeBudgetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Describes the history for DAILY, MONTHLY, and * QUARTERLY budgets. Budget history isn't available for * ANNUAL budgets.

See Also:

AWS * API Reference

*/ virtual Model::DescribeBudgetPerformanceHistoryOutcome DescribeBudgetPerformanceHistory(const Model::DescribeBudgetPerformanceHistoryRequest& request) const; /** *

Describes the history for DAILY, MONTHLY, and * QUARTERLY budgets. Budget history isn't available for * ANNUAL budgets.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeBudgetPerformanceHistoryOutcomeCallable DescribeBudgetPerformanceHistoryCallable(const Model::DescribeBudgetPerformanceHistoryRequest& request) const; /** *

Describes the history for DAILY, MONTHLY, and * QUARTERLY budgets. Budget history isn't available for * ANNUAL budgets.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeBudgetPerformanceHistoryAsync(const Model::DescribeBudgetPerformanceHistoryRequest& request, const DescribeBudgetPerformanceHistoryResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Lists the budgets that are associated with an account.

The * Request Syntax section shows the BudgetLimit syntax. For * PlannedBudgetLimits, see the Examples * section.

See Also:

AWS * API Reference

*/ virtual Model::DescribeBudgetsOutcome DescribeBudgets(const Model::DescribeBudgetsRequest& request) const; /** *

Lists the budgets that are associated with an account.

The * Request Syntax section shows the BudgetLimit syntax. For * PlannedBudgetLimits, see the Examples * section.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeBudgetsOutcomeCallable DescribeBudgetsCallable(const Model::DescribeBudgetsRequest& request) const; /** *

Lists the budgets that are associated with an account.

The * Request Syntax section shows the BudgetLimit syntax. For * PlannedBudgetLimits, see the Examples * section.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeBudgetsAsync(const Model::DescribeBudgetsRequest& request, const DescribeBudgetsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Lists the notifications that are associated with a budget.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeNotificationsForBudgetOutcome DescribeNotificationsForBudget(const Model::DescribeNotificationsForBudgetRequest& request) const; /** *

Lists the notifications that are associated with a budget.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeNotificationsForBudgetOutcomeCallable DescribeNotificationsForBudgetCallable(const Model::DescribeNotificationsForBudgetRequest& request) const; /** *

Lists the notifications that are associated with a budget.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeNotificationsForBudgetAsync(const Model::DescribeNotificationsForBudgetRequest& request, const DescribeNotificationsForBudgetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Lists the subscribers that are associated with a notification.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeSubscribersForNotificationOutcome DescribeSubscribersForNotification(const Model::DescribeSubscribersForNotificationRequest& request) const; /** *

Lists the subscribers that are associated with a notification.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeSubscribersForNotificationOutcomeCallable DescribeSubscribersForNotificationCallable(const Model::DescribeSubscribersForNotificationRequest& request) const; /** *

Lists the subscribers that are associated with a notification.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeSubscribersForNotificationAsync(const Model::DescribeSubscribersForNotificationRequest& request, const DescribeSubscribersForNotificationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Updates a budget. You can change every part of a budget except for the * budgetName and the calculatedSpend. When you modify a * budget, the calculatedSpend drops to zero until AWS has new usage * data to use for forecasting.

Only one of * BudgetLimit or PlannedBudgetLimits can be present in * the syntax at one time. Use the syntax that matches your case. The Request * Syntax section shows the BudgetLimit syntax. For * PlannedBudgetLimits, see the Examples * section.

See Also:

AWS * API Reference

*/ virtual Model::UpdateBudgetOutcome UpdateBudget(const Model::UpdateBudgetRequest& request) const; /** *

Updates a budget. You can change every part of a budget except for the * budgetName and the calculatedSpend. When you modify a * budget, the calculatedSpend drops to zero until AWS has new usage * data to use for forecasting.

Only one of * BudgetLimit or PlannedBudgetLimits can be present in * the syntax at one time. Use the syntax that matches your case. The Request * Syntax section shows the BudgetLimit syntax. For * PlannedBudgetLimits, see the Examples * section.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::UpdateBudgetOutcomeCallable UpdateBudgetCallable(const Model::UpdateBudgetRequest& request) const; /** *

Updates a budget. You can change every part of a budget except for the * budgetName and the calculatedSpend. When you modify a * budget, the calculatedSpend drops to zero until AWS has new usage * data to use for forecasting.

Only one of * BudgetLimit or PlannedBudgetLimits can be present in * the syntax at one time. Use the syntax that matches your case. The Request * Syntax section shows the BudgetLimit syntax. For * PlannedBudgetLimits, see the Examples * section.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void UpdateBudgetAsync(const Model::UpdateBudgetRequest& request, const UpdateBudgetResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Updates a notification.

See Also:

AWS * API Reference

*/ virtual Model::UpdateNotificationOutcome UpdateNotification(const Model::UpdateNotificationRequest& request) const; /** *

Updates a notification.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::UpdateNotificationOutcomeCallable UpdateNotificationCallable(const Model::UpdateNotificationRequest& request) const; /** *

Updates a notification.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void UpdateNotificationAsync(const Model::UpdateNotificationRequest& request, const UpdateNotificationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Updates a subscriber.

See Also:

AWS * API Reference

*/ virtual Model::UpdateSubscriberOutcome UpdateSubscriber(const Model::UpdateSubscriberRequest& request) const; /** *

Updates a subscriber.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::UpdateSubscriberOutcomeCallable UpdateSubscriberCallable(const Model::UpdateSubscriberRequest& request) const; /** *

Updates a subscriber.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void UpdateSubscriberAsync(const Model::UpdateSubscriberRequest& request, const UpdateSubscriberResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; void OverrideEndpoint(const Aws::String& endpoint); private: void init(const Aws::Client::ClientConfiguration& clientConfiguration); void CreateBudgetAsyncHelper(const Model::CreateBudgetRequest& request, const CreateBudgetResponseReceivedHandler& handler, const std::shared_ptr& context) const; void CreateNotificationAsyncHelper(const Model::CreateNotificationRequest& request, const CreateNotificationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void CreateSubscriberAsyncHelper(const Model::CreateSubscriberRequest& request, const CreateSubscriberResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DeleteBudgetAsyncHelper(const Model::DeleteBudgetRequest& request, const DeleteBudgetResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DeleteNotificationAsyncHelper(const Model::DeleteNotificationRequest& request, const DeleteNotificationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DeleteSubscriberAsyncHelper(const Model::DeleteSubscriberRequest& request, const DeleteSubscriberResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeBudgetAsyncHelper(const Model::DescribeBudgetRequest& request, const DescribeBudgetResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeBudgetPerformanceHistoryAsyncHelper(const Model::DescribeBudgetPerformanceHistoryRequest& request, const DescribeBudgetPerformanceHistoryResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeBudgetsAsyncHelper(const Model::DescribeBudgetsRequest& request, const DescribeBudgetsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeNotificationsForBudgetAsyncHelper(const Model::DescribeNotificationsForBudgetRequest& request, const DescribeNotificationsForBudgetResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeSubscribersForNotificationAsyncHelper(const Model::DescribeSubscribersForNotificationRequest& request, const DescribeSubscribersForNotificationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void UpdateBudgetAsyncHelper(const Model::UpdateBudgetRequest& request, const UpdateBudgetResponseReceivedHandler& handler, const std::shared_ptr& context) const; void UpdateNotificationAsyncHelper(const Model::UpdateNotificationRequest& request, const UpdateNotificationResponseReceivedHandler& handler, const std::shared_ptr& context) const; void UpdateSubscriberAsyncHelper(const Model::UpdateSubscriberRequest& request, const UpdateSubscriberResponseReceivedHandler& handler, const std::shared_ptr& context) const; Aws::String m_uri; Aws::String m_configScheme; std::shared_ptr m_executor; }; } // namespace Budgets } // namespace Aws