/*
* 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 ce-2017-10-25.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.CostExplorer.Model
{
///
/// Container for the parameters to the GetReservationPurchaseRecommendation operation.
/// Gets recommendations for reservation purchases. These recommendations might help you
/// to reduce your costs. Reservations provide a discounted hourly rate (up to 75%) compared
/// to On-Demand pricing.
///
///
///
/// Amazon Web Services generates your recommendations by identifying your On-Demand usage
/// during a specific time period and collecting your usage into categories that are eligible
/// for a reservation. After Amazon Web Services has these categories, it simulates every
/// combination of reservations in each category of usage to identify the best number
/// of each type of Reserved Instance (RI) to purchase to maximize your estimated savings.
///
///
///
///
/// For example, Amazon Web Services automatically aggregates your Amazon EC2 Linux, shared
/// tenancy, and c4 family usage in the US West (Oregon) Region and recommends that you
/// buy size-flexible regional reservations to apply to the c4 family usage. Amazon Web
/// Services recommends the smallest size instance in an instance family. This makes it
/// easier to purchase a size-flexible Reserved Instance (RI). Amazon Web Services also
/// shows the equal number of normalized units. This way, you can purchase any instance
/// size that you want. For this example, your RI recommendation is for c4.large
/// because that is the smallest size instance in the c4 instance family.
///
///
public partial class GetReservationPurchaseRecommendationRequest : AmazonCostExplorerRequest
{
private string _accountId;
private AccountScope _accountScope;
private Expression _filter;
private LookbackPeriodInDays _lookbackPeriodInDays;
private string _nextPageToken;
private int? _pageSize;
private PaymentOption _paymentOption;
private string _service;
private ServiceSpecification _serviceSpecification;
private TermInYears _termInYears;
///
/// Gets and sets the property AccountId.
///
/// The account ID that's associated with the recommendation.
///
///
[AWSProperty(Min=0, Max=1024)]
public string AccountId
{
get { return this._accountId; }
set { this._accountId = value; }
}
// Check to see if AccountId property is set
internal bool IsSetAccountId()
{
return this._accountId != null;
}
///
/// Gets and sets the property AccountScope.
///
/// The account scope that you want your recommendations for. Amazon Web Services calculates
/// recommendations including the management account and member accounts if the value
/// is set to PAYER
. If the value is LINKED
, recommendations
/// are calculated for individual member accounts only.
///
///
public AccountScope AccountScope
{
get { return this._accountScope; }
set { this._accountScope = value; }
}
// Check to see if AccountScope property is set
internal bool IsSetAccountScope()
{
return this._accountScope != null;
}
///
/// Gets and sets the property Filter.
///
public Expression Filter
{
get { return this._filter; }
set { this._filter = value; }
}
// Check to see if Filter property is set
internal bool IsSetFilter()
{
return this._filter != null;
}
///
/// Gets and sets the property LookbackPeriodInDays.
///
/// The number of previous days that you want Amazon Web Services to consider when it
/// calculates your recommendations.
///
///
public LookbackPeriodInDays LookbackPeriodInDays
{
get { return this._lookbackPeriodInDays; }
set { this._lookbackPeriodInDays = value; }
}
// Check to see if LookbackPeriodInDays property is set
internal bool IsSetLookbackPeriodInDays()
{
return this._lookbackPeriodInDays != null;
}
///
/// Gets and sets the property NextPageToken.
///
/// The pagination token that indicates the next set of results that you want to retrieve.
///
///
[AWSProperty(Min=0, Max=8192)]
public string NextPageToken
{
get { return this._nextPageToken; }
set { this._nextPageToken = value; }
}
// Check to see if NextPageToken property is set
internal bool IsSetNextPageToken()
{
return this._nextPageToken != null;
}
///
/// Gets and sets the property PageSize.
///
/// The number of recommendations that you want returned in a single response object.
///
///
[AWSProperty(Min=0)]
public int PageSize
{
get { return this._pageSize.GetValueOrDefault(); }
set { this._pageSize = value; }
}
// Check to see if PageSize property is set
internal bool IsSetPageSize()
{
return this._pageSize.HasValue;
}
///
/// Gets and sets the property PaymentOption.
///
/// The reservation purchase option that you want recommendations for.
///
///
public PaymentOption PaymentOption
{
get { return this._paymentOption; }
set { this._paymentOption = value; }
}
// Check to see if PaymentOption property is set
internal bool IsSetPaymentOption()
{
return this._paymentOption != null;
}
///
/// Gets and sets the property Service.
///
/// The specific service that you want recommendations for.
///
///
[AWSProperty(Required=true, Min=0, Max=1024)]
public string Service
{
get { return this._service; }
set { this._service = value; }
}
// Check to see if Service property is set
internal bool IsSetService()
{
return this._service != null;
}
///
/// Gets and sets the property ServiceSpecification.
///
/// The hardware specifications for the service instances that you want recommendations
/// for, such as standard or convertible Amazon EC2 instances.
///
///
public ServiceSpecification ServiceSpecification
{
get { return this._serviceSpecification; }
set { this._serviceSpecification = value; }
}
// Check to see if ServiceSpecification property is set
internal bool IsSetServiceSpecification()
{
return this._serviceSpecification != null;
}
///
/// Gets and sets the property TermInYears.
///
/// The reservation term that you want recommendations for.
///
///
public TermInYears TermInYears
{
get { return this._termInYears; }
set { this._termInYears = value; }
}
// Check to see if TermInYears property is set
internal bool IsSetTermInYears()
{
return this._termInYears != null;
}
}
}