/** * 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 ResourceGroups { namespace Model { /** */ class CreateGroupRequest : public ResourceGroupsRequest { public: AWS_RESOURCEGROUPS_API CreateGroupRequest(); // 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 "CreateGroup"; } AWS_RESOURCEGROUPS_API Aws::String SerializePayload() const override; /** *

The name of the group, which is the identifier of the group in other * operations. You can't change the name of a resource group after you create it. A * resource group name can consist of letters, numbers, hyphens, periods, and * underscores. The name cannot start with AWS or aws; * these are reserved. A resource group name must be unique within each Amazon Web * Services Region in your Amazon Web Services account.

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

The name of the group, which is the identifier of the group in other * operations. You can't change the name of a resource group after you create it. A * resource group name can consist of letters, numbers, hyphens, periods, and * underscores. The name cannot start with AWS or aws; * these are reserved. A resource group name must be unique within each Amazon Web * Services Region in your Amazon Web Services account.

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

The name of the group, which is the identifier of the group in other * operations. You can't change the name of a resource group after you create it. A * resource group name can consist of letters, numbers, hyphens, periods, and * underscores. The name cannot start with AWS or aws; * these are reserved. A resource group name must be unique within each Amazon Web * Services Region in your Amazon Web Services account.

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

The name of the group, which is the identifier of the group in other * operations. You can't change the name of a resource group after you create it. A * resource group name can consist of letters, numbers, hyphens, periods, and * underscores. The name cannot start with AWS or aws; * these are reserved. A resource group name must be unique within each Amazon Web * Services Region in your Amazon Web Services account.

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

The name of the group, which is the identifier of the group in other * operations. You can't change the name of a resource group after you create it. A * resource group name can consist of letters, numbers, hyphens, periods, and * underscores. The name cannot start with AWS or aws; * these are reserved. A resource group name must be unique within each Amazon Web * Services Region in your Amazon Web Services account.

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

The name of the group, which is the identifier of the group in other * operations. You can't change the name of a resource group after you create it. A * resource group name can consist of letters, numbers, hyphens, periods, and * underscores. The name cannot start with AWS or aws; * these are reserved. A resource group name must be unique within each Amazon Web * Services Region in your Amazon Web Services account.

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

The name of the group, which is the identifier of the group in other * operations. You can't change the name of a resource group after you create it. A * resource group name can consist of letters, numbers, hyphens, periods, and * underscores. The name cannot start with AWS or aws; * these are reserved. A resource group name must be unique within each Amazon Web * Services Region in your Amazon Web Services account.

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

The name of the group, which is the identifier of the group in other * operations. You can't change the name of a resource group after you create it. A * resource group name can consist of letters, numbers, hyphens, periods, and * underscores. The name cannot start with AWS or aws; * these are reserved. A resource group name must be unique within each Amazon Web * Services Region in your Amazon Web Services account.

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

The description of the resource group. Descriptions can consist of letters, * numbers, hyphens, underscores, periods, and spaces.

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

The description of the resource group. Descriptions can consist of letters, * numbers, hyphens, underscores, periods, and spaces.

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

The description of the resource group. Descriptions can consist of letters, * numbers, hyphens, underscores, periods, and spaces.

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

The description of the resource group. Descriptions can consist of letters, * numbers, hyphens, underscores, periods, and spaces.

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

The description of the resource group. Descriptions can consist of letters, * numbers, hyphens, underscores, periods, and spaces.

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

The description of the resource group. Descriptions can consist of letters, * numbers, hyphens, underscores, periods, and spaces.

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

The description of the resource group. Descriptions can consist of letters, * numbers, hyphens, underscores, periods, and spaces.

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

The description of the resource group. Descriptions can consist of letters, * numbers, hyphens, underscores, periods, and spaces.

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

The resource query that determines which Amazon Web Services resources are * members of this group. For more information about resource queries, see Create * a tag-based group in Resource Groups.

A resource group can * contain either a ResourceQuery or a Configuration, but * not both.

*/ inline const ResourceQuery& GetResourceQuery() const{ return m_resourceQuery; } /** *

The resource query that determines which Amazon Web Services resources are * members of this group. For more information about resource queries, see Create * a tag-based group in Resource Groups.

A resource group can * contain either a ResourceQuery or a Configuration, but * not both.

*/ inline bool ResourceQueryHasBeenSet() const { return m_resourceQueryHasBeenSet; } /** *

The resource query that determines which Amazon Web Services resources are * members of this group. For more information about resource queries, see Create * a tag-based group in Resource Groups.

A resource group can * contain either a ResourceQuery or a Configuration, but * not both.

*/ inline void SetResourceQuery(const ResourceQuery& value) { m_resourceQueryHasBeenSet = true; m_resourceQuery = value; } /** *

The resource query that determines which Amazon Web Services resources are * members of this group. For more information about resource queries, see Create * a tag-based group in Resource Groups.

A resource group can * contain either a ResourceQuery or a Configuration, but * not both.

*/ inline void SetResourceQuery(ResourceQuery&& value) { m_resourceQueryHasBeenSet = true; m_resourceQuery = std::move(value); } /** *

The resource query that determines which Amazon Web Services resources are * members of this group. For more information about resource queries, see Create * a tag-based group in Resource Groups.

A resource group can * contain either a ResourceQuery or a Configuration, but * not both.

*/ inline CreateGroupRequest& WithResourceQuery(const ResourceQuery& value) { SetResourceQuery(value); return *this;} /** *

The resource query that determines which Amazon Web Services resources are * members of this group. For more information about resource queries, see Create * a tag-based group in Resource Groups.

A resource group can * contain either a ResourceQuery or a Configuration, but * not both.

*/ inline CreateGroupRequest& WithResourceQuery(ResourceQuery&& value) { SetResourceQuery(std::move(value)); return *this;} /** *

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

The tags to add to the group. A tag is key-value pair string.

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

A configuration associates the resource group with an Amazon Web Services * service and specifies how the service can interact with the resources in the * group. A configuration is an array of GroupConfigurationItem elements. * For details about the syntax of service configurations, see Service * configurations for Resource Groups.

A resource group can * contain either a Configuration or a ResourceQuery, but * not both.

*/ inline const Aws::Vector& GetConfiguration() const{ return m_configuration; } /** *

A configuration associates the resource group with an Amazon Web Services * service and specifies how the service can interact with the resources in the * group. A configuration is an array of GroupConfigurationItem elements. * For details about the syntax of service configurations, see Service * configurations for Resource Groups.

A resource group can * contain either a Configuration or a ResourceQuery, but * not both.

*/ inline bool ConfigurationHasBeenSet() const { return m_configurationHasBeenSet; } /** *

A configuration associates the resource group with an Amazon Web Services * service and specifies how the service can interact with the resources in the * group. A configuration is an array of GroupConfigurationItem elements. * For details about the syntax of service configurations, see Service * configurations for Resource Groups.

A resource group can * contain either a Configuration or a ResourceQuery, but * not both.

*/ inline void SetConfiguration(const Aws::Vector& value) { m_configurationHasBeenSet = true; m_configuration = value; } /** *

A configuration associates the resource group with an Amazon Web Services * service and specifies how the service can interact with the resources in the * group. A configuration is an array of GroupConfigurationItem elements. * For details about the syntax of service configurations, see Service * configurations for Resource Groups.

A resource group can * contain either a Configuration or a ResourceQuery, but * not both.

*/ inline void SetConfiguration(Aws::Vector&& value) { m_configurationHasBeenSet = true; m_configuration = std::move(value); } /** *

A configuration associates the resource group with an Amazon Web Services * service and specifies how the service can interact with the resources in the * group. A configuration is an array of GroupConfigurationItem elements. * For details about the syntax of service configurations, see Service * configurations for Resource Groups.

A resource group can * contain either a Configuration or a ResourceQuery, but * not both.

*/ inline CreateGroupRequest& WithConfiguration(const Aws::Vector& value) { SetConfiguration(value); return *this;} /** *

A configuration associates the resource group with an Amazon Web Services * service and specifies how the service can interact with the resources in the * group. A configuration is an array of GroupConfigurationItem elements. * For details about the syntax of service configurations, see Service * configurations for Resource Groups.

A resource group can * contain either a Configuration or a ResourceQuery, but * not both.

*/ inline CreateGroupRequest& WithConfiguration(Aws::Vector&& value) { SetConfiguration(std::move(value)); return *this;} /** *

A configuration associates the resource group with an Amazon Web Services * service and specifies how the service can interact with the resources in the * group. A configuration is an array of GroupConfigurationItem elements. * For details about the syntax of service configurations, see Service * configurations for Resource Groups.

A resource group can * contain either a Configuration or a ResourceQuery, but * not both.

*/ inline CreateGroupRequest& AddConfiguration(const GroupConfigurationItem& value) { m_configurationHasBeenSet = true; m_configuration.push_back(value); return *this; } /** *

A configuration associates the resource group with an Amazon Web Services * service and specifies how the service can interact with the resources in the * group. A configuration is an array of GroupConfigurationItem elements. * For details about the syntax of service configurations, see Service * configurations for Resource Groups.

A resource group can * contain either a Configuration or a ResourceQuery, but * not both.

*/ inline CreateGroupRequest& AddConfiguration(GroupConfigurationItem&& value) { m_configurationHasBeenSet = true; m_configuration.push_back(std::move(value)); return *this; } private: Aws::String m_name; bool m_nameHasBeenSet = false; Aws::String m_description; bool m_descriptionHasBeenSet = false; ResourceQuery m_resourceQuery; bool m_resourceQueryHasBeenSet = false; Aws::Map m_tags; bool m_tagsHasBeenSet = false; Aws::Vector m_configuration; bool m_configurationHasBeenSet = false; }; } // namespace Model } // namespace ResourceGroups } // namespace Aws