/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the pricing-2017-10-15.normal.json service model.
 */
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using Amazon.Runtime;
using Amazon.Pricing.Model;
namespace Amazon.Pricing
{
    /// 
    /// Interface for accessing 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
    /// 
    ///  
/// 
    /// UseGetServices 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
    /// 
    ///  
/// 
    public partial interface IAmazonPricing : IAmazonService, IDisposable
    {
#if AWS_ASYNC_ENUMERABLES_API
        /// 
        /// Paginators for the service
        /// 
        IPricingPaginatorFactory Paginators { get; }
#endif
                
        #region  DescribeServices
        /// 
        /// 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 asAmazonEC2, 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.
        /// 
        /// Container for the necessary parameters to execute the DescribeServices service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeServices service method, as returned by Pricing.
        /// 
        /// The pagination token expired. Try again without a pagination token.
        /// 
        /// 
        /// An error on the server occurred during the processing of your request. Try again later.
        /// 
        /// 
        /// The pagination token is invalid. Try again without a pagination token.
        /// 
        /// 
        /// One or more parameters had an invalid value.
        /// 
        /// 
        /// The requested resource can't be found.
        /// 
        /// REST API Reference for DescribeServices Operation
        Task DescribeServicesAsync(DescribeServicesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetAttributeValues
        /// 
        /// 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.
        /// 
        /// Container for the necessary parameters to execute the GetAttributeValues service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetAttributeValues service method, as returned by Pricing.
        /// 
        /// The pagination token expired. Try again without a pagination token.
        /// 
        /// 
        /// An error on the server occurred during the processing of your request. Try again later.
        /// 
        /// 
        /// The pagination token is invalid. Try again without a pagination token.
        /// 
        /// 
        /// One or more parameters had an invalid value.
        /// 
        /// 
        /// The requested resource can't be found.
        /// 
        /// REST API Reference for GetAttributeValues Operation
        Task GetAttributeValuesAsync(GetAttributeValuesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetPriceListFileUrl
        /// 
        ///  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. 
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetPriceListFileUrl service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetPriceListFileUrl service method, as returned by Pricing.
        /// 
        /// General authentication failure. The request wasn't signed correctly.
        /// 
        /// 
        /// An error on the server occurred during the processing of your request. Try again later.
        /// 
        /// 
        /// One or more parameters had an invalid value.
        /// 
        /// 
        /// The requested resource can't be found.
        /// 
        /// REST API Reference for GetPriceListFileUrl Operation
        Task GetPriceListFileUrlAsync(GetPriceListFileUrlRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  GetProducts
        /// 
        /// Returns a list of all products that match the filter criteria.
        /// 
        /// Container for the necessary parameters to execute the GetProducts service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetProducts service method, as returned by Pricing.
        /// 
        /// The pagination token expired. Try again without a pagination token.
        /// 
        /// 
        /// An error on the server occurred during the processing of your request. Try again later.
        /// 
        /// 
        /// The pagination token is invalid. Try again without a pagination token.
        /// 
        /// 
        /// One or more parameters had an invalid value.
        /// 
        /// 
        /// The requested resource can't be found.
        /// 
        /// REST API Reference for GetProducts Operation
        Task GetProductsAsync(GetProductsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
                
        #region  ListPriceLists
        /// 
        ///  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.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListPriceLists service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListPriceLists service method, as returned by Pricing.
        /// 
        /// General authentication failure. The request wasn't signed correctly.
        /// 
        /// 
        /// The pagination token expired. Try again without a pagination token.
        /// 
        /// 
        /// An error on the server occurred during the processing of your request. Try again later.
        /// 
        /// 
        /// The pagination token is invalid. Try again without a pagination token.
        /// 
        /// 
        /// One or more parameters had an invalid value.
        /// 
        /// 
        /// The requested resource can't be found.
        /// 
        /// REST API Reference for ListPriceLists Operation
        Task ListPriceListsAsync(ListPriceListsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
    }
}