404 Not Found


nginx
beegazpacho.com - GrazzMean
Uname: Linux in-mum-web1557.main-hosting.eu 5.14.0-503.35.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Apr 4 05:23:43 EDT 2025 x86_64
Software: LiteSpeed
PHP version: 8.2.30 [ PHP INFO ] PHP os: Linux
Server Ip: 147.79.69.135
Your Ip: 216.73.216.168
User: u848900432 (848900432) | Group: o51372345 (1051372345)
Safe Mode: OFF
Disable Function:
NONE

name : api.go
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.

package resourcegroups

import (
	"fmt"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awsutil"
	"github.com/aws/aws-sdk-go/aws/request"
	"github.com/aws/aws-sdk-go/private/protocol"
	"github.com/aws/aws-sdk-go/private/protocol/restjson"
)

const opCreateGroup = "CreateGroup"

// CreateGroupRequest generates a "aws/request.Request" representing the
// client's request for the CreateGroup operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See CreateGroup for more information on using the CreateGroup
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the CreateGroupRequest method.
//	req, resp := client.CreateGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/CreateGroup
func (c *ResourceGroups) CreateGroupRequest(input *CreateGroupInput) (req *request.Request, output *CreateGroupOutput) {
	op := &request.Operation{
		Name:       opCreateGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/groups",
	}

	if input == nil {
		input = &CreateGroupInput{}
	}

	output = &CreateGroupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CreateGroup API operation for AWS Resource Groups.
//
// Creates a resource group with the specified name and description. You can
// optionally include either a resource query or a service configuration. For
// more information about constructing a resource query, see Build queries and
// groups in Resource Groups (https://docs.aws.amazon.com/ARG/latest/userguide/getting_started-query.html)
// in the Resource Groups User Guide. For more information about service-linked
// groups and service configurations, see Service configurations for Resource
// Groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:CreateGroup
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation CreateGroup for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/CreateGroup
func (c *ResourceGroups) CreateGroup(input *CreateGroupInput) (*CreateGroupOutput, error) {
	req, out := c.CreateGroupRequest(input)
	return out, req.Send()
}

// CreateGroupWithContext is the same as CreateGroup with the addition of
// the ability to pass a context and additional request options.
//
// See CreateGroup for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) CreateGroupWithContext(ctx aws.Context, input *CreateGroupInput, opts ...request.Option) (*CreateGroupOutput, error) {
	req, out := c.CreateGroupRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteGroup = "DeleteGroup"

// DeleteGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteGroup operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteGroup for more information on using the DeleteGroup
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteGroupRequest method.
//	req, resp := client.DeleteGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/DeleteGroup
func (c *ResourceGroups) DeleteGroupRequest(input *DeleteGroupInput) (req *request.Request, output *DeleteGroupOutput) {
	op := &request.Operation{
		Name:       opDeleteGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/delete-group",
	}

	if input == nil {
		input = &DeleteGroupInput{}
	}

	output = &DeleteGroupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeleteGroup API operation for AWS Resource Groups.
//
// Deletes the specified resource group. Deleting a resource group does not
// delete any resources that are members of the group; it only deletes the group
// structure.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:DeleteGroup
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation DeleteGroup for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/DeleteGroup
func (c *ResourceGroups) DeleteGroup(input *DeleteGroupInput) (*DeleteGroupOutput, error) {
	req, out := c.DeleteGroupRequest(input)
	return out, req.Send()
}

// DeleteGroupWithContext is the same as DeleteGroup with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteGroup for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) DeleteGroupWithContext(ctx aws.Context, input *DeleteGroupInput, opts ...request.Option) (*DeleteGroupOutput, error) {
	req, out := c.DeleteGroupRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetAccountSettings = "GetAccountSettings"

// GetAccountSettingsRequest generates a "aws/request.Request" representing the
// client's request for the GetAccountSettings operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetAccountSettings for more information on using the GetAccountSettings
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetAccountSettingsRequest method.
//	req, resp := client.GetAccountSettingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetAccountSettings
func (c *ResourceGroups) GetAccountSettingsRequest(input *GetAccountSettingsInput) (req *request.Request, output *GetAccountSettingsOutput) {
	op := &request.Operation{
		Name:       opGetAccountSettings,
		HTTPMethod: "POST",
		HTTPPath:   "/get-account-settings",
	}

	if input == nil {
		input = &GetAccountSettingsInput{}
	}

	output = &GetAccountSettingsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetAccountSettings API operation for AWS Resource Groups.
//
// Retrieves the current status of optional features in Resource Groups.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation GetAccountSettings for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetAccountSettings
func (c *ResourceGroups) GetAccountSettings(input *GetAccountSettingsInput) (*GetAccountSettingsOutput, error) {
	req, out := c.GetAccountSettingsRequest(input)
	return out, req.Send()
}

// GetAccountSettingsWithContext is the same as GetAccountSettings with the addition of
// the ability to pass a context and additional request options.
//
// See GetAccountSettings for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) GetAccountSettingsWithContext(ctx aws.Context, input *GetAccountSettingsInput, opts ...request.Option) (*GetAccountSettingsOutput, error) {
	req, out := c.GetAccountSettingsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetGroup = "GetGroup"

// GetGroupRequest generates a "aws/request.Request" representing the
// client's request for the GetGroup operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetGroup for more information on using the GetGroup
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetGroupRequest method.
//	req, resp := client.GetGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroup
func (c *ResourceGroups) GetGroupRequest(input *GetGroupInput) (req *request.Request, output *GetGroupOutput) {
	op := &request.Operation{
		Name:       opGetGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/get-group",
	}

	if input == nil {
		input = &GetGroupInput{}
	}

	output = &GetGroupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetGroup API operation for AWS Resource Groups.
//
// Returns information about a specified resource group.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:GetGroup
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation GetGroup for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroup
func (c *ResourceGroups) GetGroup(input *GetGroupInput) (*GetGroupOutput, error) {
	req, out := c.GetGroupRequest(input)
	return out, req.Send()
}

// GetGroupWithContext is the same as GetGroup with the addition of
// the ability to pass a context and additional request options.
//
// See GetGroup for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) GetGroupWithContext(ctx aws.Context, input *GetGroupInput, opts ...request.Option) (*GetGroupOutput, error) {
	req, out := c.GetGroupRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetGroupConfiguration = "GetGroupConfiguration"

// GetGroupConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the GetGroupConfiguration operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetGroupConfiguration for more information on using the GetGroupConfiguration
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetGroupConfigurationRequest method.
//	req, resp := client.GetGroupConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroupConfiguration
func (c *ResourceGroups) GetGroupConfigurationRequest(input *GetGroupConfigurationInput) (req *request.Request, output *GetGroupConfigurationOutput) {
	op := &request.Operation{
		Name:       opGetGroupConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/get-group-configuration",
	}

	if input == nil {
		input = &GetGroupConfigurationInput{}
	}

	output = &GetGroupConfigurationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetGroupConfiguration API operation for AWS Resource Groups.
//
// Retrieves the service configuration associated with the specified resource
// group. For details about the service configuration syntax, see Service configurations
// for Resource Groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:GetGroupConfiguration
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation GetGroupConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroupConfiguration
func (c *ResourceGroups) GetGroupConfiguration(input *GetGroupConfigurationInput) (*GetGroupConfigurationOutput, error) {
	req, out := c.GetGroupConfigurationRequest(input)
	return out, req.Send()
}

// GetGroupConfigurationWithContext is the same as GetGroupConfiguration with the addition of
// the ability to pass a context and additional request options.
//
// See GetGroupConfiguration for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) GetGroupConfigurationWithContext(ctx aws.Context, input *GetGroupConfigurationInput, opts ...request.Option) (*GetGroupConfigurationOutput, error) {
	req, out := c.GetGroupConfigurationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetGroupQuery = "GetGroupQuery"

// GetGroupQueryRequest generates a "aws/request.Request" representing the
// client's request for the GetGroupQuery operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetGroupQuery for more information on using the GetGroupQuery
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetGroupQueryRequest method.
//	req, resp := client.GetGroupQueryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroupQuery
func (c *ResourceGroups) GetGroupQueryRequest(input *GetGroupQueryInput) (req *request.Request, output *GetGroupQueryOutput) {
	op := &request.Operation{
		Name:       opGetGroupQuery,
		HTTPMethod: "POST",
		HTTPPath:   "/get-group-query",
	}

	if input == nil {
		input = &GetGroupQueryInput{}
	}

	output = &GetGroupQueryOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetGroupQuery API operation for AWS Resource Groups.
//
// Retrieves the resource query associated with the specified resource group.
// For more information about resource queries, see Create a tag-based group
// in Resource Groups (https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag).
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:GetGroupQuery
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation GetGroupQuery for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroupQuery
func (c *ResourceGroups) GetGroupQuery(input *GetGroupQueryInput) (*GetGroupQueryOutput, error) {
	req, out := c.GetGroupQueryRequest(input)
	return out, req.Send()
}

// GetGroupQueryWithContext is the same as GetGroupQuery with the addition of
// the ability to pass a context and additional request options.
//
// See GetGroupQuery for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) GetGroupQueryWithContext(ctx aws.Context, input *GetGroupQueryInput, opts ...request.Option) (*GetGroupQueryOutput, error) {
	req, out := c.GetGroupQueryRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetTags = "GetTags"

// GetTagsRequest generates a "aws/request.Request" representing the
// client's request for the GetTags operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetTags for more information on using the GetTags
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetTagsRequest method.
//	req, resp := client.GetTagsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetTags
func (c *ResourceGroups) GetTagsRequest(input *GetTagsInput) (req *request.Request, output *GetTagsOutput) {
	op := &request.Operation{
		Name:       opGetTags,
		HTTPMethod: "GET",
		HTTPPath:   "/resources/{Arn}/tags",
	}

	if input == nil {
		input = &GetTagsInput{}
	}

	output = &GetTagsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetTags API operation for AWS Resource Groups.
//
// Returns a list of tags that are associated with a resource group, specified
// by an ARN.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:GetTags
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation GetTags for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetTags
func (c *ResourceGroups) GetTags(input *GetTagsInput) (*GetTagsOutput, error) {
	req, out := c.GetTagsRequest(input)
	return out, req.Send()
}

// GetTagsWithContext is the same as GetTags with the addition of
// the ability to pass a context and additional request options.
//
// See GetTags for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) GetTagsWithContext(ctx aws.Context, input *GetTagsInput, opts ...request.Option) (*GetTagsOutput, error) {
	req, out := c.GetTagsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGroupResources = "GroupResources"

// GroupResourcesRequest generates a "aws/request.Request" representing the
// client's request for the GroupResources operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GroupResources for more information on using the GroupResources
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GroupResourcesRequest method.
//	req, resp := client.GroupResourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GroupResources
func (c *ResourceGroups) GroupResourcesRequest(input *GroupResourcesInput) (req *request.Request, output *GroupResourcesOutput) {
	op := &request.Operation{
		Name:       opGroupResources,
		HTTPMethod: "POST",
		HTTPPath:   "/group-resources",
	}

	if input == nil {
		input = &GroupResourcesInput{}
	}

	output = &GroupResourcesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GroupResources API operation for AWS Resource Groups.
//
// Adds the specified resources to the specified group.
//
// You can use this operation with only resource groups that are configured
// with the following types:
//
//   - AWS::EC2::HostManagement
//
//   - AWS::EC2::CapacityReservationPool
//
// Other resource group type and resource types aren't currently supported by
// this operation.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:GroupResources
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation GroupResources for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GroupResources
func (c *ResourceGroups) GroupResources(input *GroupResourcesInput) (*GroupResourcesOutput, error) {
	req, out := c.GroupResourcesRequest(input)
	return out, req.Send()
}

// GroupResourcesWithContext is the same as GroupResources with the addition of
// the ability to pass a context and additional request options.
//
// See GroupResources for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) GroupResourcesWithContext(ctx aws.Context, input *GroupResourcesInput, opts ...request.Option) (*GroupResourcesOutput, error) {
	req, out := c.GroupResourcesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListGroupResources = "ListGroupResources"

// ListGroupResourcesRequest generates a "aws/request.Request" representing the
// client's request for the ListGroupResources operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListGroupResources for more information on using the ListGroupResources
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListGroupResourcesRequest method.
//	req, resp := client.ListGroupResourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/ListGroupResources
func (c *ResourceGroups) ListGroupResourcesRequest(input *ListGroupResourcesInput) (req *request.Request, output *ListGroupResourcesOutput) {
	op := &request.Operation{
		Name:       opListGroupResources,
		HTTPMethod: "POST",
		HTTPPath:   "/list-group-resources",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListGroupResourcesInput{}
	}

	output = &ListGroupResourcesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListGroupResources API operation for AWS Resource Groups.
//
// Returns a list of ARNs of the resources that are members of a specified resource
// group.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:ListGroupResources
//
//   - cloudformation:DescribeStacks
//
//   - cloudformation:ListStackResources
//
//   - tag:GetResources
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation ListGroupResources for usage and error information.
//
// Returned Error Types:
//
//   - UnauthorizedException
//     The request was rejected because it doesn't have valid credentials for the
//     target resource.
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/ListGroupResources
func (c *ResourceGroups) ListGroupResources(input *ListGroupResourcesInput) (*ListGroupResourcesOutput, error) {
	req, out := c.ListGroupResourcesRequest(input)
	return out, req.Send()
}

// ListGroupResourcesWithContext is the same as ListGroupResources with the addition of
// the ability to pass a context and additional request options.
//
// See ListGroupResources for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) ListGroupResourcesWithContext(ctx aws.Context, input *ListGroupResourcesInput, opts ...request.Option) (*ListGroupResourcesOutput, error) {
	req, out := c.ListGroupResourcesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListGroupResourcesPages iterates over the pages of a ListGroupResources operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListGroupResources method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a ListGroupResources operation.
//	pageNum := 0
//	err := client.ListGroupResourcesPages(params,
//	    func(page *resourcegroups.ListGroupResourcesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ResourceGroups) ListGroupResourcesPages(input *ListGroupResourcesInput, fn func(*ListGroupResourcesOutput, bool) bool) error {
	return c.ListGroupResourcesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListGroupResourcesPagesWithContext same as ListGroupResourcesPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) ListGroupResourcesPagesWithContext(ctx aws.Context, input *ListGroupResourcesInput, fn func(*ListGroupResourcesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListGroupResourcesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListGroupResourcesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*ListGroupResourcesOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opListGroups = "ListGroups"

// ListGroupsRequest generates a "aws/request.Request" representing the
// client's request for the ListGroups operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListGroups for more information on using the ListGroups
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListGroupsRequest method.
//	req, resp := client.ListGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/ListGroups
func (c *ResourceGroups) ListGroupsRequest(input *ListGroupsInput) (req *request.Request, output *ListGroupsOutput) {
	op := &request.Operation{
		Name:       opListGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/groups-list",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListGroupsInput{}
	}

	output = &ListGroupsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListGroups API operation for AWS Resource Groups.
//
// Returns a list of existing Resource Groups in your account.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:ListGroups
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation ListGroups for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/ListGroups
func (c *ResourceGroups) ListGroups(input *ListGroupsInput) (*ListGroupsOutput, error) {
	req, out := c.ListGroupsRequest(input)
	return out, req.Send()
}

// ListGroupsWithContext is the same as ListGroups with the addition of
// the ability to pass a context and additional request options.
//
// See ListGroups for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) ListGroupsWithContext(ctx aws.Context, input *ListGroupsInput, opts ...request.Option) (*ListGroupsOutput, error) {
	req, out := c.ListGroupsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListGroupsPages iterates over the pages of a ListGroups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListGroups method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a ListGroups operation.
//	pageNum := 0
//	err := client.ListGroupsPages(params,
//	    func(page *resourcegroups.ListGroupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ResourceGroups) ListGroupsPages(input *ListGroupsInput, fn func(*ListGroupsOutput, bool) bool) error {
	return c.ListGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListGroupsPagesWithContext same as ListGroupsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) ListGroupsPagesWithContext(ctx aws.Context, input *ListGroupsInput, fn func(*ListGroupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListGroupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListGroupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*ListGroupsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opPutGroupConfiguration = "PutGroupConfiguration"

// PutGroupConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the PutGroupConfiguration operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See PutGroupConfiguration for more information on using the PutGroupConfiguration
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the PutGroupConfigurationRequest method.
//	req, resp := client.PutGroupConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/PutGroupConfiguration
func (c *ResourceGroups) PutGroupConfigurationRequest(input *PutGroupConfigurationInput) (req *request.Request, output *PutGroupConfigurationOutput) {
	op := &request.Operation{
		Name:       opPutGroupConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/put-group-configuration",
	}

	if input == nil {
		input = &PutGroupConfigurationInput{}
	}

	output = &PutGroupConfigurationOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// PutGroupConfiguration API operation for AWS Resource Groups.
//
// Attaches a service configuration to the specified group. This occurs asynchronously,
// and can take time to complete. You can use GetGroupConfiguration to check
// the status of the update.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:PutGroupConfiguration
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation PutGroupConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/PutGroupConfiguration
func (c *ResourceGroups) PutGroupConfiguration(input *PutGroupConfigurationInput) (*PutGroupConfigurationOutput, error) {
	req, out := c.PutGroupConfigurationRequest(input)
	return out, req.Send()
}

// PutGroupConfigurationWithContext is the same as PutGroupConfiguration with the addition of
// the ability to pass a context and additional request options.
//
// See PutGroupConfiguration for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) PutGroupConfigurationWithContext(ctx aws.Context, input *PutGroupConfigurationInput, opts ...request.Option) (*PutGroupConfigurationOutput, error) {
	req, out := c.PutGroupConfigurationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opSearchResources = "SearchResources"

// SearchResourcesRequest generates a "aws/request.Request" representing the
// client's request for the SearchResources operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See SearchResources for more information on using the SearchResources
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the SearchResourcesRequest method.
//	req, resp := client.SearchResourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/SearchResources
func (c *ResourceGroups) SearchResourcesRequest(input *SearchResourcesInput) (req *request.Request, output *SearchResourcesOutput) {
	op := &request.Operation{
		Name:       opSearchResources,
		HTTPMethod: "POST",
		HTTPPath:   "/resources/search",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchResourcesInput{}
	}

	output = &SearchResourcesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// SearchResources API operation for AWS Resource Groups.
//
// Returns a list of Amazon Web Services resource identifiers that matches the
// specified query. The query uses the same format as a resource query in a
// CreateGroup or UpdateGroupQuery operation.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:SearchResources
//
//   - cloudformation:DescribeStacks
//
//   - cloudformation:ListStackResources
//
//   - tag:GetResources
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation SearchResources for usage and error information.
//
// Returned Error Types:
//
//   - UnauthorizedException
//     The request was rejected because it doesn't have valid credentials for the
//     target resource.
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/SearchResources
func (c *ResourceGroups) SearchResources(input *SearchResourcesInput) (*SearchResourcesOutput, error) {
	req, out := c.SearchResourcesRequest(input)
	return out, req.Send()
}

// SearchResourcesWithContext is the same as SearchResources with the addition of
// the ability to pass a context and additional request options.
//
// See SearchResources for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) SearchResourcesWithContext(ctx aws.Context, input *SearchResourcesInput, opts ...request.Option) (*SearchResourcesOutput, error) {
	req, out := c.SearchResourcesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// SearchResourcesPages iterates over the pages of a SearchResources operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See SearchResources method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a SearchResources operation.
//	pageNum := 0
//	err := client.SearchResourcesPages(params,
//	    func(page *resourcegroups.SearchResourcesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ResourceGroups) SearchResourcesPages(input *SearchResourcesInput, fn func(*SearchResourcesOutput, bool) bool) error {
	return c.SearchResourcesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// SearchResourcesPagesWithContext same as SearchResourcesPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) SearchResourcesPagesWithContext(ctx aws.Context, input *SearchResourcesInput, fn func(*SearchResourcesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *SearchResourcesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.SearchResourcesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*SearchResourcesOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opTag = "Tag"

// TagRequest generates a "aws/request.Request" representing the
// client's request for the Tag operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See Tag for more information on using the Tag
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the TagRequest method.
//	req, resp := client.TagRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/Tag
func (c *ResourceGroups) TagRequest(input *TagInput) (req *request.Request, output *TagOutput) {
	op := &request.Operation{
		Name:       opTag,
		HTTPMethod: "PUT",
		HTTPPath:   "/resources/{Arn}/tags",
	}

	if input == nil {
		input = &TagInput{}
	}

	output = &TagOutput{}
	req = c.newRequest(op, input, output)
	return
}

// Tag API operation for AWS Resource Groups.
//
// Adds tags to a resource group with the specified ARN. Existing tags on a
// resource group are not changed if they are not specified in the request parameters.
//
// Do not store personally identifiable information (PII) or other confidential
// or sensitive information in tags. We use tags to provide you with billing
// and administration services. Tags are not intended to be used for private
// or sensitive data.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:Tag
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation Tag for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/Tag
func (c *ResourceGroups) Tag(input *TagInput) (*TagOutput, error) {
	req, out := c.TagRequest(input)
	return out, req.Send()
}

// TagWithContext is the same as Tag with the addition of
// the ability to pass a context and additional request options.
//
// See Tag for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) TagWithContext(ctx aws.Context, input *TagInput, opts ...request.Option) (*TagOutput, error) {
	req, out := c.TagRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUngroupResources = "UngroupResources"

// UngroupResourcesRequest generates a "aws/request.Request" representing the
// client's request for the UngroupResources operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UngroupResources for more information on using the UngroupResources
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UngroupResourcesRequest method.
//	req, resp := client.UngroupResourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UngroupResources
func (c *ResourceGroups) UngroupResourcesRequest(input *UngroupResourcesInput) (req *request.Request, output *UngroupResourcesOutput) {
	op := &request.Operation{
		Name:       opUngroupResources,
		HTTPMethod: "POST",
		HTTPPath:   "/ungroup-resources",
	}

	if input == nil {
		input = &UngroupResourcesInput{}
	}

	output = &UngroupResourcesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UngroupResources API operation for AWS Resource Groups.
//
// Removes the specified resources from the specified group. This operation
// works only with static groups that you populated using the GroupResources
// operation. It doesn't work with any resource groups that are automatically
// populated by tag-based or CloudFormation stack-based queries.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:UngroupResources
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation UngroupResources for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UngroupResources
func (c *ResourceGroups) UngroupResources(input *UngroupResourcesInput) (*UngroupResourcesOutput, error) {
	req, out := c.UngroupResourcesRequest(input)
	return out, req.Send()
}

// UngroupResourcesWithContext is the same as UngroupResources with the addition of
// the ability to pass a context and additional request options.
//
// See UngroupResources for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) UngroupResourcesWithContext(ctx aws.Context, input *UngroupResourcesInput, opts ...request.Option) (*UngroupResourcesOutput, error) {
	req, out := c.UngroupResourcesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUntag = "Untag"

// UntagRequest generates a "aws/request.Request" representing the
// client's request for the Untag operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See Untag for more information on using the Untag
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UntagRequest method.
//	req, resp := client.UntagRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/Untag
func (c *ResourceGroups) UntagRequest(input *UntagInput) (req *request.Request, output *UntagOutput) {
	op := &request.Operation{
		Name:       opUntag,
		HTTPMethod: "PATCH",
		HTTPPath:   "/resources/{Arn}/tags",
	}

	if input == nil {
		input = &UntagInput{}
	}

	output = &UntagOutput{}
	req = c.newRequest(op, input, output)
	return
}

// Untag API operation for AWS Resource Groups.
//
// Deletes tags from a specified resource group.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:Untag
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation Untag for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/Untag
func (c *ResourceGroups) Untag(input *UntagInput) (*UntagOutput, error) {
	req, out := c.UntagRequest(input)
	return out, req.Send()
}

// UntagWithContext is the same as Untag with the addition of
// the ability to pass a context and additional request options.
//
// See Untag for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) UntagWithContext(ctx aws.Context, input *UntagInput, opts ...request.Option) (*UntagOutput, error) {
	req, out := c.UntagRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateAccountSettings = "UpdateAccountSettings"

// UpdateAccountSettingsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateAccountSettings operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateAccountSettings for more information on using the UpdateAccountSettings
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateAccountSettingsRequest method.
//	req, resp := client.UpdateAccountSettingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateAccountSettings
func (c *ResourceGroups) UpdateAccountSettingsRequest(input *UpdateAccountSettingsInput) (req *request.Request, output *UpdateAccountSettingsOutput) {
	op := &request.Operation{
		Name:       opUpdateAccountSettings,
		HTTPMethod: "POST",
		HTTPPath:   "/update-account-settings",
	}

	if input == nil {
		input = &UpdateAccountSettingsInput{}
	}

	output = &UpdateAccountSettingsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateAccountSettings API operation for AWS Resource Groups.
//
// Turns on or turns off optional features in Resource Groups.
//
// The preceding example shows that the request to turn on group lifecycle events
// is IN_PROGRESS. You can call the GetAccountSettings operation to check for
// completion by looking for GroupLifecycleEventsStatus to change to ACTIVE.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation UpdateAccountSettings for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateAccountSettings
func (c *ResourceGroups) UpdateAccountSettings(input *UpdateAccountSettingsInput) (*UpdateAccountSettingsOutput, error) {
	req, out := c.UpdateAccountSettingsRequest(input)
	return out, req.Send()
}

// UpdateAccountSettingsWithContext is the same as UpdateAccountSettings with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateAccountSettings for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) UpdateAccountSettingsWithContext(ctx aws.Context, input *UpdateAccountSettingsInput, opts ...request.Option) (*UpdateAccountSettingsOutput, error) {
	req, out := c.UpdateAccountSettingsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateGroup = "UpdateGroup"

// UpdateGroupRequest generates a "aws/request.Request" representing the
// client's request for the UpdateGroup operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateGroup for more information on using the UpdateGroup
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateGroupRequest method.
//	req, resp := client.UpdateGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateGroup
func (c *ResourceGroups) UpdateGroupRequest(input *UpdateGroupInput) (req *request.Request, output *UpdateGroupOutput) {
	op := &request.Operation{
		Name:       opUpdateGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/update-group",
	}

	if input == nil {
		input = &UpdateGroupInput{}
	}

	output = &UpdateGroupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateGroup API operation for AWS Resource Groups.
//
// Updates the description for an existing group. You cannot update the name
// of a resource group.
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:UpdateGroup
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation UpdateGroup for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateGroup
func (c *ResourceGroups) UpdateGroup(input *UpdateGroupInput) (*UpdateGroupOutput, error) {
	req, out := c.UpdateGroupRequest(input)
	return out, req.Send()
}

// UpdateGroupWithContext is the same as UpdateGroup with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateGroup for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) UpdateGroupWithContext(ctx aws.Context, input *UpdateGroupInput, opts ...request.Option) (*UpdateGroupOutput, error) {
	req, out := c.UpdateGroupRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateGroupQuery = "UpdateGroupQuery"

// UpdateGroupQueryRequest generates a "aws/request.Request" representing the
// client's request for the UpdateGroupQuery operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateGroupQuery for more information on using the UpdateGroupQuery
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateGroupQueryRequest method.
//	req, resp := client.UpdateGroupQueryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateGroupQuery
func (c *ResourceGroups) UpdateGroupQueryRequest(input *UpdateGroupQueryInput) (req *request.Request, output *UpdateGroupQueryOutput) {
	op := &request.Operation{
		Name:       opUpdateGroupQuery,
		HTTPMethod: "POST",
		HTTPPath:   "/update-group-query",
	}

	if input == nil {
		input = &UpdateGroupQueryInput{}
	}

	output = &UpdateGroupQueryOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateGroupQuery API operation for AWS Resource Groups.
//
// Updates the resource query of a group. For more information about resource
// queries, see Create a tag-based group in Resource Groups (https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag).
//
// # Minimum permissions
//
// To run this command, you must have the following permissions:
//
//   - resource-groups:UpdateGroupQuery
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Resource Groups's
// API operation UpdateGroupQuery for usage and error information.
//
// Returned Error Types:
//
//   - BadRequestException
//     The request includes one or more parameters that violate validation rules.
//
//   - ForbiddenException
//     The caller isn't authorized to make the request. Check permissions.
//
//   - NotFoundException
//     One or more of the specified resources don't exist.
//
//   - MethodNotAllowedException
//     The request uses an HTTP method that isn't allowed for the specified resource.
//
//   - TooManyRequestsException
//     You've exceeded throttling limits by making too many requests in a period
//     of time.
//
//   - InternalServerErrorException
//     An internal error occurred while processing the request. Try again later.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateGroupQuery
func (c *ResourceGroups) UpdateGroupQuery(input *UpdateGroupQueryInput) (*UpdateGroupQueryOutput, error) {
	req, out := c.UpdateGroupQueryRequest(input)
	return out, req.Send()
}

// UpdateGroupQueryWithContext is the same as UpdateGroupQuery with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateGroupQuery for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ResourceGroups) UpdateGroupQueryWithContext(ctx aws.Context, input *UpdateGroupQueryInput, opts ...request.Option) (*UpdateGroupQueryOutput, error) {
	req, out := c.UpdateGroupQueryRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// The Resource Groups settings for this Amazon Web Services account.
type AccountSettings struct {
	_ struct{} `type:"structure"`

	// The desired target status of the group lifecycle events feature. If
	GroupLifecycleEventsDesiredStatus *string `type:"string" enum:"GroupLifecycleEventsDesiredStatus"`

	// The current status of the group lifecycle events feature.
	GroupLifecycleEventsStatus *string `type:"string" enum:"GroupLifecycleEventsStatus"`

	// The text of any error message occurs during an attempt to turn group lifecycle
	// events on or off.
	GroupLifecycleEventsStatusMessage *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccountSettings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccountSettings) GoString() string {
	return s.String()
}

// SetGroupLifecycleEventsDesiredStatus sets the GroupLifecycleEventsDesiredStatus field's value.
func (s *AccountSettings) SetGroupLifecycleEventsDesiredStatus(v string) *AccountSettings {
	s.GroupLifecycleEventsDesiredStatus = &v
	return s
}

// SetGroupLifecycleEventsStatus sets the GroupLifecycleEventsStatus field's value.
func (s *AccountSettings) SetGroupLifecycleEventsStatus(v string) *AccountSettings {
	s.GroupLifecycleEventsStatus = &v
	return s
}

// SetGroupLifecycleEventsStatusMessage sets the GroupLifecycleEventsStatusMessage field's value.
func (s *AccountSettings) SetGroupLifecycleEventsStatusMessage(v string) *AccountSettings {
	s.GroupLifecycleEventsStatusMessage = &v
	return s
}

// The request includes one or more parameters that violate validation rules.
type BadRequestException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BadRequestException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BadRequestException) GoString() string {
	return s.String()
}

func newErrorBadRequestException(v protocol.ResponseMetadata) error {
	return &BadRequestException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *BadRequestException) Code() string {
	return "BadRequestException"
}

// Message returns the exception's message.
func (s *BadRequestException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *BadRequestException) OrigErr() error {
	return nil
}

func (s *BadRequestException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *BadRequestException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *BadRequestException) RequestID() string {
	return s.RespMetadata.RequestID
}

type CreateGroupInput struct {
	_ struct{} `type:"structure"`

	// 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 (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
	//
	// A resource group can contain either a Configuration or a ResourceQuery, but
	// not both.
	Configuration []*GroupConfigurationItem `type:"list"`

	// The description of the resource group. Descriptions can consist of letters,
	// numbers, hyphens, underscores, periods, and spaces.
	Description *string `type:"string"`

	// 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.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// 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 (https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag).
	//
	// A resource group can contain either a ResourceQuery or a Configuration, but
	// not both.
	ResourceQuery *ResourceQuery `type:"structure"`

	// The tags to add to the group. A tag is key-value pair string.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateGroupInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Configuration != nil {
		for i, v := range s.Configuration {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Configuration", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ResourceQuery != nil {
		if err := s.ResourceQuery.Validate(); err != nil {
			invalidParams.AddNested("ResourceQuery", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfiguration sets the Configuration field's value.
func (s *CreateGroupInput) SetConfiguration(v []*GroupConfigurationItem) *CreateGroupInput {
	s.Configuration = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateGroupInput) SetDescription(v string) *CreateGroupInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateGroupInput) SetName(v string) *CreateGroupInput {
	s.Name = &v
	return s
}

// SetResourceQuery sets the ResourceQuery field's value.
func (s *CreateGroupInput) SetResourceQuery(v *ResourceQuery) *CreateGroupInput {
	s.ResourceQuery = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateGroupInput) SetTags(v map[string]*string) *CreateGroupInput {
	s.Tags = v
	return s
}

type CreateGroupOutput struct {
	_ struct{} `type:"structure"`

	// The description of the resource group.
	Group *Group `type:"structure"`

	// The service configuration associated with the resource group. For details
	// about the syntax of a service configuration, see Service configurations for
	// Resource Groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
	GroupConfiguration *GroupConfiguration `type:"structure"`

	// The resource query associated with the group. For more information about
	// resource queries, see Create a tag-based group in Resource Groups (https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag).
	ResourceQuery *ResourceQuery `type:"structure"`

	// The tags associated with the group.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateGroupOutput) GoString() string {
	return s.String()
}

// SetGroup sets the Group field's value.
func (s *CreateGroupOutput) SetGroup(v *Group) *CreateGroupOutput {
	s.Group = v
	return s
}

// SetGroupConfiguration sets the GroupConfiguration field's value.
func (s *CreateGroupOutput) SetGroupConfiguration(v *GroupConfiguration) *CreateGroupOutput {
	s.GroupConfiguration = v
	return s
}

// SetResourceQuery sets the ResourceQuery field's value.
func (s *CreateGroupOutput) SetResourceQuery(v *ResourceQuery) *CreateGroupOutput {
	s.ResourceQuery = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateGroupOutput) SetTags(v map[string]*string) *CreateGroupOutput {
	s.Tags = v
	return s
}

type DeleteGroupInput struct {
	_ struct{} `type:"structure"`

	// The name or the ARN of the resource group to delete.
	Group *string `min:"1" type:"string"`

	// Deprecated - don't use this parameter. Use Group instead.
	//
	// Deprecated: This field is deprecated, use Group instead.
	GroupName *string `min:"1" deprecated:"true" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteGroupInput"}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGroup sets the Group field's value.
func (s *DeleteGroupInput) SetGroup(v string) *DeleteGroupInput {
	s.Group = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *DeleteGroupInput) SetGroupName(v string) *DeleteGroupInput {
	s.GroupName = &v
	return s
}

type DeleteGroupOutput struct {
	_ struct{} `type:"structure"`

	// A full description of the deleted resource group.
	Group *Group `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteGroupOutput) GoString() string {
	return s.String()
}

// SetGroup sets the Group field's value.
func (s *DeleteGroupOutput) SetGroup(v *Group) *DeleteGroupOutput {
	s.Group = v
	return s
}

// A resource that failed to be added to or removed from a group.
type FailedResource struct {
	_ struct{} `type:"structure"`

	// The error code associated with the failure.
	ErrorCode *string `min:"1" type:"string"`

	// The error message text associated with the failure.
	ErrorMessage *string `min:"1" type:"string"`

	// The ARN of the resource that failed to be added or removed.
	ResourceArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FailedResource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FailedResource) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *FailedResource) SetErrorCode(v string) *FailedResource {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *FailedResource) SetErrorMessage(v string) *FailedResource {
	s.ErrorMessage = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *FailedResource) SetResourceArn(v string) *FailedResource {
	s.ResourceArn = &v
	return s
}

// The caller isn't authorized to make the request. Check permissions.
type ForbiddenException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ForbiddenException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ForbiddenException) GoString() string {
	return s.String()
}

func newErrorForbiddenException(v protocol.ResponseMetadata) error {
	return &ForbiddenException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ForbiddenException) Code() string {
	return "ForbiddenException"
}

// Message returns the exception's message.
func (s *ForbiddenException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ForbiddenException) OrigErr() error {
	return nil
}

func (s *ForbiddenException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ForbiddenException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ForbiddenException) RequestID() string {
	return s.RespMetadata.RequestID
}

type GetAccountSettingsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAccountSettingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAccountSettingsInput) GoString() string {
	return s.String()
}

type GetAccountSettingsOutput struct {
	_ struct{} `type:"structure"`

	// The current settings for the optional features in Resource Groups.
	AccountSettings *AccountSettings `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAccountSettingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAccountSettingsOutput) GoString() string {
	return s.String()
}

// SetAccountSettings sets the AccountSettings field's value.
func (s *GetAccountSettingsOutput) SetAccountSettings(v *AccountSettings) *GetAccountSettingsOutput {
	s.AccountSettings = v
	return s
}

type GetGroupConfigurationInput struct {
	_ struct{} `type:"structure"`

	// The name or the ARN of the resource group for which you want to retrive the
	// service configuration.
	Group *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetGroupConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetGroupConfigurationInput"}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGroup sets the Group field's value.
func (s *GetGroupConfigurationInput) SetGroup(v string) *GetGroupConfigurationInput {
	s.Group = &v
	return s
}

type GetGroupConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// A structure that describes the service configuration attached with the specified
	// group. For details about the service configuration syntax, see Service configurations
	// for Resource Groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
	GroupConfiguration *GroupConfiguration `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupConfigurationOutput) GoString() string {
	return s.String()
}

// SetGroupConfiguration sets the GroupConfiguration field's value.
func (s *GetGroupConfigurationOutput) SetGroupConfiguration(v *GroupConfiguration) *GetGroupConfigurationOutput {
	s.GroupConfiguration = v
	return s
}

type GetGroupInput struct {
	_ struct{} `type:"structure"`

	// The name or the ARN of the resource group to retrieve.
	Group *string `min:"1" type:"string"`

	// Deprecated - don't use this parameter. Use Group instead.
	//
	// Deprecated: This field is deprecated, use Group instead.
	GroupName *string `min:"1" deprecated:"true" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetGroupInput"}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGroup sets the Group field's value.
func (s *GetGroupInput) SetGroup(v string) *GetGroupInput {
	s.Group = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *GetGroupInput) SetGroupName(v string) *GetGroupInput {
	s.GroupName = &v
	return s
}

type GetGroupOutput struct {
	_ struct{} `type:"structure"`

	// A structure that contains the metadata details for the specified resource
	// group. Use GetGroupQuery and GetGroupConfiguration to get those additional
	// details of the resource group.
	Group *Group `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupOutput) GoString() string {
	return s.String()
}

// SetGroup sets the Group field's value.
func (s *GetGroupOutput) SetGroup(v *Group) *GetGroupOutput {
	s.Group = v
	return s
}

type GetGroupQueryInput struct {
	_ struct{} `type:"structure"`

	// The name or the ARN of the resource group to query.
	Group *string `min:"1" type:"string"`

	// Don't use this parameter. Use Group instead.
	//
	// Deprecated: This field is deprecated, use Group instead.
	GroupName *string `min:"1" deprecated:"true" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupQueryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupQueryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetGroupQueryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetGroupQueryInput"}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGroup sets the Group field's value.
func (s *GetGroupQueryInput) SetGroup(v string) *GetGroupQueryInput {
	s.Group = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *GetGroupQueryInput) SetGroupName(v string) *GetGroupQueryInput {
	s.GroupName = &v
	return s
}

type GetGroupQueryOutput struct {
	_ struct{} `type:"structure"`

	// The resource query associated with the specified group. For more information
	// about resource queries, see Create a tag-based group in Resource Groups (https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag).
	GroupQuery *GroupQuery `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupQueryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupQueryOutput) GoString() string {
	return s.String()
}

// SetGroupQuery sets the GroupQuery field's value.
func (s *GetGroupQueryOutput) SetGroupQuery(v *GroupQuery) *GetGroupQueryOutput {
	s.GroupQuery = v
	return s
}

type GetTagsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the resource group whose tags you want to retrieve.
	//
	// Arn is a required field
	Arn *string `location:"uri" locationName:"Arn" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTagsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTagsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTagsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTagsInput"}
	if s.Arn == nil {
		invalidParams.Add(request.NewErrParamRequired("Arn"))
	}
	if s.Arn != nil && len(*s.Arn) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("Arn", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *GetTagsInput) SetArn(v string) *GetTagsInput {
	s.Arn = &v
	return s
}

type GetTagsOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the tagged resource group.
	Arn *string `min:"12" type:"string"`

	// The tags associated with the specified resource group.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTagsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTagsOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *GetTagsOutput) SetArn(v string) *GetTagsOutput {
	s.Arn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *GetTagsOutput) SetTags(v map[string]*string) *GetTagsOutput {
	s.Tags = v
	return s
}

// A resource group that contains Amazon Web Services resources. You can assign
// resources to the group by associating either of the following elements with
// the group:
//
//   - ResourceQuery - Use a resource query to specify a set of tag keys and
//     values. All resources in the same Amazon Web Services Region and Amazon
//     Web Services account that have those keys with the same values are included
//     in the group. You can add a resource query when you create the group,
//     or later by using the PutGroupConfiguration operation.
//
//   - GroupConfiguration - Use a service configuration to associate the group
//     with an Amazon Web Services service. The configuration specifies which
//     resource types can be included in the group.
type Group struct {
	_ struct{} `type:"structure"`

	// The description of the resource group.
	Description *string `type:"string"`

	// The ARN of the resource group.
	//
	// GroupArn is a required field
	GroupArn *string `min:"12" type:"string" required:"true"`

	// The name of the resource group.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Group) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Group) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *Group) SetDescription(v string) *Group {
	s.Description = &v
	return s
}

// SetGroupArn sets the GroupArn field's value.
func (s *Group) SetGroupArn(v string) *Group {
	s.GroupArn = &v
	return s
}

// SetName sets the Name field's value.
func (s *Group) SetName(v string) *Group {
	s.Name = &v
	return s
}

// A service configuration associated with a resource group. The configuration
// options are determined by the Amazon Web Services service that defines the
// Type, and specifies which resources can be included in the group. You can
// add a service configuration when you create the group by using CreateGroup,
// or later by using the PutGroupConfiguration operation. For details about
// group service configuration syntax, see Service configurations for resource
// groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
type GroupConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration currently associated with the group and in effect.
	Configuration []*GroupConfigurationItem `type:"list"`

	// If present, the reason why a request to update the group configuration failed.
	FailureReason *string `type:"string"`

	// If present, the new configuration that is in the process of being applied
	// to the group.
	ProposedConfiguration []*GroupConfigurationItem `type:"list"`

	// The current status of an attempt to update the group configuration.
	Status *string `type:"string" enum:"GroupConfigurationStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupConfiguration) GoString() string {
	return s.String()
}

// SetConfiguration sets the Configuration field's value.
func (s *GroupConfiguration) SetConfiguration(v []*GroupConfigurationItem) *GroupConfiguration {
	s.Configuration = v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *GroupConfiguration) SetFailureReason(v string) *GroupConfiguration {
	s.FailureReason = &v
	return s
}

// SetProposedConfiguration sets the ProposedConfiguration field's value.
func (s *GroupConfiguration) SetProposedConfiguration(v []*GroupConfigurationItem) *GroupConfiguration {
	s.ProposedConfiguration = v
	return s
}

// SetStatus sets the Status field's value.
func (s *GroupConfiguration) SetStatus(v string) *GroupConfiguration {
	s.Status = &v
	return s
}

// An item in a group configuration. A group service configuration can have
// one or more items. For details about group service configuration syntax,
// see Service configurations for resource groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
type GroupConfigurationItem struct {
	_ struct{} `type:"structure"`

	// A collection of parameters for this group configuration item. For the list
	// of parameters that you can use with each configuration item type, see Supported
	// resource types and parameters (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html#about-slg-types).
	Parameters []*GroupConfigurationParameter `type:"list"`

	// Specifies the type of group configuration item. Each item must have a unique
	// value for type. For the list of types that you can specify for a configuration
	// item, see Supported resource types and parameters (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html#about-slg-types).
	//
	// Type is a required field
	Type *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupConfigurationItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupConfigurationItem) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GroupConfigurationItem) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GroupConfigurationItem"}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Parameters != nil {
		for i, v := range s.Parameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Parameters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetParameters sets the Parameters field's value.
func (s *GroupConfigurationItem) SetParameters(v []*GroupConfigurationParameter) *GroupConfigurationItem {
	s.Parameters = v
	return s
}

// SetType sets the Type field's value.
func (s *GroupConfigurationItem) SetType(v string) *GroupConfigurationItem {
	s.Type = &v
	return s
}

// A parameter for a group configuration item. For details about group service
// configuration syntax, see Service configurations for resource groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
type GroupConfigurationParameter struct {
	_ struct{} `type:"structure"`

	// The name of the group configuration parameter. For the list of parameters
	// that you can use with each configuration item type, see Supported resource
	// types and parameters (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html#about-slg-types).
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The value or values to be used for the specified parameter. For the list
	// of values you can use with each parameter, see Supported resource types and
	// parameters (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html#about-slg-types).
	Values []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupConfigurationParameter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupConfigurationParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GroupConfigurationParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GroupConfigurationParameter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GroupConfigurationParameter) SetName(v string) *GroupConfigurationParameter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *GroupConfigurationParameter) SetValues(v []*string) *GroupConfigurationParameter {
	s.Values = v
	return s
}

// A filter collection that you can use to restrict the results from a List
// operation to only those you want to include.
type GroupFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter. Filter names are case-sensitive.
	//
	// Name is a required field
	Name *string `type:"string" required:"true" enum:"GroupFilterName"`

	// One or more filter values. Allowed filter values vary by group filter name,
	// and are case-sensitive.
	//
	// Values is a required field
	Values []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GroupFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GroupFilter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	if s.Values != nil && len(s.Values) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GroupFilter) SetName(v string) *GroupFilter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *GroupFilter) SetValues(v []*string) *GroupFilter {
	s.Values = v
	return s
}

// The unique identifiers for a resource group.
type GroupIdentifier struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource group.
	GroupArn *string `min:"12" type:"string"`

	// The name of the resource group.
	GroupName *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupIdentifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupIdentifier) GoString() string {
	return s.String()
}

// SetGroupArn sets the GroupArn field's value.
func (s *GroupIdentifier) SetGroupArn(v string) *GroupIdentifier {
	s.GroupArn = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *GroupIdentifier) SetGroupName(v string) *GroupIdentifier {
	s.GroupName = &v
	return s
}

// A mapping of a query attached to a resource group that determines the Amazon
// Web Services resources that are members of the group.
type GroupQuery struct {
	_ struct{} `type:"structure"`

	// The name of the resource group that is associated with the specified resource
	// query.
	//
	// GroupName is a required field
	GroupName *string `min:"1" type:"string" required:"true"`

	// The resource query that determines which Amazon Web Services resources are
	// members of the associated resource group.
	//
	// ResourceQuery is a required field
	ResourceQuery *ResourceQuery `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupQuery) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupQuery) GoString() string {
	return s.String()
}

// SetGroupName sets the GroupName field's value.
func (s *GroupQuery) SetGroupName(v string) *GroupQuery {
	s.GroupName = &v
	return s
}

// SetResourceQuery sets the ResourceQuery field's value.
func (s *GroupQuery) SetResourceQuery(v *ResourceQuery) *GroupQuery {
	s.ResourceQuery = v
	return s
}

type GroupResourcesInput struct {
	_ struct{} `type:"structure"`

	// The name or the ARN of the resource group to add resources to.
	//
	// Group is a required field
	Group *string `min:"1" type:"string" required:"true"`

	// The list of ARNs of the resources to be added to the group.
	//
	// ResourceArns is a required field
	ResourceArns []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupResourcesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupResourcesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GroupResourcesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GroupResourcesInput"}
	if s.Group == nil {
		invalidParams.Add(request.NewErrParamRequired("Group"))
	}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}
	if s.ResourceArns == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
	}
	if s.ResourceArns != nil && len(s.ResourceArns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArns", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGroup sets the Group field's value.
func (s *GroupResourcesInput) SetGroup(v string) *GroupResourcesInput {
	s.Group = &v
	return s
}

// SetResourceArns sets the ResourceArns field's value.
func (s *GroupResourcesInput) SetResourceArns(v []*string) *GroupResourcesInput {
	s.ResourceArns = v
	return s
}

type GroupResourcesOutput struct {
	_ struct{} `type:"structure"`

	// A list of ARNs of any resources that this operation failed to add to the
	// group.
	Failed []*FailedResource `type:"list"`

	// A list of ARNs of any resources that this operation is still in the process
	// adding to the group. These pending additions continue asynchronously. You
	// can check the status of pending additions by using the ListGroupResources
	// operation, and checking the Resources array in the response and the Status
	// field of each object in that array.
	Pending []*PendingResource `type:"list"`

	// A list of ARNs of the resources that this operation successfully added to
	// the group.
	Succeeded []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupResourcesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupResourcesOutput) GoString() string {
	return s.String()
}

// SetFailed sets the Failed field's value.
func (s *GroupResourcesOutput) SetFailed(v []*FailedResource) *GroupResourcesOutput {
	s.Failed = v
	return s
}

// SetPending sets the Pending field's value.
func (s *GroupResourcesOutput) SetPending(v []*PendingResource) *GroupResourcesOutput {
	s.Pending = v
	return s
}

// SetSucceeded sets the Succeeded field's value.
func (s *GroupResourcesOutput) SetSucceeded(v []*string) *GroupResourcesOutput {
	s.Succeeded = v
	return s
}

// An internal error occurred while processing the request. Try again later.
type InternalServerErrorException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServerErrorException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServerErrorException) GoString() string {
	return s.String()
}

func newErrorInternalServerErrorException(v protocol.ResponseMetadata) error {
	return &InternalServerErrorException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InternalServerErrorException) Code() string {
	return "InternalServerErrorException"
}

// Message returns the exception's message.
func (s *InternalServerErrorException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InternalServerErrorException) OrigErr() error {
	return nil
}

func (s *InternalServerErrorException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InternalServerErrorException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InternalServerErrorException) RequestID() string {
	return s.RespMetadata.RequestID
}

type ListGroupResourcesInput struct {
	_ struct{} `type:"structure"`

	// Filters, formatted as ResourceFilter objects, that you want to apply to a
	// ListGroupResources operation. Filters the results to include only those of
	// the specified resource types.
	//
	//    * resource-type - Filter resources by their type. Specify up to five resource
	//    types in the format AWS::ServiceCode::ResourceType. For example, AWS::EC2::Instance,
	//    or AWS::S3::Bucket.
	//
	// When you specify a resource-type filter for ListGroupResources, Resource
	// Groups validates your filter resource types against the types that are defined
	// in the query associated with the group. For example, if a group contains
	// only S3 buckets because its query specifies only that resource type, but
	// your resource-type filter includes EC2 instances, AWS Resource Groups does
	// not filter for EC2 instances. In this case, a ListGroupResources request
	// returns a BadRequestException error with a message similar to the following:
	//
	// The resource types specified as filters in the request are not valid.
	//
	// The error includes a list of resource types that failed the validation because
	// they are not part of the query associated with the group. This validation
	// doesn't occur when the group query specifies AWS::AllSupported, because a
	// group based on such a query can contain any of the allowed resource types
	// for the query type (tag-based or Amazon CloudFront stack-based queries).
	Filters []*ResourceFilter `type:"list"`

	// The name or the ARN of the resource group
	Group *string `min:"1" type:"string"`

	//
	//  Deprecated - don't use this parameter. Use the Group request field instead.
	//
	// Deprecated: This field is deprecated, use Group instead.
	GroupName *string `min:"1" deprecated:"true" type:"string"`

	// The total number of results that you want included on each page of the response.
	// If you do not include this parameter, it defaults to a value that is specific
	// to the operation. If additional items exist beyond the maximum you specify,
	// the NextToken response element is present and has a value (is not null).
	// Include that value as the NextToken request parameter in the next call to
	// the operation to get the next part of the results. Note that the service
	// might return fewer results than the maximum even when there are more results
	// available. You should check NextToken after every operation to ensure that
	// you receive all of the results.
	MaxResults *int64 `min:"1" type:"integer"`

	// The parameter for receiving additional results if you receive a NextToken
	// response in a previous request. A NextToken response indicates that more
	// output is available. Set this parameter to the value provided by a previous
	// call's NextToken response to indicate where the output should continue from.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupResourcesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupResourcesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListGroupResourcesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListGroupResourcesInput"}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *ListGroupResourcesInput) SetFilters(v []*ResourceFilter) *ListGroupResourcesInput {
	s.Filters = v
	return s
}

// SetGroup sets the Group field's value.
func (s *ListGroupResourcesInput) SetGroup(v string) *ListGroupResourcesInput {
	s.Group = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *ListGroupResourcesInput) SetGroupName(v string) *ListGroupResourcesInput {
	s.GroupName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListGroupResourcesInput) SetMaxResults(v int64) *ListGroupResourcesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListGroupResourcesInput) SetNextToken(v string) *ListGroupResourcesInput {
	s.NextToken = &v
	return s
}

// A structure returned by the ListGroupResources operation that contains identity
// and group membership status information for one of the resources in the group.
type ListGroupResourcesItem struct {
	_ struct{} `type:"structure"`

	// A structure that contains the ARN of a resource and its resource type.
	Identifier *ResourceIdentifier `type:"structure"`

	// A structure that contains the status of this resource's membership in the
	// group.
	//
	// This field is present in the response only if the group is of type AWS::EC2::HostManagement.
	Status *ResourceStatus `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupResourcesItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupResourcesItem) GoString() string {
	return s.String()
}

// SetIdentifier sets the Identifier field's value.
func (s *ListGroupResourcesItem) SetIdentifier(v *ResourceIdentifier) *ListGroupResourcesItem {
	s.Identifier = v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListGroupResourcesItem) SetStatus(v *ResourceStatus) *ListGroupResourcesItem {
	s.Status = v
	return s
}

type ListGroupResourcesOutput struct {
	_ struct{} `type:"structure"`

	// If present, indicates that more output is available than is included in the
	// current response. Use this value in the NextToken request parameter in a
	// subsequent call to the operation to get the next part of the output. You
	// should repeat this until the NextToken response element comes back as null.
	NextToken *string `type:"string"`

	// A list of QueryError objects. Each error is an object that contains ErrorCode
	// and Message structures. Possible values for ErrorCode are CLOUDFORMATION_STACK_INACTIVE
	// and CLOUDFORMATION_STACK_NOT_EXISTING.
	QueryErrors []*QueryError `type:"list"`

	//
	//  Deprecated - don't use this parameter. Use the Resources response field
	//  instead.
	//
	// Deprecated: This field is deprecated, use Resources instead.
	ResourceIdentifiers []*ResourceIdentifier `deprecated:"true" type:"list"`

	// An array of resources from which you can determine each resource's identity,
	// type, and group membership status.
	Resources []*ListGroupResourcesItem `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupResourcesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupResourcesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListGroupResourcesOutput) SetNextToken(v string) *ListGroupResourcesOutput {
	s.NextToken = &v
	return s
}

// SetQueryErrors sets the QueryErrors field's value.
func (s *ListGroupResourcesOutput) SetQueryErrors(v []*QueryError) *ListGroupResourcesOutput {
	s.QueryErrors = v
	return s
}

// SetResourceIdentifiers sets the ResourceIdentifiers field's value.
func (s *ListGroupResourcesOutput) SetResourceIdentifiers(v []*ResourceIdentifier) *ListGroupResourcesOutput {
	s.ResourceIdentifiers = v
	return s
}

// SetResources sets the Resources field's value.
func (s *ListGroupResourcesOutput) SetResources(v []*ListGroupResourcesItem) *ListGroupResourcesOutput {
	s.Resources = v
	return s
}

type ListGroupsInput struct {
	_ struct{} `type:"structure"`

	// Filters, formatted as GroupFilter objects, that you want to apply to a ListGroups
	// operation.
	//
	//    * resource-type - Filter the results to include only those of the specified
	//    resource types. Specify up to five resource types in the format AWS::ServiceCode::ResourceType
	//    . For example, AWS::EC2::Instance, or AWS::S3::Bucket.
	//
	//    * configuration-type - Filter the results to include only those groups
	//    that have the specified configuration types attached. The current supported
	//    values are: AWS::EC2::CapacityReservationPool AWS::EC2::HostManagement
	Filters []*GroupFilter `type:"list"`

	// The total number of results that you want included on each page of the response.
	// If you do not include this parameter, it defaults to a value that is specific
	// to the operation. If additional items exist beyond the maximum you specify,
	// the NextToken response element is present and has a value (is not null).
	// Include that value as the NextToken request parameter in the next call to
	// the operation to get the next part of the results. Note that the service
	// might return fewer results than the maximum even when there are more results
	// available. You should check NextToken after every operation to ensure that
	// you receive all of the results.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The parameter for receiving additional results if you receive a NextToken
	// response in a previous request. A NextToken response indicates that more
	// output is available. Set this parameter to the value provided by a previous
	// call's NextToken response to indicate where the output should continue from.
	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListGroupsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *ListGroupsInput) SetFilters(v []*GroupFilter) *ListGroupsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListGroupsInput) SetMaxResults(v int64) *ListGroupsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListGroupsInput) SetNextToken(v string) *ListGroupsInput {
	s.NextToken = &v
	return s
}

type ListGroupsOutput struct {
	_ struct{} `type:"structure"`

	// A list of GroupIdentifier objects. Each identifier is an object that contains
	// both the Name and the GroupArn.
	GroupIdentifiers []*GroupIdentifier `type:"list"`

	//
	//  Deprecated - don't use this field. Use the GroupIdentifiers response field
	//  instead.
	//
	// Deprecated: This field is deprecated, use GroupIdentifiers instead.
	Groups []*Group `deprecated:"true" type:"list"`

	// If present, indicates that more output is available than is included in the
	// current response. Use this value in the NextToken request parameter in a
	// subsequent call to the operation to get the next part of the output. You
	// should repeat this until the NextToken response element comes back as null.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupsOutput) GoString() string {
	return s.String()
}

// SetGroupIdentifiers sets the GroupIdentifiers field's value.
func (s *ListGroupsOutput) SetGroupIdentifiers(v []*GroupIdentifier) *ListGroupsOutput {
	s.GroupIdentifiers = v
	return s
}

// SetGroups sets the Groups field's value.
func (s *ListGroupsOutput) SetGroups(v []*Group) *ListGroupsOutput {
	s.Groups = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListGroupsOutput) SetNextToken(v string) *ListGroupsOutput {
	s.NextToken = &v
	return s
}

// The request uses an HTTP method that isn't allowed for the specified resource.
type MethodNotAllowedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MethodNotAllowedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MethodNotAllowedException) GoString() string {
	return s.String()
}

func newErrorMethodNotAllowedException(v protocol.ResponseMetadata) error {
	return &MethodNotAllowedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *MethodNotAllowedException) Code() string {
	return "MethodNotAllowedException"
}

// Message returns the exception's message.
func (s *MethodNotAllowedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *MethodNotAllowedException) OrigErr() error {
	return nil
}

func (s *MethodNotAllowedException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *MethodNotAllowedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *MethodNotAllowedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// One or more of the specified resources don't exist.
type NotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotFoundException) GoString() string {
	return s.String()
}

func newErrorNotFoundException(v protocol.ResponseMetadata) error {
	return &NotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *NotFoundException) Code() string {
	return "NotFoundException"
}

// Message returns the exception's message.
func (s *NotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *NotFoundException) OrigErr() error {
	return nil
}

func (s *NotFoundException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *NotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *NotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A structure that identifies a resource that is currently pending addition
// to the group as a member. Adding a resource to a resource group happens asynchronously
// as a background task and this one isn't completed yet.
type PendingResource struct {
	_ struct{} `type:"structure"`

	// The Amazon resource name (ARN) of the resource that's in a pending state.
	ResourceArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PendingResource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PendingResource) GoString() string {
	return s.String()
}

// SetResourceArn sets the ResourceArn field's value.
func (s *PendingResource) SetResourceArn(v string) *PendingResource {
	s.ResourceArn = &v
	return s
}

type PutGroupConfigurationInput struct {
	_ struct{} `type:"structure"`

	// The new configuration to associate with the specified group. 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 information about the syntax of a service configuration, see Service
	// configurations for Resource Groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
	//
	// A resource group can contain either a Configuration or a ResourceQuery, but
	// not both.
	Configuration []*GroupConfigurationItem `type:"list"`

	// The name or ARN of the resource group with the configuration that you want
	// to update.
	Group *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutGroupConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutGroupConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutGroupConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutGroupConfigurationInput"}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}
	if s.Configuration != nil {
		for i, v := range s.Configuration {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Configuration", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfiguration sets the Configuration field's value.
func (s *PutGroupConfigurationInput) SetConfiguration(v []*GroupConfigurationItem) *PutGroupConfigurationInput {
	s.Configuration = v
	return s
}

// SetGroup sets the Group field's value.
func (s *PutGroupConfigurationInput) SetGroup(v string) *PutGroupConfigurationInput {
	s.Group = &v
	return s
}

type PutGroupConfigurationOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutGroupConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutGroupConfigurationOutput) GoString() string {
	return s.String()
}

// A two-part error structure that can occur in ListGroupResources or SearchResources
// operations on CloudFront stack-based queries. The error occurs if the CloudFront
// stack on which the query is based either does not exist, or has a status
// that renders the stack inactive. A QueryError occurrence does not necessarily
// mean that Resource Groups could not complete the operation, but the resulting
// group might have no member resources.
type QueryError struct {
	_ struct{} `type:"structure"`

	// Specifies the error code that was raised.
	ErrorCode *string `type:"string" enum:"QueryErrorCode"`

	// A message that explains the ErrorCode value. Messages might state that the
	// specified CloudFront stack does not exist (or no longer exists). For CLOUDFORMATION_STACK_INACTIVE,
	// the message typically states that the CloudFront stack has a status that
	// is not (or no longer) active, such as CREATE_FAILED.
	Message *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueryError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueryError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *QueryError) SetErrorCode(v string) *QueryError {
	s.ErrorCode = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *QueryError) SetMessage(v string) *QueryError {
	s.Message = &v
	return s
}

// A filter name and value pair that is used to obtain more specific results
// from a list of resources.
type ResourceFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter. Filter names are case-sensitive.
	//
	// Name is a required field
	Name *string `type:"string" required:"true" enum:"ResourceFilterName"`

	// One or more filter values. Allowed filter values vary by resource filter
	// name, and are case-sensitive.
	//
	// Values is a required field
	Values []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResourceFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResourceFilter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	if s.Values != nil && len(s.Values) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *ResourceFilter) SetName(v string) *ResourceFilter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *ResourceFilter) SetValues(v []*string) *ResourceFilter {
	s.Values = v
	return s
}

// A structure that contains the ARN of a resource and its resource type.
type ResourceIdentifier struct {
	_ struct{} `type:"structure"`

	// The ARN of a resource.
	ResourceArn *string `type:"string"`

	// The resource type of a resource, such as AWS::EC2::Instance.
	ResourceType *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceIdentifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceIdentifier) GoString() string {
	return s.String()
}

// SetResourceArn sets the ResourceArn field's value.
func (s *ResourceIdentifier) SetResourceArn(v string) *ResourceIdentifier {
	s.ResourceArn = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *ResourceIdentifier) SetResourceType(v string) *ResourceIdentifier {
	s.ResourceType = &v
	return s
}

// The query you can use to define a resource group or a search for resources.
// A ResourceQuery specifies both a query Type and a Query string as JSON string
// objects. See the examples section for example JSON strings. For more information
// about creating a resource group with a resource query, see Build queries
// and groups in Resource Groups (https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html)
// in the Resource Groups User Guide
//
// When you combine all of the elements together into a single string, any double
// quotes that are embedded inside another double quote pair must be escaped
// by preceding the embedded double quote with a backslash character (\). For
// example, a complete ResourceQuery parameter must be formatted like the following
// CLI parameter example:
//
// --resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"}'
//
// In the preceding example, all of the double quote characters in the value
// part of the Query element must be escaped because the value itself is surrounded
// by double quotes. For more information, see Quoting strings (https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html)
// in the Command Line Interface User Guide.
//
// For the complete list of resource types that you can use in the array value
// for ResourceTypeFilters, see Resources you can use with Resource Groups and
// Tag Editor (https://docs.aws.amazon.com/ARG/latest/userguide/supported-resources.html)
// in the Resource Groups User Guide. For example:
//
// "ResourceTypeFilters":["AWS::S3::Bucket", "AWS::EC2::Instance"]
type ResourceQuery struct {
	_ struct{} `type:"structure"`

	// The query that defines a group or a search. The contents depends on the value
	// of the Type element.
	//
	//    * ResourceTypeFilters – Applies to all ResourceQuery objects of either
	//    Type. This element contains one of the following two items: The value
	//    AWS::AllSupported. This causes the ResourceQuery to match resources of
	//    any resource type that also match the query. A list (a JSON array) of
	//    resource type identifiers that limit the query to only resources of the
	//    specified types. For the complete list of resource types that you can
	//    use in the array value for ResourceTypeFilters, see Resources you can
	//    use with Resource Groups and Tag Editor (https://docs.aws.amazon.com/ARG/latest/userguide/supported-resources.html)
	//    in the Resource Groups User Guide. Example: "ResourceTypeFilters": ["AWS::AllSupported"]
	//    or "ResourceTypeFilters": ["AWS::EC2::Instance", "AWS::S3::Bucket"]
	//
	//    * TagFilters – applicable only if Type = TAG_FILTERS_1_0. The Query
	//    contains a JSON string that represents a collection of simple tag filters.
	//    The JSON string uses a syntax similar to the GetResources (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html)
	//    operation, but uses only the ResourceTypeFilters (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html#resourcegrouptagging-GetResources-request-ResourceTypeFilters)
	//    and TagFilters (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html#resourcegrouptagging-GetResources-request-TagFiltersTagFilters)
	//    fields. If you specify more than one tag key, only resources that match
	//    all tag keys, and at least one value of each specified tag key, are returned
	//    in your query. If you specify more than one value for a tag key, a resource
	//    matches the filter if it has a tag key value that matches any of the specified
	//    values. For example, consider the following sample query for resources
	//    that have two tags, Stage and Version, with two values each: [{"Stage":["Test","Deploy"]},{"Version":["1","2"]}]
	//    The results of this resource query could include the following. An Amazon
	//    EC2 instance that has the following two tags: {"Stage":"Deploy"}, and
	//    {"Version":"2"} An S3 bucket that has the following two tags: {"Stage":"Test"},
	//    and {"Version":"1"} The resource query results would not include the following
	//    items in the results, however. An Amazon EC2 instance that has only the
	//    following tag: {"Stage":"Deploy"}. The instance does not have all of the
	//    tag keys specified in the filter, so it is excluded from the results.
	//    An RDS database that has the following two tags: {"Stage":"Archived"}
	//    and {"Version":"4"} The database has all of the tag keys, but none of
	//    those keys has an associated value that matches at least one of the specified
	//    values in the filter. Example: "TagFilters": [ { "Key": "Stage", "Values":
	//    [ "Gamma", "Beta" ] }
	//
	//    * StackIdentifier – applicable only if Type = CLOUDFORMATION_STACK_1_0.
	//    The value of this parameter is the Amazon Resource Name (ARN) of the CloudFormation
	//    stack whose resources you want included in the group.
	//
	// Query is a required field
	Query *string `type:"string" required:"true"`

	// The type of the query to perform. This can have one of two values:
	//
	//    * CLOUDFORMATION_STACK_1_0: Specifies that you want the group to contain
	//    the members of an CloudFormation stack. The Query contains a StackIdentifier
	//    element with an ARN for a CloudFormation stack.
	//
	//    * TAG_FILTERS_1_0: Specifies that you want the group to include resource
	//    that have tags that match the query.
	//
	// Type is a required field
	Type *string `min:"1" type:"string" required:"true" enum:"QueryType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceQuery) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceQuery) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResourceQuery) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResourceQuery"}
	if s.Query == nil {
		invalidParams.Add(request.NewErrParamRequired("Query"))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Type != nil && len(*s.Type) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Type", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetQuery sets the Query field's value.
func (s *ResourceQuery) SetQuery(v string) *ResourceQuery {
	s.Query = &v
	return s
}

// SetType sets the Type field's value.
func (s *ResourceQuery) SetType(v string) *ResourceQuery {
	s.Type = &v
	return s
}

// A structure that identifies the current group membership status for a resource.
// Adding a resource to a resource group is performed asynchronously as a background
// task. A PENDING status indicates, for this resource, that the process isn't
// completed yet.
type ResourceStatus struct {
	_ struct{} `type:"structure"`

	// The current status.
	Name *string `type:"string" enum:"ResourceStatusValue"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceStatus) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *ResourceStatus) SetName(v string) *ResourceStatus {
	s.Name = &v
	return s
}

type SearchResourcesInput struct {
	_ struct{} `type:"structure"`

	// The total number of results that you want included on each page of the response.
	// If you do not include this parameter, it defaults to a value that is specific
	// to the operation. If additional items exist beyond the maximum you specify,
	// the NextToken response element is present and has a value (is not null).
	// Include that value as the NextToken request parameter in the next call to
	// the operation to get the next part of the results. Note that the service
	// might return fewer results than the maximum even when there are more results
	// available. You should check NextToken after every operation to ensure that
	// you receive all of the results.
	MaxResults *int64 `min:"1" type:"integer"`

	// The parameter for receiving additional results if you receive a NextToken
	// response in a previous request. A NextToken response indicates that more
	// output is available. Set this parameter to the value provided by a previous
	// call's NextToken response to indicate where the output should continue from.
	NextToken *string `type:"string"`

	// The search query, using the same formats that are supported for resource
	// group definition. For more information, see CreateGroup.
	//
	// ResourceQuery is a required field
	ResourceQuery *ResourceQuery `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchResourcesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchResourcesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.ResourceQuery == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceQuery"))
	}
	if s.ResourceQuery != nil {
		if err := s.ResourceQuery.Validate(); err != nil {
			invalidParams.AddNested("ResourceQuery", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchResourcesInput) SetMaxResults(v int64) *SearchResourcesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchResourcesInput) SetNextToken(v string) *SearchResourcesInput {
	s.NextToken = &v
	return s
}

// SetResourceQuery sets the ResourceQuery field's value.
func (s *SearchResourcesInput) SetResourceQuery(v *ResourceQuery) *SearchResourcesInput {
	s.ResourceQuery = v
	return s
}

type SearchResourcesOutput struct {
	_ struct{} `type:"structure"`

	// If present, indicates that more output is available than is included in the
	// current response. Use this value in the NextToken request parameter in a
	// subsequent call to the operation to get the next part of the output. You
	// should repeat this until the NextToken response element comes back as null.
	NextToken *string `type:"string"`

	// A list of QueryError objects. Each error is an object that contains ErrorCode
	// and Message structures.
	//
	// Possible values for ErrorCode:
	//
	//    * CLOUDFORMATION_STACK_INACTIVE
	//
	//    * CLOUDFORMATION_STACK_NOT_EXISTING
	QueryErrors []*QueryError `type:"list"`

	// The ARNs and resource types of resources that are members of the group that
	// you specified.
	ResourceIdentifiers []*ResourceIdentifier `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResourcesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *SearchResourcesOutput) SetNextToken(v string) *SearchResourcesOutput {
	s.NextToken = &v
	return s
}

// SetQueryErrors sets the QueryErrors field's value.
func (s *SearchResourcesOutput) SetQueryErrors(v []*QueryError) *SearchResourcesOutput {
	s.QueryErrors = v
	return s
}

// SetResourceIdentifiers sets the ResourceIdentifiers field's value.
func (s *SearchResourcesOutput) SetResourceIdentifiers(v []*ResourceIdentifier) *SearchResourcesOutput {
	s.ResourceIdentifiers = v
	return s
}

type TagInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource group to which to add tags.
	//
	// Arn is a required field
	Arn *string `location:"uri" locationName:"Arn" min:"12" type:"string" required:"true"`

	// The tags to add to the specified resource group. A tag is a string-to-string
	// map of key-value pairs.
	//
	// Tags is a required field
	Tags map[string]*string `type:"map" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagInput"}
	if s.Arn == nil {
		invalidParams.Add(request.NewErrParamRequired("Arn"))
	}
	if s.Arn != nil && len(*s.Arn) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("Arn", 12))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *TagInput) SetArn(v string) *TagInput {
	s.Arn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagInput) SetTags(v map[string]*string) *TagInput {
	s.Tags = v
	return s
}

type TagOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the tagged resource.
	Arn *string `min:"12" type:"string"`

	// The tags that have been added to the specified resource group.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *TagOutput) SetArn(v string) *TagOutput {
	s.Arn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagOutput) SetTags(v map[string]*string) *TagOutput {
	s.Tags = v
	return s
}

// You've exceeded throttling limits by making too many requests in a period
// of time.
type TooManyRequestsException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TooManyRequestsException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TooManyRequestsException) GoString() string {
	return s.String()
}

func newErrorTooManyRequestsException(v protocol.ResponseMetadata) error {
	return &TooManyRequestsException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *TooManyRequestsException) Code() string {
	return "TooManyRequestsException"
}

// Message returns the exception's message.
func (s *TooManyRequestsException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *TooManyRequestsException) OrigErr() error {
	return nil
}

func (s *TooManyRequestsException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *TooManyRequestsException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *TooManyRequestsException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The request was rejected because it doesn't have valid credentials for the
// target resource.
type UnauthorizedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnauthorizedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnauthorizedException) GoString() string {
	return s.String()
}

func newErrorUnauthorizedException(v protocol.ResponseMetadata) error {
	return &UnauthorizedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *UnauthorizedException) Code() string {
	return "UnauthorizedException"
}

// Message returns the exception's message.
func (s *UnauthorizedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *UnauthorizedException) OrigErr() error {
	return nil
}

func (s *UnauthorizedException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *UnauthorizedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *UnauthorizedException) RequestID() string {
	return s.RespMetadata.RequestID
}

type UngroupResourcesInput struct {
	_ struct{} `type:"structure"`

	// The name or the ARN of the resource group from which to remove the resources.
	//
	// Group is a required field
	Group *string `min:"1" type:"string" required:"true"`

	// The ARNs of the resources to be removed from the group.
	//
	// ResourceArns is a required field
	ResourceArns []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UngroupResourcesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UngroupResourcesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UngroupResourcesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UngroupResourcesInput"}
	if s.Group == nil {
		invalidParams.Add(request.NewErrParamRequired("Group"))
	}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}
	if s.ResourceArns == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
	}
	if s.ResourceArns != nil && len(s.ResourceArns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArns", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGroup sets the Group field's value.
func (s *UngroupResourcesInput) SetGroup(v string) *UngroupResourcesInput {
	s.Group = &v
	return s
}

// SetResourceArns sets the ResourceArns field's value.
func (s *UngroupResourcesInput) SetResourceArns(v []*string) *UngroupResourcesInput {
	s.ResourceArns = v
	return s
}

type UngroupResourcesOutput struct {
	_ struct{} `type:"structure"`

	// A list of any resources that failed to be removed from the group by this
	// operation.
	Failed []*FailedResource `type:"list"`

	// A list of any resources that are still in the process of being removed from
	// the group by this operation. These pending removals continue asynchronously.
	// You can check the status of pending removals by using the ListGroupResources
	// operation. After the resource is successfully removed, it no longer appears
	// in the response.
	Pending []*PendingResource `type:"list"`

	// A list of resources that were successfully removed from the group by this
	// operation.
	Succeeded []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UngroupResourcesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UngroupResourcesOutput) GoString() string {
	return s.String()
}

// SetFailed sets the Failed field's value.
func (s *UngroupResourcesOutput) SetFailed(v []*FailedResource) *UngroupResourcesOutput {
	s.Failed = v
	return s
}

// SetPending sets the Pending field's value.
func (s *UngroupResourcesOutput) SetPending(v []*PendingResource) *UngroupResourcesOutput {
	s.Pending = v
	return s
}

// SetSucceeded sets the Succeeded field's value.
func (s *UngroupResourcesOutput) SetSucceeded(v []*string) *UngroupResourcesOutput {
	s.Succeeded = v
	return s
}

type UntagInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource group from which to remove tags. The command removed
	// both the specified keys and any values associated with those keys.
	//
	// Arn is a required field
	Arn *string `location:"uri" locationName:"Arn" min:"12" type:"string" required:"true"`

	// The keys of the tags to be removed.
	//
	// Keys is a required field
	Keys []*string `type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagInput"}
	if s.Arn == nil {
		invalidParams.Add(request.NewErrParamRequired("Arn"))
	}
	if s.Arn != nil && len(*s.Arn) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("Arn", 12))
	}
	if s.Keys == nil {
		invalidParams.Add(request.NewErrParamRequired("Keys"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *UntagInput) SetArn(v string) *UntagInput {
	s.Arn = &v
	return s
}

// SetKeys sets the Keys field's value.
func (s *UntagInput) SetKeys(v []*string) *UntagInput {
	s.Keys = v
	return s
}

type UntagOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource group from which tags have been removed.
	Arn *string `min:"12" type:"string"`

	// The keys of the tags that were removed.
	Keys []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UntagOutput) SetArn(v string) *UntagOutput {
	s.Arn = &v
	return s
}

// SetKeys sets the Keys field's value.
func (s *UntagOutput) SetKeys(v []*string) *UntagOutput {
	s.Keys = v
	return s
}

type UpdateAccountSettingsInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether you want to turn group lifecycle events (https://docs.aws.amazon.com/ARG/latest/userguide/monitor-groups.html)
	// on or off.
	GroupLifecycleEventsDesiredStatus *string `type:"string" enum:"GroupLifecycleEventsDesiredStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccountSettingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccountSettingsInput) GoString() string {
	return s.String()
}

// SetGroupLifecycleEventsDesiredStatus sets the GroupLifecycleEventsDesiredStatus field's value.
func (s *UpdateAccountSettingsInput) SetGroupLifecycleEventsDesiredStatus(v string) *UpdateAccountSettingsInput {
	s.GroupLifecycleEventsDesiredStatus = &v
	return s
}

type UpdateAccountSettingsOutput struct {
	_ struct{} `type:"structure"`

	// A structure that displays the status of the optional features in the account.
	AccountSettings *AccountSettings `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccountSettingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccountSettingsOutput) GoString() string {
	return s.String()
}

// SetAccountSettings sets the AccountSettings field's value.
func (s *UpdateAccountSettingsOutput) SetAccountSettings(v *AccountSettings) *UpdateAccountSettingsOutput {
	s.AccountSettings = v
	return s
}

type UpdateGroupInput struct {
	_ struct{} `type:"structure"`

	// The new description that you want to update the resource group with. Descriptions
	// can contain letters, numbers, hyphens, underscores, periods, and spaces.
	Description *string `type:"string"`

	// The name or the ARN of the resource group to modify.
	Group *string `min:"1" type:"string"`

	// Don't use this parameter. Use Group instead.
	//
	// Deprecated: This field is deprecated, use Group instead.
	GroupName *string `min:"1" deprecated:"true" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateGroupInput"}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateGroupInput) SetDescription(v string) *UpdateGroupInput {
	s.Description = &v
	return s
}

// SetGroup sets the Group field's value.
func (s *UpdateGroupInput) SetGroup(v string) *UpdateGroupInput {
	s.Group = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *UpdateGroupInput) SetGroupName(v string) *UpdateGroupInput {
	s.GroupName = &v
	return s
}

type UpdateGroupOutput struct {
	_ struct{} `type:"structure"`

	// The update description of the resource group.
	Group *Group `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupOutput) GoString() string {
	return s.String()
}

// SetGroup sets the Group field's value.
func (s *UpdateGroupOutput) SetGroup(v *Group) *UpdateGroupOutput {
	s.Group = v
	return s
}

type UpdateGroupQueryInput struct {
	_ struct{} `type:"structure"`

	// The name or the ARN of the resource group to query.
	Group *string `min:"1" type:"string"`

	// Don't use this parameter. Use Group instead.
	//
	// Deprecated: This field is deprecated, use Group instead.
	GroupName *string `min:"1" deprecated:"true" type:"string"`

	// The resource query to determine which Amazon Web Services resources are members
	// of this resource group.
	//
	// A resource group can contain either a Configuration or a ResourceQuery, but
	// not both.
	//
	// ResourceQuery is a required field
	ResourceQuery *ResourceQuery `type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupQueryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupQueryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateGroupQueryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateGroupQueryInput"}
	if s.Group != nil && len(*s.Group) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}
	if s.ResourceQuery == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceQuery"))
	}
	if s.ResourceQuery != nil {
		if err := s.ResourceQuery.Validate(); err != nil {
			invalidParams.AddNested("ResourceQuery", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGroup sets the Group field's value.
func (s *UpdateGroupQueryInput) SetGroup(v string) *UpdateGroupQueryInput {
	s.Group = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *UpdateGroupQueryInput) SetGroupName(v string) *UpdateGroupQueryInput {
	s.GroupName = &v
	return s
}

// SetResourceQuery sets the ResourceQuery field's value.
func (s *UpdateGroupQueryInput) SetResourceQuery(v *ResourceQuery) *UpdateGroupQueryInput {
	s.ResourceQuery = v
	return s
}

type UpdateGroupQueryOutput struct {
	_ struct{} `type:"structure"`

	// The updated resource query associated with the resource group after the update.
	GroupQuery *GroupQuery `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupQueryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupQueryOutput) GoString() string {
	return s.String()
}

// SetGroupQuery sets the GroupQuery field's value.
func (s *UpdateGroupQueryOutput) SetGroupQuery(v *GroupQuery) *UpdateGroupQueryOutput {
	s.GroupQuery = v
	return s
}

const (
	// GroupConfigurationStatusUpdating is a GroupConfigurationStatus enum value
	GroupConfigurationStatusUpdating = "UPDATING"

	// GroupConfigurationStatusUpdateComplete is a GroupConfigurationStatus enum value
	GroupConfigurationStatusUpdateComplete = "UPDATE_COMPLETE"

	// GroupConfigurationStatusUpdateFailed is a GroupConfigurationStatus enum value
	GroupConfigurationStatusUpdateFailed = "UPDATE_FAILED"
)

// GroupConfigurationStatus_Values returns all elements of the GroupConfigurationStatus enum
func GroupConfigurationStatus_Values() []string {
	return []string{
		GroupConfigurationStatusUpdating,
		GroupConfigurationStatusUpdateComplete,
		GroupConfigurationStatusUpdateFailed,
	}
}

const (
	// GroupFilterNameResourceType is a GroupFilterName enum value
	GroupFilterNameResourceType = "resource-type"

	// GroupFilterNameConfigurationType is a GroupFilterName enum value
	GroupFilterNameConfigurationType = "configuration-type"
)

// GroupFilterName_Values returns all elements of the GroupFilterName enum
func GroupFilterName_Values() []string {
	return []string{
		GroupFilterNameResourceType,
		GroupFilterNameConfigurationType,
	}
}

const (
	// GroupLifecycleEventsDesiredStatusActive is a GroupLifecycleEventsDesiredStatus enum value
	GroupLifecycleEventsDesiredStatusActive = "ACTIVE"

	// GroupLifecycleEventsDesiredStatusInactive is a GroupLifecycleEventsDesiredStatus enum value
	GroupLifecycleEventsDesiredStatusInactive = "INACTIVE"
)

// GroupLifecycleEventsDesiredStatus_Values returns all elements of the GroupLifecycleEventsDesiredStatus enum
func GroupLifecycleEventsDesiredStatus_Values() []string {
	return []string{
		GroupLifecycleEventsDesiredStatusActive,
		GroupLifecycleEventsDesiredStatusInactive,
	}
}

const (
	// GroupLifecycleEventsStatusActive is a GroupLifecycleEventsStatus enum value
	GroupLifecycleEventsStatusActive = "ACTIVE"

	// GroupLifecycleEventsStatusInactive is a GroupLifecycleEventsStatus enum value
	GroupLifecycleEventsStatusInactive = "INACTIVE"

	// GroupLifecycleEventsStatusInProgress is a GroupLifecycleEventsStatus enum value
	GroupLifecycleEventsStatusInProgress = "IN_PROGRESS"

	// GroupLifecycleEventsStatusError is a GroupLifecycleEventsStatus enum value
	GroupLifecycleEventsStatusError = "ERROR"
)

// GroupLifecycleEventsStatus_Values returns all elements of the GroupLifecycleEventsStatus enum
func GroupLifecycleEventsStatus_Values() []string {
	return []string{
		GroupLifecycleEventsStatusActive,
		GroupLifecycleEventsStatusInactive,
		GroupLifecycleEventsStatusInProgress,
		GroupLifecycleEventsStatusError,
	}
}

const (
	// QueryErrorCodeCloudformationStackInactive is a QueryErrorCode enum value
	QueryErrorCodeCloudformationStackInactive = "CLOUDFORMATION_STACK_INACTIVE"

	// QueryErrorCodeCloudformationStackNotExisting is a QueryErrorCode enum value
	QueryErrorCodeCloudformationStackNotExisting = "CLOUDFORMATION_STACK_NOT_EXISTING"

	// QueryErrorCodeCloudformationStackUnassumableRole is a QueryErrorCode enum value
	QueryErrorCodeCloudformationStackUnassumableRole = "CLOUDFORMATION_STACK_UNASSUMABLE_ROLE"
)

// QueryErrorCode_Values returns all elements of the QueryErrorCode enum
func QueryErrorCode_Values() []string {
	return []string{
		QueryErrorCodeCloudformationStackInactive,
		QueryErrorCodeCloudformationStackNotExisting,
		QueryErrorCodeCloudformationStackUnassumableRole,
	}
}

const (
	// QueryTypeTagFilters10 is a QueryType enum value
	QueryTypeTagFilters10 = "TAG_FILTERS_1_0"

	// QueryTypeCloudformationStack10 is a QueryType enum value
	QueryTypeCloudformationStack10 = "CLOUDFORMATION_STACK_1_0"
)

// QueryType_Values returns all elements of the QueryType enum
func QueryType_Values() []string {
	return []string{
		QueryTypeTagFilters10,
		QueryTypeCloudformationStack10,
	}
}

const (
	// ResourceFilterNameResourceType is a ResourceFilterName enum value
	ResourceFilterNameResourceType = "resource-type"
)

// ResourceFilterName_Values returns all elements of the ResourceFilterName enum
func ResourceFilterName_Values() []string {
	return []string{
		ResourceFilterNameResourceType,
	}
}

const (
	// ResourceStatusValuePending is a ResourceStatusValue enum value
	ResourceStatusValuePending = "PENDING"
)

// ResourceStatusValue_Values returns all elements of the ResourceStatusValue enum
func ResourceStatusValue_Values() []string {
	return []string{
		ResourceStatusValuePending,
	}
}
© 2026 GrazzMean
Beegazpacho


Let’s  Start  Your  Online  Journey  with  Beegazpacho 

Welcome to Beegazpacho,
where creativity meets strategy,
and innovation drives success.


Contact
Now


OUR CLIENTS

WhatsApp-Image-2021-12-06.png
Untitled-design-11.png
niaf-logo.png
20220406-163308-scaled.jpg
karchi-logo.png
20220405-171252.png
20220405-171309.png
20220321-161603.png
20220321-161611.png
20220321-161628.png
20220321-161244.png
20220321-161256.png
20220321-161450.png
20220321-161205.png
20220226-170222.png
20220321-161051.png
20211202-170852.png
Untitled-design-9
pidilite-png-logo-colour
logo-black-e1706125740216-qisosldqhzgcaerhdt6n4t3m4s50jr0iik48z0h5vk
Fraikin-Dayim-logo-1
hpcl-logo-2-1
services

Transforming Ideas into
Success

.01
Digital Marketing

We drive growth through data-driven strategies and cutting-edge techniques.

Learn More

.02
SEO

Improve your online visibility and rank higher on search engines with our expert SEO services.

Learn More

.03
Website Designing

We design websites that are not only visually stunning but also user-centric, ensuring seamless navigation and enhanced user experience.

Learn More

.04
App Development

Our apps are crafted to be intuitive, engaging, and functional, providing your users with an exceptional mobile experience.

Learn More

.05
Social Media Ads

Target the right audience with precision and creativity to maximize engagement and conversions.

Learn More

.06
Google Ads

Maximize ROI with precision-targeted campaigns on Google’s powerful ad platform.

Learn More

.07
Google My Business

Optimize your local presence with strategies that put your business on the map and attract more customers.

Learn More

.08
Graphic Designing

Our designs tell your brand’s story in a visually compelling way.

Learn More

.09
3D Videos

Bring your product to life with immersive and dynamic 3D explainer videos.

Learn More

about BEEGAZPACHO

creating special Things
For special brands

Join the ranks of successful brands by partnering with Beegazpacho

00+

Happy Customer

00+

Continents

Our vision is not just to be a service provider but to be your partner in growth. We see ourselves as an extension of your team, working tirelessly to ensure that your brand not only meets its goals but surpasses them.

Explore
more

Our Recent Work

Crafted with Passion and Precision

Connect now


Web Design
Design, Development & Identity

Logo Design
Design, Development & Identity

Creative Brand design
Design, Development & Identity

Product Design Marketing
Design, Development & Identity

DIGITAL MARKETING
SEO
WEBSITE DESIGNING
APP DEVELOPMENT
SOCIAL MEDIA ADS
GOOGLE ADS
GOOGLE MY BUSINESS
GRAPHIC DESINING
3D VIDEOS
Client Stories

Hear It from Those Who Know Us Best

Our clients’ success stories speak volumes about our commitment to excellence. Don’t just take our word for it—hear directly from the brands we’ve partnered with. Their testimonials highlight our ability to bring visions to life and create a lasting impact on their businesses.

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors