/** * 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 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 CostandUsageReportService { namespace Model { class DeleteReportDefinitionRequest; class DescribeReportDefinitionsRequest; class ModifyReportDefinitionRequest; class PutReportDefinitionRequest; typedef Aws::Utils::Outcome DeleteReportDefinitionOutcome; typedef Aws::Utils::Outcome DescribeReportDefinitionsOutcome; typedef Aws::Utils::Outcome ModifyReportDefinitionOutcome; typedef Aws::Utils::Outcome PutReportDefinitionOutcome; typedef std::future DeleteReportDefinitionOutcomeCallable; typedef std::future DescribeReportDefinitionsOutcomeCallable; typedef std::future ModifyReportDefinitionOutcomeCallable; typedef std::future PutReportDefinitionOutcomeCallable; } // namespace Model class CostandUsageReportServiceClient; typedef std::function&) > DeleteReportDefinitionResponseReceivedHandler; typedef std::function&) > DescribeReportDefinitionsResponseReceivedHandler; typedef std::function&) > ModifyReportDefinitionResponseReceivedHandler; typedef std::function&) > PutReportDefinitionResponseReceivedHandler; /** *

The AWS Cost and Usage Report API enables you to programmatically create, * query, and delete AWS Cost and Usage report definitions.

AWS Cost and * Usage reports track the monthly AWS costs and usage associated with your AWS * account. The report contains line items for each unique combination of AWS * product, usage type, and operation that your AWS account uses. You can configure * the AWS Cost and Usage report to show only the data that you want, using the AWS * Cost and Usage API.

Service Endpoint

The AWS Cost and Usage Report * API provides the following endpoint:

  • *

    cur.us-east-1.amazonaws.com

*/ class AWS_COSTANDUSAGEREPORTSERVICE_API CostandUsageReportServiceClient : 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. */ CostandUsageReportServiceClient(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. */ CostandUsageReportServiceClient(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 */ CostandUsageReportServiceClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); virtual ~CostandUsageReportServiceClient(); /** *

Deletes the specified report.

See Also:

AWS * API Reference

*/ virtual Model::DeleteReportDefinitionOutcome DeleteReportDefinition(const Model::DeleteReportDefinitionRequest& request) const; /** *

Deletes the specified report.

See Also:

AWS * API Reference

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

Deletes the specified report.

See Also:

AWS * API Reference

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

Lists the AWS Cost and Usage reports available to this account.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeReportDefinitionsOutcome DescribeReportDefinitions(const Model::DescribeReportDefinitionsRequest& request) const; /** *

Lists the AWS Cost and Usage reports available to this account.

See * Also:

AWS * API Reference

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

Lists the AWS Cost and Usage reports available to this account.

See * Also:

AWS * API Reference

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

Allows you to programatically update your report preferences.

See * Also:

AWS * API Reference

*/ virtual Model::ModifyReportDefinitionOutcome ModifyReportDefinition(const Model::ModifyReportDefinitionRequest& request) const; /** *

Allows you to programatically update your report preferences.

See * Also:

AWS * API Reference

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

Allows you to programatically update your report preferences.

See * Also:

AWS * API Reference

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

Creates a new report using the description that you provide.

See * Also:

AWS * API Reference

*/ virtual Model::PutReportDefinitionOutcome PutReportDefinition(const Model::PutReportDefinitionRequest& request) const; /** *

Creates a new report using the description that you provide.

See * Also:

AWS * API Reference

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

Creates a new report using the description that you provide.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void PutReportDefinitionAsync(const Model::PutReportDefinitionRequest& request, const PutReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; void OverrideEndpoint(const Aws::String& endpoint); private: void init(const Aws::Client::ClientConfiguration& clientConfiguration); void DeleteReportDefinitionAsyncHelper(const Model::DeleteReportDefinitionRequest& request, const DeleteReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context) const; void DescribeReportDefinitionsAsyncHelper(const Model::DescribeReportDefinitionsRequest& request, const DescribeReportDefinitionsResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ModifyReportDefinitionAsyncHelper(const Model::ModifyReportDefinitionRequest& request, const ModifyReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context) const; void PutReportDefinitionAsyncHelper(const Model::PutReportDefinitionRequest& request, const PutReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context) const; Aws::String m_uri; Aws::String m_configScheme; std::shared_ptr m_executor; }; } // namespace CostandUsageReportService } // namespace Aws