/** * 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 namespace Aws { namespace NetworkFirewall { namespace Model { /** */ class UpdateRuleGroupRequest : public NetworkFirewallRequest { public: AWS_NETWORKFIREWALL_API UpdateRuleGroupRequest(); // 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 "UpdateRuleGroup"; } AWS_NETWORKFIREWALL_API Aws::String SerializePayload() const override; AWS_NETWORKFIREWALL_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; /** *

A token used for optimistic locking. Network Firewall returns a token to your * requests that access the rule group. The token marks the state of the rule group * resource at the time of the request.

To make changes to the rule group, * you provide the token in your request. Network Firewall uses the token to ensure * that the rule group hasn't changed since you last retrieved it. If it has * changed, the operation fails with an InvalidTokenException. If this * happens, retrieve the rule group again to get a current copy of it with a * current token. Reapply your changes as needed, then try the operation again * using the new token.

*/ inline const Aws::String& GetUpdateToken() const{ return m_updateToken; } /** *

A token used for optimistic locking. Network Firewall returns a token to your * requests that access the rule group. The token marks the state of the rule group * resource at the time of the request.

To make changes to the rule group, * you provide the token in your request. Network Firewall uses the token to ensure * that the rule group hasn't changed since you last retrieved it. If it has * changed, the operation fails with an InvalidTokenException. If this * happens, retrieve the rule group again to get a current copy of it with a * current token. Reapply your changes as needed, then try the operation again * using the new token.

*/ inline bool UpdateTokenHasBeenSet() const { return m_updateTokenHasBeenSet; } /** *

A token used for optimistic locking. Network Firewall returns a token to your * requests that access the rule group. The token marks the state of the rule group * resource at the time of the request.

To make changes to the rule group, * you provide the token in your request. Network Firewall uses the token to ensure * that the rule group hasn't changed since you last retrieved it. If it has * changed, the operation fails with an InvalidTokenException. If this * happens, retrieve the rule group again to get a current copy of it with a * current token. Reapply your changes as needed, then try the operation again * using the new token.

*/ inline void SetUpdateToken(const Aws::String& value) { m_updateTokenHasBeenSet = true; m_updateToken = value; } /** *

A token used for optimistic locking. Network Firewall returns a token to your * requests that access the rule group. The token marks the state of the rule group * resource at the time of the request.

To make changes to the rule group, * you provide the token in your request. Network Firewall uses the token to ensure * that the rule group hasn't changed since you last retrieved it. If it has * changed, the operation fails with an InvalidTokenException. If this * happens, retrieve the rule group again to get a current copy of it with a * current token. Reapply your changes as needed, then try the operation again * using the new token.

*/ inline void SetUpdateToken(Aws::String&& value) { m_updateTokenHasBeenSet = true; m_updateToken = std::move(value); } /** *

A token used for optimistic locking. Network Firewall returns a token to your * requests that access the rule group. The token marks the state of the rule group * resource at the time of the request.

To make changes to the rule group, * you provide the token in your request. Network Firewall uses the token to ensure * that the rule group hasn't changed since you last retrieved it. If it has * changed, the operation fails with an InvalidTokenException. If this * happens, retrieve the rule group again to get a current copy of it with a * current token. Reapply your changes as needed, then try the operation again * using the new token.

*/ inline void SetUpdateToken(const char* value) { m_updateTokenHasBeenSet = true; m_updateToken.assign(value); } /** *

A token used for optimistic locking. Network Firewall returns a token to your * requests that access the rule group. The token marks the state of the rule group * resource at the time of the request.

To make changes to the rule group, * you provide the token in your request. Network Firewall uses the token to ensure * that the rule group hasn't changed since you last retrieved it. If it has * changed, the operation fails with an InvalidTokenException. If this * happens, retrieve the rule group again to get a current copy of it with a * current token. Reapply your changes as needed, then try the operation again * using the new token.

*/ inline UpdateRuleGroupRequest& WithUpdateToken(const Aws::String& value) { SetUpdateToken(value); return *this;} /** *

A token used for optimistic locking. Network Firewall returns a token to your * requests that access the rule group. The token marks the state of the rule group * resource at the time of the request.

To make changes to the rule group, * you provide the token in your request. Network Firewall uses the token to ensure * that the rule group hasn't changed since you last retrieved it. If it has * changed, the operation fails with an InvalidTokenException. If this * happens, retrieve the rule group again to get a current copy of it with a * current token. Reapply your changes as needed, then try the operation again * using the new token.

*/ inline UpdateRuleGroupRequest& WithUpdateToken(Aws::String&& value) { SetUpdateToken(std::move(value)); return *this;} /** *

A token used for optimistic locking. Network Firewall returns a token to your * requests that access the rule group. The token marks the state of the rule group * resource at the time of the request.

To make changes to the rule group, * you provide the token in your request. Network Firewall uses the token to ensure * that the rule group hasn't changed since you last retrieved it. If it has * changed, the operation fails with an InvalidTokenException. If this * happens, retrieve the rule group again to get a current copy of it with a * current token. Reapply your changes as needed, then try the operation again * using the new token.

*/ inline UpdateRuleGroupRequest& WithUpdateToken(const char* value) { SetUpdateToken(value); return *this;} /** *

The Amazon Resource Name (ARN) of the rule group.

You must specify the * ARN or the name, and you can specify both.

*/ inline const Aws::String& GetRuleGroupArn() const{ return m_ruleGroupArn; } /** *

The Amazon Resource Name (ARN) of the rule group.

You must specify the * ARN or the name, and you can specify both.

*/ inline bool RuleGroupArnHasBeenSet() const { return m_ruleGroupArnHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the rule group.

You must specify the * ARN or the name, and you can specify both.

*/ inline void SetRuleGroupArn(const Aws::String& value) { m_ruleGroupArnHasBeenSet = true; m_ruleGroupArn = value; } /** *

The Amazon Resource Name (ARN) of the rule group.

You must specify the * ARN or the name, and you can specify both.

*/ inline void SetRuleGroupArn(Aws::String&& value) { m_ruleGroupArnHasBeenSet = true; m_ruleGroupArn = std::move(value); } /** *

The Amazon Resource Name (ARN) of the rule group.

You must specify the * ARN or the name, and you can specify both.

*/ inline void SetRuleGroupArn(const char* value) { m_ruleGroupArnHasBeenSet = true; m_ruleGroupArn.assign(value); } /** *

The Amazon Resource Name (ARN) of the rule group.

You must specify the * ARN or the name, and you can specify both.

*/ inline UpdateRuleGroupRequest& WithRuleGroupArn(const Aws::String& value) { SetRuleGroupArn(value); return *this;} /** *

The Amazon Resource Name (ARN) of the rule group.

You must specify the * ARN or the name, and you can specify both.

*/ inline UpdateRuleGroupRequest& WithRuleGroupArn(Aws::String&& value) { SetRuleGroupArn(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the rule group.

You must specify the * ARN or the name, and you can specify both.

*/ inline UpdateRuleGroupRequest& WithRuleGroupArn(const char* value) { SetRuleGroupArn(value); return *this;} /** *

The descriptive name of the rule group. You can't change the name of a rule * group after you create it.

You must specify the ARN or the name, and you * can specify both.

*/ inline const Aws::String& GetRuleGroupName() const{ return m_ruleGroupName; } /** *

The descriptive name of the rule group. You can't change the name of a rule * group after you create it.

You must specify the ARN or the name, and you * can specify both.

*/ inline bool RuleGroupNameHasBeenSet() const { return m_ruleGroupNameHasBeenSet; } /** *

The descriptive name of the rule group. You can't change the name of a rule * group after you create it.

You must specify the ARN or the name, and you * can specify both.

*/ inline void SetRuleGroupName(const Aws::String& value) { m_ruleGroupNameHasBeenSet = true; m_ruleGroupName = value; } /** *

The descriptive name of the rule group. You can't change the name of a rule * group after you create it.

You must specify the ARN or the name, and you * can specify both.

*/ inline void SetRuleGroupName(Aws::String&& value) { m_ruleGroupNameHasBeenSet = true; m_ruleGroupName = std::move(value); } /** *

The descriptive name of the rule group. You can't change the name of a rule * group after you create it.

You must specify the ARN or the name, and you * can specify both.

*/ inline void SetRuleGroupName(const char* value) { m_ruleGroupNameHasBeenSet = true; m_ruleGroupName.assign(value); } /** *

The descriptive name of the rule group. You can't change the name of a rule * group after you create it.

You must specify the ARN or the name, and you * can specify both.

*/ inline UpdateRuleGroupRequest& WithRuleGroupName(const Aws::String& value) { SetRuleGroupName(value); return *this;} /** *

The descriptive name of the rule group. You can't change the name of a rule * group after you create it.

You must specify the ARN or the name, and you * can specify both.

*/ inline UpdateRuleGroupRequest& WithRuleGroupName(Aws::String&& value) { SetRuleGroupName(std::move(value)); return *this;} /** *

The descriptive name of the rule group. You can't change the name of a rule * group after you create it.

You must specify the ARN or the name, and you * can specify both.

*/ inline UpdateRuleGroupRequest& WithRuleGroupName(const char* value) { SetRuleGroupName(value); return *this;} /** *

An object that defines the rule group rules.

You must provide * either this rule group setting or a Rules setting, but not both. *

*/ inline const RuleGroup& GetRuleGroup() const{ return m_ruleGroup; } /** *

An object that defines the rule group rules.

You must provide * either this rule group setting or a Rules setting, but not both. *

*/ inline bool RuleGroupHasBeenSet() const { return m_ruleGroupHasBeenSet; } /** *

An object that defines the rule group rules.

You must provide * either this rule group setting or a Rules setting, but not both. *

*/ inline void SetRuleGroup(const RuleGroup& value) { m_ruleGroupHasBeenSet = true; m_ruleGroup = value; } /** *

An object that defines the rule group rules.

You must provide * either this rule group setting or a Rules setting, but not both. *

*/ inline void SetRuleGroup(RuleGroup&& value) { m_ruleGroupHasBeenSet = true; m_ruleGroup = std::move(value); } /** *

An object that defines the rule group rules.

You must provide * either this rule group setting or a Rules setting, but not both. *

*/ inline UpdateRuleGroupRequest& WithRuleGroup(const RuleGroup& value) { SetRuleGroup(value); return *this;} /** *

An object that defines the rule group rules.

You must provide * either this rule group setting or a Rules setting, but not both. *

*/ inline UpdateRuleGroupRequest& WithRuleGroup(RuleGroup&& value) { SetRuleGroup(std::move(value)); return *this;} /** *

A string containing stateful rule group rules specifications in Suricata flat * format, with one rule per line. Use this to import your existing Suricata * compatible rule groups.

You must provide either this rules * setting or a populated RuleGroup setting, but not both.

*

You can provide your rule group specification in Suricata flat format * through this setting when you create or update your rule group. The call * response returns a RuleGroup object that Network Firewall has populated * from your string.

*/ inline const Aws::String& GetRules() const{ return m_rules; } /** *

A string containing stateful rule group rules specifications in Suricata flat * format, with one rule per line. Use this to import your existing Suricata * compatible rule groups.

You must provide either this rules * setting or a populated RuleGroup setting, but not both.

*

You can provide your rule group specification in Suricata flat format * through this setting when you create or update your rule group. The call * response returns a RuleGroup object that Network Firewall has populated * from your string.

*/ inline bool RulesHasBeenSet() const { return m_rulesHasBeenSet; } /** *

A string containing stateful rule group rules specifications in Suricata flat * format, with one rule per line. Use this to import your existing Suricata * compatible rule groups.

You must provide either this rules * setting or a populated RuleGroup setting, but not both.

*

You can provide your rule group specification in Suricata flat format * through this setting when you create or update your rule group. The call * response returns a RuleGroup object that Network Firewall has populated * from your string.

*/ inline void SetRules(const Aws::String& value) { m_rulesHasBeenSet = true; m_rules = value; } /** *

A string containing stateful rule group rules specifications in Suricata flat * format, with one rule per line. Use this to import your existing Suricata * compatible rule groups.

You must provide either this rules * setting or a populated RuleGroup setting, but not both.

*

You can provide your rule group specification in Suricata flat format * through this setting when you create or update your rule group. The call * response returns a RuleGroup object that Network Firewall has populated * from your string.

*/ inline void SetRules(Aws::String&& value) { m_rulesHasBeenSet = true; m_rules = std::move(value); } /** *

A string containing stateful rule group rules specifications in Suricata flat * format, with one rule per line. Use this to import your existing Suricata * compatible rule groups.

You must provide either this rules * setting or a populated RuleGroup setting, but not both.

*

You can provide your rule group specification in Suricata flat format * through this setting when you create or update your rule group. The call * response returns a RuleGroup object that Network Firewall has populated * from your string.

*/ inline void SetRules(const char* value) { m_rulesHasBeenSet = true; m_rules.assign(value); } /** *

A string containing stateful rule group rules specifications in Suricata flat * format, with one rule per line. Use this to import your existing Suricata * compatible rule groups.

You must provide either this rules * setting or a populated RuleGroup setting, but not both.

*

You can provide your rule group specification in Suricata flat format * through this setting when you create or update your rule group. The call * response returns a RuleGroup object that Network Firewall has populated * from your string.

*/ inline UpdateRuleGroupRequest& WithRules(const Aws::String& value) { SetRules(value); return *this;} /** *

A string containing stateful rule group rules specifications in Suricata flat * format, with one rule per line. Use this to import your existing Suricata * compatible rule groups.

You must provide either this rules * setting or a populated RuleGroup setting, but not both.

*

You can provide your rule group specification in Suricata flat format * through this setting when you create or update your rule group. The call * response returns a RuleGroup object that Network Firewall has populated * from your string.

*/ inline UpdateRuleGroupRequest& WithRules(Aws::String&& value) { SetRules(std::move(value)); return *this;} /** *

A string containing stateful rule group rules specifications in Suricata flat * format, with one rule per line. Use this to import your existing Suricata * compatible rule groups.

You must provide either this rules * setting or a populated RuleGroup setting, but not both.

*

You can provide your rule group specification in Suricata flat format * through this setting when you create or update your rule group. The call * response returns a RuleGroup object that Network Firewall has populated * from your string.

*/ inline UpdateRuleGroupRequest& WithRules(const char* value) { SetRules(value); return *this;} /** *

Indicates whether the rule group is stateless or stateful. If the rule group * is stateless, it contains stateless rules. If it is stateful, it contains * stateful rules.

This setting is required for requests that do not * include the RuleGroupARN.

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

Indicates whether the rule group is stateless or stateful. If the rule group * is stateless, it contains stateless rules. If it is stateful, it contains * stateful rules.

This setting is required for requests that do not * include the RuleGroupARN.

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

Indicates whether the rule group is stateless or stateful. If the rule group * is stateless, it contains stateless rules. If it is stateful, it contains * stateful rules.

This setting is required for requests that do not * include the RuleGroupARN.

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

Indicates whether the rule group is stateless or stateful. If the rule group * is stateless, it contains stateless rules. If it is stateful, it contains * stateful rules.

This setting is required for requests that do not * include the RuleGroupARN.

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

Indicates whether the rule group is stateless or stateful. If the rule group * is stateless, it contains stateless rules. If it is stateful, it contains * stateful rules.

This setting is required for requests that do not * include the RuleGroupARN.

*/ inline UpdateRuleGroupRequest& WithType(const RuleGroupType& value) { SetType(value); return *this;} /** *

Indicates whether the rule group is stateless or stateful. If the rule group * is stateless, it contains stateless rules. If it is stateful, it contains * stateful rules.

This setting is required for requests that do not * include the RuleGroupARN.

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

A description of the rule group.

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

A description of the rule group.

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

A description of the rule group.

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

A description of the rule group.

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

A description of the rule group.

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

A description of the rule group.

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

A description of the rule group.

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

A description of the rule group.

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

Indicates whether you want Network Firewall to just check the validity of the * request, rather than run the request.

If set to TRUE, * Network Firewall checks whether the request can run successfully, but doesn't * actually make the requested changes. The call returns the value that the request * would return if you ran it with dry run set to FALSE, but doesn't * make additions or changes to your resources. This option allows you to make sure * that you have the required permissions to run the request and that your request * parameters are valid.

If set to FALSE, Network Firewall * makes the requested changes to your resources.

*/ inline bool GetDryRun() const{ return m_dryRun; } /** *

Indicates whether you want Network Firewall to just check the validity of the * request, rather than run the request.

If set to TRUE, * Network Firewall checks whether the request can run successfully, but doesn't * actually make the requested changes. The call returns the value that the request * would return if you ran it with dry run set to FALSE, but doesn't * make additions or changes to your resources. This option allows you to make sure * that you have the required permissions to run the request and that your request * parameters are valid.

If set to FALSE, Network Firewall * makes the requested changes to your resources.

*/ inline bool DryRunHasBeenSet() const { return m_dryRunHasBeenSet; } /** *

Indicates whether you want Network Firewall to just check the validity of the * request, rather than run the request.

If set to TRUE, * Network Firewall checks whether the request can run successfully, but doesn't * actually make the requested changes. The call returns the value that the request * would return if you ran it with dry run set to FALSE, but doesn't * make additions or changes to your resources. This option allows you to make sure * that you have the required permissions to run the request and that your request * parameters are valid.

If set to FALSE, Network Firewall * makes the requested changes to your resources.

*/ inline void SetDryRun(bool value) { m_dryRunHasBeenSet = true; m_dryRun = value; } /** *

Indicates whether you want Network Firewall to just check the validity of the * request, rather than run the request.

If set to TRUE, * Network Firewall checks whether the request can run successfully, but doesn't * actually make the requested changes. The call returns the value that the request * would return if you ran it with dry run set to FALSE, but doesn't * make additions or changes to your resources. This option allows you to make sure * that you have the required permissions to run the request and that your request * parameters are valid.

If set to FALSE, Network Firewall * makes the requested changes to your resources.

*/ inline UpdateRuleGroupRequest& WithDryRun(bool value) { SetDryRun(value); return *this;} /** *

A complex type that contains settings for encryption of your rule group * resources.

*/ inline const EncryptionConfiguration& GetEncryptionConfiguration() const{ return m_encryptionConfiguration; } /** *

A complex type that contains settings for encryption of your rule group * resources.

*/ inline bool EncryptionConfigurationHasBeenSet() const { return m_encryptionConfigurationHasBeenSet; } /** *

A complex type that contains settings for encryption of your rule group * resources.

*/ inline void SetEncryptionConfiguration(const EncryptionConfiguration& value) { m_encryptionConfigurationHasBeenSet = true; m_encryptionConfiguration = value; } /** *

A complex type that contains settings for encryption of your rule group * resources.

*/ inline void SetEncryptionConfiguration(EncryptionConfiguration&& value) { m_encryptionConfigurationHasBeenSet = true; m_encryptionConfiguration = std::move(value); } /** *

A complex type that contains settings for encryption of your rule group * resources.

*/ inline UpdateRuleGroupRequest& WithEncryptionConfiguration(const EncryptionConfiguration& value) { SetEncryptionConfiguration(value); return *this;} /** *

A complex type that contains settings for encryption of your rule group * resources.

*/ inline UpdateRuleGroupRequest& WithEncryptionConfiguration(EncryptionConfiguration&& value) { SetEncryptionConfiguration(std::move(value)); return *this;} /** *

A complex type that contains metadata about the rule group that your own rule * group is copied from. You can use the metadata to keep track of updates made to * the originating rule group.

*/ inline const SourceMetadata& GetSourceMetadata() const{ return m_sourceMetadata; } /** *

A complex type that contains metadata about the rule group that your own rule * group is copied from. You can use the metadata to keep track of updates made to * the originating rule group.

*/ inline bool SourceMetadataHasBeenSet() const { return m_sourceMetadataHasBeenSet; } /** *

A complex type that contains metadata about the rule group that your own rule * group is copied from. You can use the metadata to keep track of updates made to * the originating rule group.

*/ inline void SetSourceMetadata(const SourceMetadata& value) { m_sourceMetadataHasBeenSet = true; m_sourceMetadata = value; } /** *

A complex type that contains metadata about the rule group that your own rule * group is copied from. You can use the metadata to keep track of updates made to * the originating rule group.

*/ inline void SetSourceMetadata(SourceMetadata&& value) { m_sourceMetadataHasBeenSet = true; m_sourceMetadata = std::move(value); } /** *

A complex type that contains metadata about the rule group that your own rule * group is copied from. You can use the metadata to keep track of updates made to * the originating rule group.

*/ inline UpdateRuleGroupRequest& WithSourceMetadata(const SourceMetadata& value) { SetSourceMetadata(value); return *this;} /** *

A complex type that contains metadata about the rule group that your own rule * group is copied from. You can use the metadata to keep track of updates made to * the originating rule group.

*/ inline UpdateRuleGroupRequest& WithSourceMetadata(SourceMetadata&& value) { SetSourceMetadata(std::move(value)); return *this;} private: Aws::String m_updateToken; bool m_updateTokenHasBeenSet = false; Aws::String m_ruleGroupArn; bool m_ruleGroupArnHasBeenSet = false; Aws::String m_ruleGroupName; bool m_ruleGroupNameHasBeenSet = false; RuleGroup m_ruleGroup; bool m_ruleGroupHasBeenSet = false; Aws::String m_rules; bool m_rulesHasBeenSet = false; RuleGroupType m_type; bool m_typeHasBeenSet = false; Aws::String m_description; bool m_descriptionHasBeenSet = false; bool m_dryRun; bool m_dryRunHasBeenSet = false; EncryptionConfiguration m_encryptionConfiguration; bool m_encryptionConfigurationHasBeenSet = false; SourceMetadata m_sourceMetadata; bool m_sourceMetadataHasBeenSet = false; }; } // namespace Model } // namespace NetworkFirewall } // namespace Aws