/** * 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 namespace Aws { namespace BillingConductor { namespace Model { /** */ class CreatePricingRuleRequest : public BillingConductorRequest { public: AWS_BILLINGCONDUCTOR_API CreatePricingRuleRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreatePricingRule"; } AWS_BILLINGCONDUCTOR_API Aws::String SerializePayload() const override; AWS_BILLINGCONDUCTOR_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; /** *

The token that's needed to support idempotency. Idempotency isn't currently * supported, but will be implemented in a future update.

*/ inline const Aws::String& GetClientToken() const{ return m_clientToken; } /** *

The token that's needed to support idempotency. Idempotency isn't currently * supported, but will be implemented in a future update.

*/ inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } /** *

The token that's needed to support idempotency. Idempotency isn't currently * supported, but will be implemented in a future update.

*/ inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } /** *

The token that's needed to support idempotency. Idempotency isn't currently * supported, but will be implemented in a future update.

*/ inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } /** *

The token that's needed to support idempotency. Idempotency isn't currently * supported, but will be implemented in a future update.

*/ inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } /** *

The token that's needed to support idempotency. Idempotency isn't currently * supported, but will be implemented in a future update.

*/ inline CreatePricingRuleRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} /** *

The token that's needed to support idempotency. Idempotency isn't currently * supported, but will be implemented in a future update.

*/ inline CreatePricingRuleRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} /** *

The token that's needed to support idempotency. Idempotency isn't currently * supported, but will be implemented in a future update.

*/ inline CreatePricingRuleRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} /** *

The pricing rule name. The names must be unique to each pricing rule.

*/ inline const Aws::String& GetName() const{ return m_name; } /** *

The pricing rule name. The names must be unique to each pricing rule.

*/ inline bool NameHasBeenSet() const { return m_nameHasBeenSet; } /** *

The pricing rule name. The names must be unique to each pricing rule.

*/ inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; } /** *

The pricing rule name. The names must be unique to each pricing rule.

*/ inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); } /** *

The pricing rule name. The names must be unique to each pricing rule.

*/ inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); } /** *

The pricing rule name. The names must be unique to each pricing rule.

*/ inline CreatePricingRuleRequest& WithName(const Aws::String& value) { SetName(value); return *this;} /** *

The pricing rule name. The names must be unique to each pricing rule.

*/ inline CreatePricingRuleRequest& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;} /** *

The pricing rule name. The names must be unique to each pricing rule.

*/ inline CreatePricingRuleRequest& WithName(const char* value) { SetName(value); return *this;} /** *

The pricing rule description.

*/ inline const Aws::String& GetDescription() const{ return m_description; } /** *

The pricing rule description.

*/ inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; } /** *

The pricing rule description.

*/ inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; } /** *

The pricing rule description.

*/ inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); } /** *

The pricing rule description.

*/ inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); } /** *

The pricing rule description.

*/ inline CreatePricingRuleRequest& WithDescription(const Aws::String& value) { SetDescription(value); return *this;} /** *

The pricing rule description.

*/ inline CreatePricingRuleRequest& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;} /** *

The pricing rule description.

*/ inline CreatePricingRuleRequest& WithDescription(const char* value) { SetDescription(value); return *this;} /** *

The scope of pricing rule that indicates if it's globally applicable, or * it's service-specific.

*/ inline const PricingRuleScope& GetScope() const{ return m_scope; } /** *

The scope of pricing rule that indicates if it's globally applicable, or * it's service-specific.

*/ inline bool ScopeHasBeenSet() const { return m_scopeHasBeenSet; } /** *

The scope of pricing rule that indicates if it's globally applicable, or * it's service-specific.

*/ inline void SetScope(const PricingRuleScope& value) { m_scopeHasBeenSet = true; m_scope = value; } /** *

The scope of pricing rule that indicates if it's globally applicable, or * it's service-specific.

*/ inline void SetScope(PricingRuleScope&& value) { m_scopeHasBeenSet = true; m_scope = std::move(value); } /** *

The scope of pricing rule that indicates if it's globally applicable, or * it's service-specific.

*/ inline CreatePricingRuleRequest& WithScope(const PricingRuleScope& value) { SetScope(value); return *this;} /** *

The scope of pricing rule that indicates if it's globally applicable, or * it's service-specific.

*/ inline CreatePricingRuleRequest& WithScope(PricingRuleScope&& value) { SetScope(std::move(value)); return *this;} /** *

The type of pricing rule.

*/ inline const PricingRuleType& GetType() const{ return m_type; } /** *

The type of pricing rule.

*/ inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; } /** *

The type of pricing rule.

*/ inline void SetType(const PricingRuleType& value) { m_typeHasBeenSet = true; m_type = value; } /** *

The type of pricing rule.

*/ inline void SetType(PricingRuleType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); } /** *

The type of pricing rule.

*/ inline CreatePricingRuleRequest& WithType(const PricingRuleType& value) { SetType(value); return *this;} /** *

The type of pricing rule.

*/ inline CreatePricingRuleRequest& WithType(PricingRuleType&& value) { SetType(std::move(value)); return *this;} /** *

A percentage modifier that's applied on the public pricing rates.

*/ inline double GetModifierPercentage() const{ return m_modifierPercentage; } /** *

A percentage modifier that's applied on the public pricing rates.

*/ inline bool ModifierPercentageHasBeenSet() const { return m_modifierPercentageHasBeenSet; } /** *

A percentage modifier that's applied on the public pricing rates.

*/ inline void SetModifierPercentage(double value) { m_modifierPercentageHasBeenSet = true; m_modifierPercentage = value; } /** *

A percentage modifier that's applied on the public pricing rates.

*/ inline CreatePricingRuleRequest& WithModifierPercentage(double value) { SetModifierPercentage(value); return *this;} /** *

If the Scope attribute is set to SERVICE or * SKU, the attribute indicates which service the * PricingRule is applicable for.

*/ inline const Aws::String& GetService() const{ return m_service; } /** *

If the Scope attribute is set to SERVICE or * SKU, the attribute indicates which service the * PricingRule is applicable for.

*/ inline bool ServiceHasBeenSet() const { return m_serviceHasBeenSet; } /** *

If the Scope attribute is set to SERVICE or * SKU, the attribute indicates which service the * PricingRule is applicable for.

*/ inline void SetService(const Aws::String& value) { m_serviceHasBeenSet = true; m_service = value; } /** *

If the Scope attribute is set to SERVICE or * SKU, the attribute indicates which service the * PricingRule is applicable for.

*/ inline void SetService(Aws::String&& value) { m_serviceHasBeenSet = true; m_service = std::move(value); } /** *

If the Scope attribute is set to SERVICE or * SKU, the attribute indicates which service the * PricingRule is applicable for.

*/ inline void SetService(const char* value) { m_serviceHasBeenSet = true; m_service.assign(value); } /** *

If the Scope attribute is set to SERVICE or * SKU, the attribute indicates which service the * PricingRule is applicable for.

*/ inline CreatePricingRuleRequest& WithService(const Aws::String& value) { SetService(value); return *this;} /** *

If the Scope attribute is set to SERVICE or * SKU, the attribute indicates which service the * PricingRule is applicable for.

*/ inline CreatePricingRuleRequest& WithService(Aws::String&& value) { SetService(std::move(value)); return *this;} /** *

If the Scope attribute is set to SERVICE or * SKU, the attribute indicates which service the * PricingRule is applicable for.

*/ inline CreatePricingRuleRequest& WithService(const char* value) { SetService(value); return *this;} /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline const Aws::Map& GetTags() const{ return m_tags; } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline void SetTags(const Aws::Map& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline void SetTags(Aws::Map&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline CreatePricingRuleRequest& WithTags(const Aws::Map& value) { SetTags(value); return *this;} /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline CreatePricingRuleRequest& WithTags(Aws::Map&& value) { SetTags(std::move(value)); return *this;} /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline CreatePricingRuleRequest& AddTags(const Aws::String& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline CreatePricingRuleRequest& AddTags(Aws::String&& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline CreatePricingRuleRequest& AddTags(const Aws::String& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline CreatePricingRuleRequest& AddTags(Aws::String&& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), std::move(value)); return *this; } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline CreatePricingRuleRequest& AddTags(const char* key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline CreatePricingRuleRequest& AddTags(Aws::String&& key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } /** *

A map that contains tag keys and tag values that are attached to a pricing * rule.

*/ inline CreatePricingRuleRequest& AddTags(const char* key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } /** *

The seller of services provided by Amazon Web Services, their affiliates, or * third-party providers selling services via Amazon Web Services Marketplace.

*/ inline const Aws::String& GetBillingEntity() const{ return m_billingEntity; } /** *

The seller of services provided by Amazon Web Services, their affiliates, or * third-party providers selling services via Amazon Web Services Marketplace.

*/ inline bool BillingEntityHasBeenSet() const { return m_billingEntityHasBeenSet; } /** *

The seller of services provided by Amazon Web Services, their affiliates, or * third-party providers selling services via Amazon Web Services Marketplace.

*/ inline void SetBillingEntity(const Aws::String& value) { m_billingEntityHasBeenSet = true; m_billingEntity = value; } /** *

The seller of services provided by Amazon Web Services, their affiliates, or * third-party providers selling services via Amazon Web Services Marketplace.

*/ inline void SetBillingEntity(Aws::String&& value) { m_billingEntityHasBeenSet = true; m_billingEntity = std::move(value); } /** *

The seller of services provided by Amazon Web Services, their affiliates, or * third-party providers selling services via Amazon Web Services Marketplace.

*/ inline void SetBillingEntity(const char* value) { m_billingEntityHasBeenSet = true; m_billingEntity.assign(value); } /** *

The seller of services provided by Amazon Web Services, their affiliates, or * third-party providers selling services via Amazon Web Services Marketplace.

*/ inline CreatePricingRuleRequest& WithBillingEntity(const Aws::String& value) { SetBillingEntity(value); return *this;} /** *

The seller of services provided by Amazon Web Services, their affiliates, or * third-party providers selling services via Amazon Web Services Marketplace.

*/ inline CreatePricingRuleRequest& WithBillingEntity(Aws::String&& value) { SetBillingEntity(std::move(value)); return *this;} /** *

The seller of services provided by Amazon Web Services, their affiliates, or * third-party providers selling services via Amazon Web Services Marketplace.

*/ inline CreatePricingRuleRequest& WithBillingEntity(const char* value) { SetBillingEntity(value); return *this;} /** *

The set of tiering configurations for the pricing rule.

*/ inline const CreateTieringInput& GetTiering() const{ return m_tiering; } /** *

The set of tiering configurations for the pricing rule.

*/ inline bool TieringHasBeenSet() const { return m_tieringHasBeenSet; } /** *

The set of tiering configurations for the pricing rule.

*/ inline void SetTiering(const CreateTieringInput& value) { m_tieringHasBeenSet = true; m_tiering = value; } /** *

The set of tiering configurations for the pricing rule.

*/ inline void SetTiering(CreateTieringInput&& value) { m_tieringHasBeenSet = true; m_tiering = std::move(value); } /** *

The set of tiering configurations for the pricing rule.

*/ inline CreatePricingRuleRequest& WithTiering(const CreateTieringInput& value) { SetTiering(value); return *this;} /** *

The set of tiering configurations for the pricing rule.

*/ inline CreatePricingRuleRequest& WithTiering(CreateTieringInput&& value) { SetTiering(std::move(value)); return *this;} /** *

Usage type is the unit that each service uses to measure the usage of a * specific type of resource.

If the Scope attribute is set to * SKU, this attribute indicates which usage type the * PricingRule is modifying. For example, * USW2-BoxUsage:m2.2xlarge describes an M2 High Memory Double * Extra Large instance in the US West (Oregon) Region. *

</p> 
*/ inline const Aws::String& GetUsageType() const{ return m_usageType; } /** *

Usage type is the unit that each service uses to measure the usage of a * specific type of resource.

If the Scope attribute is set to * SKU, this attribute indicates which usage type the * PricingRule is modifying. For example, * USW2-BoxUsage:m2.2xlarge describes an M2 High Memory Double * Extra Large instance in the US West (Oregon) Region. *

</p> 
*/ inline bool UsageTypeHasBeenSet() const { return m_usageTypeHasBeenSet; } /** *

Usage type is the unit that each service uses to measure the usage of a * specific type of resource.

If the Scope attribute is set to * SKU, this attribute indicates which usage type the * PricingRule is modifying. For example, * USW2-BoxUsage:m2.2xlarge describes an M2 High Memory Double * Extra Large instance in the US West (Oregon) Region. *

</p> 
*/ inline void SetUsageType(const Aws::String& value) { m_usageTypeHasBeenSet = true; m_usageType = value; } /** *

Usage type is the unit that each service uses to measure the usage of a * specific type of resource.

If the Scope attribute is set to * SKU, this attribute indicates which usage type the * PricingRule is modifying. For example, * USW2-BoxUsage:m2.2xlarge describes an M2 High Memory Double * Extra Large instance in the US West (Oregon) Region. *

</p> 
*/ inline void SetUsageType(Aws::String&& value) { m_usageTypeHasBeenSet = true; m_usageType = std::move(value); } /** *

Usage type is the unit that each service uses to measure the usage of a * specific type of resource.

If the Scope attribute is set to * SKU, this attribute indicates which usage type the * PricingRule is modifying. For example, * USW2-BoxUsage:m2.2xlarge describes an M2 High Memory Double * Extra Large instance in the US West (Oregon) Region. *

</p> 
*/ inline void SetUsageType(const char* value) { m_usageTypeHasBeenSet = true; m_usageType.assign(value); } /** *

Usage type is the unit that each service uses to measure the usage of a * specific type of resource.

If the Scope attribute is set to * SKU, this attribute indicates which usage type the * PricingRule is modifying. For example, * USW2-BoxUsage:m2.2xlarge describes an M2 High Memory Double * Extra Large instance in the US West (Oregon) Region. *

</p> 
*/ inline CreatePricingRuleRequest& WithUsageType(const Aws::String& value) { SetUsageType(value); return *this;} /** *

Usage type is the unit that each service uses to measure the usage of a * specific type of resource.

If the Scope attribute is set to * SKU, this attribute indicates which usage type the * PricingRule is modifying. For example, * USW2-BoxUsage:m2.2xlarge describes an M2 High Memory Double * Extra Large instance in the US West (Oregon) Region. *

</p> 
*/ inline CreatePricingRuleRequest& WithUsageType(Aws::String&& value) { SetUsageType(std::move(value)); return *this;} /** *

Usage type is the unit that each service uses to measure the usage of a * specific type of resource.

If the Scope attribute is set to * SKU, this attribute indicates which usage type the * PricingRule is modifying. For example, * USW2-BoxUsage:m2.2xlarge describes an M2 High Memory Double * Extra Large instance in the US West (Oregon) Region. *

</p> 
*/ inline CreatePricingRuleRequest& WithUsageType(const char* value) { SetUsageType(value); return *this;} /** *

Operation is the specific Amazon Web Services action covered by this line * item. This describes the specific usage of the line item.

If the * Scope attribute is set to SKU, this attribute * indicates which operation the PricingRule is modifying. For * example, a value of RunInstances:0202 indicates the operation of * running an Amazon EC2 instance.

*/ inline const Aws::String& GetOperation() const{ return m_operation; } /** *

Operation is the specific Amazon Web Services action covered by this line * item. This describes the specific usage of the line item.

If the * Scope attribute is set to SKU, this attribute * indicates which operation the PricingRule is modifying. For * example, a value of RunInstances:0202 indicates the operation of * running an Amazon EC2 instance.

*/ inline bool OperationHasBeenSet() const { return m_operationHasBeenSet; } /** *

Operation is the specific Amazon Web Services action covered by this line * item. This describes the specific usage of the line item.

If the * Scope attribute is set to SKU, this attribute * indicates which operation the PricingRule is modifying. For * example, a value of RunInstances:0202 indicates the operation of * running an Amazon EC2 instance.

*/ inline void SetOperation(const Aws::String& value) { m_operationHasBeenSet = true; m_operation = value; } /** *

Operation is the specific Amazon Web Services action covered by this line * item. This describes the specific usage of the line item.

If the * Scope attribute is set to SKU, this attribute * indicates which operation the PricingRule is modifying. For * example, a value of RunInstances:0202 indicates the operation of * running an Amazon EC2 instance.

*/ inline void SetOperation(Aws::String&& value) { m_operationHasBeenSet = true; m_operation = std::move(value); } /** *

Operation is the specific Amazon Web Services action covered by this line * item. This describes the specific usage of the line item.

If the * Scope attribute is set to SKU, this attribute * indicates which operation the PricingRule is modifying. For * example, a value of RunInstances:0202 indicates the operation of * running an Amazon EC2 instance.

*/ inline void SetOperation(const char* value) { m_operationHasBeenSet = true; m_operation.assign(value); } /** *

Operation is the specific Amazon Web Services action covered by this line * item. This describes the specific usage of the line item.

If the * Scope attribute is set to SKU, this attribute * indicates which operation the PricingRule is modifying. For * example, a value of RunInstances:0202 indicates the operation of * running an Amazon EC2 instance.

*/ inline CreatePricingRuleRequest& WithOperation(const Aws::String& value) { SetOperation(value); return *this;} /** *

Operation is the specific Amazon Web Services action covered by this line * item. This describes the specific usage of the line item.

If the * Scope attribute is set to SKU, this attribute * indicates which operation the PricingRule is modifying. For * example, a value of RunInstances:0202 indicates the operation of * running an Amazon EC2 instance.

*/ inline CreatePricingRuleRequest& WithOperation(Aws::String&& value) { SetOperation(std::move(value)); return *this;} /** *

Operation is the specific Amazon Web Services action covered by this line * item. This describes the specific usage of the line item.

If the * Scope attribute is set to SKU, this attribute * indicates which operation the PricingRule is modifying. For * example, a value of RunInstances:0202 indicates the operation of * running an Amazon EC2 instance.

*/ inline CreatePricingRuleRequest& WithOperation(const char* value) { SetOperation(value); return *this;} private: Aws::String m_clientToken; bool m_clientTokenHasBeenSet = false; Aws::String m_name; bool m_nameHasBeenSet = false; Aws::String m_description; bool m_descriptionHasBeenSet = false; PricingRuleScope m_scope; bool m_scopeHasBeenSet = false; PricingRuleType m_type; bool m_typeHasBeenSet = false; double m_modifierPercentage; bool m_modifierPercentageHasBeenSet = false; Aws::String m_service; bool m_serviceHasBeenSet = false; Aws::Map m_tags; bool m_tagsHasBeenSet = false; Aws::String m_billingEntity; bool m_billingEntityHasBeenSet = false; CreateTieringInput m_tiering; bool m_tieringHasBeenSet = false; Aws::String m_usageType; bool m_usageTypeHasBeenSet = false; Aws::String m_operation; bool m_operationHasBeenSet = false; }; } // namespace Model } // namespace BillingConductor } // namespace Aws