/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace Pricing { /** *

The Amazon Web Services Price List API is a centralized and convenient way to * programmatically query Amazon Web Services for services, products, and pricing * information. The Amazon Web Services Price List uses standardized product * attributes such as Location, Storage Class, and * Operating System, and provides prices at the SKU level. You can use * the Amazon Web Services Price List to do the following:

  • Build * cost control and scenario planning tools

  • Reconcile billing * data

  • Forecast future spend for budgeting purposes

  • *
  • Provide cost benefit analysis that compare your internal workloads with * Amazon Web Services

Use GetServices without a * service code to retrieve the service codes for all Amazon Web Services, then * GetServices with a service code to retrieve the attribute names for * that service. After you have the service code and attribute names, you can use * GetAttributeValues to see what values are available for an * attribute. With the service code and an attribute name and value, you can use * GetProducts to find specific products that you're interested in, * such as an AmazonEC2 instance, with a Provisioned IOPS * volumeType.

You can use the following endpoints for the * Amazon Web Services Price List API:

  • *

    https://api.pricing.us-east-1.amazonaws.com

  • *

    https://api.pricing.ap-south-1.amazonaws.com

*/ class AWS_PRICING_API PricingClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods { public: typedef Aws::Client::AWSJsonClient BASECLASS; static const char* SERVICE_NAME; static const char* ALLOCATION_TAG; typedef PricingClientConfiguration ClientConfigurationType; typedef PricingEndpointProvider EndpointProviderType; /** * 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. */ PricingClient(const Aws::Pricing::PricingClientConfiguration& clientConfiguration = Aws::Pricing::PricingClientConfiguration(), std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG)); /** * 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. */ PricingClient(const Aws::Auth::AWSCredentials& credentials, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::Pricing::PricingClientConfiguration& clientConfiguration = Aws::Pricing::PricingClientConfiguration()); /** * 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 */ PricingClient(const std::shared_ptr& credentialsProvider, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::Pricing::PricingClientConfiguration& clientConfiguration = Aws::Pricing::PricingClientConfiguration()); /* Legacy constructors due deprecation */ /** * 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. */ PricingClient(const Aws::Client::ClientConfiguration& 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. */ PricingClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& 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 */ PricingClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration); /* End of legacy constructors due deprecation */ virtual ~PricingClient(); /** *

Returns the metadata for one service or a list of the metadata for all * services. Use this without a service code to get the service codes for all * services. Use it with a service code, such as AmazonEC2, to get * information specific to that service, such as the attribute names available for * that service. For example, some of the attribute names available for EC2 are * volumeType, maxIopsVolume, operation, * locationType, and * instanceCapacity10xlarge.

See Also:

AWS * API Reference

*/ virtual Model::DescribeServicesOutcome DescribeServices(const Model::DescribeServicesRequest& request) const; /** * A Callable wrapper for DescribeServices that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeServicesOutcomeCallable DescribeServicesCallable(const DescribeServicesRequestT& request) const { return SubmitCallable(&PricingClient::DescribeServices, request); } /** * An Async wrapper for DescribeServices that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeServicesAsync(const DescribeServicesRequestT& request, const DescribeServicesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&PricingClient::DescribeServices, request, handler, context); } /** *

Returns a list of attribute values. Attributes are similar to the details in * a Price List API offer file. For a list of available attributes, see Offer * File Definitions in the Billing * and Cost Management User Guide.

See Also:

AWS * API Reference

*/ virtual Model::GetAttributeValuesOutcome GetAttributeValues(const Model::GetAttributeValuesRequest& request) const; /** * A Callable wrapper for GetAttributeValues that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetAttributeValuesOutcomeCallable GetAttributeValuesCallable(const GetAttributeValuesRequestT& request) const { return SubmitCallable(&PricingClient::GetAttributeValues, request); } /** * An Async wrapper for GetAttributeValues that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetAttributeValuesAsync(const GetAttributeValuesRequestT& request, const GetAttributeValuesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&PricingClient::GetAttributeValues, request, handler, context); } /** *

This feature is in preview release and is subject to change. Your use * of Amazon Web Services Price List API is subject to the Beta Service * Participation terms of the Amazon Web Services Service * Terms (Section 1.10).

This returns the URL that you can * retrieve your Price List file from. This URL is based on the * PriceListArn and FileFormat that you retrieve from the * * ListPriceLists response.

See Also:

AWS * API Reference

*/ virtual Model::GetPriceListFileUrlOutcome GetPriceListFileUrl(const Model::GetPriceListFileUrlRequest& request) const; /** * A Callable wrapper for GetPriceListFileUrl that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetPriceListFileUrlOutcomeCallable GetPriceListFileUrlCallable(const GetPriceListFileUrlRequestT& request) const { return SubmitCallable(&PricingClient::GetPriceListFileUrl, request); } /** * An Async wrapper for GetPriceListFileUrl that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetPriceListFileUrlAsync(const GetPriceListFileUrlRequestT& request, const GetPriceListFileUrlResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&PricingClient::GetPriceListFileUrl, request, handler, context); } /** *

Returns a list of all products that match the filter criteria.

See * Also:

AWS * API Reference

*/ virtual Model::GetProductsOutcome GetProducts(const Model::GetProductsRequest& request) const; /** * A Callable wrapper for GetProducts that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetProductsOutcomeCallable GetProductsCallable(const GetProductsRequestT& request) const { return SubmitCallable(&PricingClient::GetProducts, request); } /** * An Async wrapper for GetProducts that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetProductsAsync(const GetProductsRequestT& request, const GetProductsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&PricingClient::GetProducts, request, handler, context); } /** *

This feature is in preview release and is subject to change. Your use * of Amazon Web Services Price List API is subject to the Beta Service * Participation terms of the Amazon Web Services Service * Terms (Section 1.10).

This returns a list of Price List * references that the requester if authorized to view, given a * ServiceCode, CurrencyCode, and an * EffectiveDate. Use without a RegionCode filter to list * Price List references from all available Amazon Web Services Regions. Use with a * RegionCode filter to get the Price List reference that's specific * to a specific Amazon Web Services Region. You can use the * PriceListArn from the response to get your preferred Price List * files through the * GetPriceListFileUrl API.

See Also:

AWS * API Reference

*/ virtual Model::ListPriceListsOutcome ListPriceLists(const Model::ListPriceListsRequest& request) const; /** * A Callable wrapper for ListPriceLists that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListPriceListsOutcomeCallable ListPriceListsCallable(const ListPriceListsRequestT& request) const { return SubmitCallable(&PricingClient::ListPriceLists, request); } /** * An Async wrapper for ListPriceLists that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListPriceListsAsync(const ListPriceListsRequestT& request, const ListPriceListsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&PricingClient::ListPriceLists, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const PricingClientConfiguration& clientConfiguration); PricingClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace Pricing } // namespace Aws